From 91c38a21089c4b30d35f392386c752a017ac6db0 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 8 Jan 2010 07:39:11 -0800 Subject: ident.c: check explicit identity for name and email separately MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bb1ae3f (commit: Show committer if automatic, 2008-05-04) added a logic to check both name and email were given explicitly by the end user, but it assumed that fmt_ident() is never called before git_default_user_config() is called, which was fragile. The former calls setup_ident() and fills the "default" name and email, so the check in the config parser would have mistakenly said both are given even if only user.name was provided. Make the logic more robust by keeping track of name and email separately. Signed-off-by: Junio C Hamano Acked-by: Santi Béjar --- builtin-commit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'builtin-commit.c') diff --git a/builtin-commit.c b/builtin-commit.c index 073fe90ba1..f4974b5542 100644 --- a/builtin-commit.c +++ b/builtin-commit.c @@ -624,7 +624,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix, author_ident); free(author_ident); - if (!user_ident_explicitly_given) + if (user_ident_explicitly_given != IDENT_ALL_GIVEN) fprintf(fp, "%s" "# Committer: %s\n", -- cgit 1.2.3-korg From 5aeb3a3a838b2cb03d250f3376cf9c41f4d4608e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 17 Jan 2010 13:54:28 -0800 Subject: user_ident_sufficiently_given(): refactor the logic to be usable from elsewhere Signed-off-by: Junio C Hamano --- builtin-commit.c | 2 +- cache.h | 1 + ident.c | 9 +++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) (limited to 'builtin-commit.c') diff --git a/builtin-commit.c b/builtin-commit.c index f4974b5542..b76f327e1f 100644 --- a/builtin-commit.c +++ b/builtin-commit.c @@ -624,7 +624,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix, author_ident); free(author_ident); - if (user_ident_explicitly_given != IDENT_ALL_GIVEN) + if (!user_ident_sufficiently_given()) fprintf(fp, "%s" "# Committer: %s\n", diff --git a/cache.h b/cache.h index 16c8e8df41..f7a287cbc6 100644 --- a/cache.h +++ b/cache.h @@ -929,6 +929,7 @@ extern char git_default_name[MAX_GITNAME]; #define IDENT_MAIL_GIVEN 02 #define IDENT_ALL_GIVEN (IDENT_NAME_GIVEN|IDENT_MAIL_GIVEN) extern int user_ident_explicitly_given; +extern int user_ident_sufficiently_given(void); extern const char *git_commit_encoding; extern const char *git_log_output_encoding; diff --git a/ident.c b/ident.c index d4f614543d..96b56e66d1 100644 --- a/ident.c +++ b/ident.c @@ -259,3 +259,12 @@ const char *git_committer_info(int flag) getenv("GIT_COMMITTER_DATE"), flag); } + +int user_ident_sufficiently_given(void) +{ +#ifndef WINDOWS + return (user_ident_explicitly_given & IDENT_MAIL_GIVEN); +#else + return (user_ident_explicitly_given == IDENT_ALL_GIVEN); +#endif +} -- cgit 1.2.3-korg