ident: do not ignore empty config name/email
When we read user.name and user.email from a config file, they go into strbufs. When a caller asks ident_default_name() for the value, we fallback to auto-detecting if the strbuf is empty. That means that explicitly setting an empty string in the config is identical to not setting it at all. This is potentially confusing, as we usually accept a configured value as the final value. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
13b9a24e58
commit
94425552f3
4
ident.c
4
ident.c
@ -153,7 +153,7 @@ static void copy_email(const struct passwd *pw, struct strbuf *email,
|
||||
|
||||
const char *ident_default_name(void)
|
||||
{
|
||||
if (!git_default_name.len) {
|
||||
if (!(ident_config_given & IDENT_NAME_GIVEN) && !git_default_name.len) {
|
||||
copy_gecos(xgetpwuid_self(&default_name_is_bogus), &git_default_name);
|
||||
strbuf_trim(&git_default_name);
|
||||
}
|
||||
@ -162,7 +162,7 @@ const char *ident_default_name(void)
|
||||
|
||||
const char *ident_default_email(void)
|
||||
{
|
||||
if (!git_default_email.len) {
|
||||
if (!(ident_config_given & IDENT_MAIL_GIVEN) && !git_default_email.len) {
|
||||
const char *email = getenv("EMAIL");
|
||||
|
||||
if (email && email[0]) {
|
||||
|
@ -22,4 +22,15 @@ test_expect_success 'commit rejects all-crud name' '
|
||||
git commit --allow-empty -m foo
|
||||
'
|
||||
|
||||
# We must test the actual error message here, as an unwanted
|
||||
# auto-detection could fail for other reasons.
|
||||
test_expect_success 'empty configured name does not auto-detect' '
|
||||
(
|
||||
sane_unset GIT_AUTHOR_NAME &&
|
||||
test_must_fail \
|
||||
git -c user.name= commit --allow-empty -m foo 2>err &&
|
||||
test_i18ngrep "empty ident name" err
|
||||
)
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user