All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: git@vger.kernel.org, "Santi Béjar" <santi@agolina.net>
Cc: Adam Megacz <adam@megacz.com>
Subject: [PATCH 2/3] ident.c: check explicit identity for name and email separately
Date: Fri, 08 Jan 2010 08:04:52 -0800	[thread overview]
Message-ID: <7vbph4eg63.fsf_-_@alter.siamese.dyndns.org> (raw)
In-Reply-To: <7vskagh9fg.fsf@alter.siamese.dyndns.org> (Junio C. Hamano's message of "Fri\, 08 Jan 2010 08\:02\:11 -0800")

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 <gitster@pobox.com>
---
 builtin-commit.c |    2 +-
 cache.h          |    3 +++
 config.c         |    6 ++----
 ident.c          |    7 ++++---
 4 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/builtin-commit.c b/builtin-commit.c
index 073fe90..f4974b5 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",
diff --git a/cache.h b/cache.h
index bf468e5..16c8e8d 100644
--- a/cache.h
+++ b/cache.h
@@ -925,6 +925,9 @@ extern const char *config_exclusive_filename;
 #define MAX_GITNAME (1000)
 extern char git_default_email[MAX_GITNAME];
 extern char git_default_name[MAX_GITNAME];
+#define IDENT_NAME_GIVEN 01
+#define IDENT_MAIL_GIVEN 02
+#define IDENT_ALL_GIVEN (IDENT_NAME_GIVEN|IDENT_MAIL_GIVEN)
 extern int user_ident_explicitly_given;
 
 extern const char *git_commit_encoding;
diff --git a/config.c b/config.c
index 37385ce..fa1a0c0 100644
--- a/config.c
+++ b/config.c
@@ -528,8 +528,7 @@ static int git_default_user_config(const char *var, const char *value)
 		if (!value)
 			return config_error_nonbool(var);
 		strlcpy(git_default_name, value, sizeof(git_default_name));
-		if (git_default_email[0])
-			user_ident_explicitly_given = 1;
+		user_ident_explicitly_given |= IDENT_NAME_GIVEN;
 		return 0;
 	}
 
@@ -537,8 +536,7 @@ static int git_default_user_config(const char *var, const char *value)
 		if (!value)
 			return config_error_nonbool(var);
 		strlcpy(git_default_email, value, sizeof(git_default_email));
-		if (git_default_name[0])
-			user_ident_explicitly_given = 1;
+		user_ident_explicitly_given |= IDENT_MAIL_GIVEN;
 		return 0;
 	}
 
diff --git a/ident.c b/ident.c
index e6c1798..e67c5ad 100644
--- a/ident.c
+++ b/ident.c
@@ -249,9 +249,10 @@ const char *git_author_info(int flag)
 
 const char *git_committer_info(int flag)
 {
-	if (getenv("GIT_COMMITTER_NAME") &&
-	    getenv("GIT_COMMITTER_EMAIL"))
-		user_ident_explicitly_given = 1;
+	if (getenv("GIT_COMMITTER_NAME"))
+		user_ident_explicitly_given |= IDENT_NAME_GIVEN;
+	if (getenv("GIT_COMMITTER_EMAIL"))
+		user_ident_explicitly_given |= IDENT_MAIL_GIVEN;
 	return fmt_ident(getenv("GIT_COMMITTER_NAME"),
 			 getenv("GIT_COMMITTER_EMAIL"),
 			 getenv("GIT_COMMITTER_DATE"),
-- 
1.6.6.209.g52296.dirty

  parent reply	other threads:[~2010-01-08 16:05 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-03 23:32 edit Author/Date metadata as part of 'git commit' $EDITOR invocation? Adam Megacz
2010-01-04 20:32 ` Sverre Rabbelier
2010-01-04 21:08   ` Adam Megacz
2010-01-04 22:52     ` Sverre Rabbelier
2010-01-05 20:22       ` David Aguilar
2010-01-05 22:38     ` Nanako Shiraishi
2010-01-06 17:04       ` Junio C Hamano
2010-01-08  7:35         ` Adam Megacz
2010-01-08 16:02           ` Junio C Hamano
2010-01-08 16:03             ` [PATCH 1/3] ident.c: remove unused variables Junio C Hamano
2010-01-08 16:04             ` Junio C Hamano [this message]
2010-01-08 22:33               ` [PATCH 2/3] ident.c: check explicit identity for name and email separately Santi Béjar
2010-01-08 16:08             ` [RFC PATCH 3/3] ident.c: treat $EMAIL as giving user.email identity explicitly Junio C Hamano
2010-01-11  4:37             ` [PATCH] Display author and committer after "git commit" Adam Megacz
2010-01-11  4:53               ` Adam Megacz
2010-01-11  7:28               ` Junio C Hamano
2010-01-12  1:51                 ` Adam Megacz
2010-01-12 14:24                   ` Jeff King
2010-01-12 14:52                     ` Jeff King
2010-01-12 15:36                     ` Jeff King
2010-01-12 15:41                       ` [PATCH 1/3] strbuf_expand: convert "%%" to "%" Jeff King
2010-01-12 15:41                       ` [PATCH 2/3] strbuf: add strbuf_percentquote_buf Jeff King
2010-01-12 16:19                         ` Johannes Schindelin
2010-01-12 16:18                           ` Jeff King
2010-01-13  6:55                         ` Junio C Hamano
2010-01-13 17:06                           ` Jeff King
2010-01-13 19:47                             ` Junio C Hamano
2010-01-13 19:56                               ` Jeff King
2010-01-12 15:46                       ` [PATCH 3/3] commit: show interesting ident information in summary Jeff King
2010-01-13  6:57                         ` Junio C Hamano
2010-01-13 17:30                           ` Jeff King
2010-01-13 19:48                             ` Junio C Hamano
2010-01-13 20:17                               ` Jeff King
2010-01-13 20:18                                 ` Jeff King
2010-01-13 20:50                                   ` Junio C Hamano
2010-01-13 17:34                       ` [PATCH] Display author and committer after "git commit" Jeff King
2010-01-13 17:35                         ` [PATCH v2 1/3] strbuf_expand: convert "%%" to "%" Jeff King
2010-01-14 11:47                           ` Chris Johnsen
2010-01-14 14:32                             ` Jeff King
2010-01-13 17:36                         ` [PATCH v2 2/3] strbuf: add strbuf_addbuf_percentquote Jeff King
2010-01-13 17:39                         ` [PATCH v2 3/3] commit: show interesting ident information in summary Jeff King
2010-01-13 18:39                           ` Wincent Colaiuta
2010-01-13 18:45                             ` Jeff King
2010-01-13 18:50                               ` Wincent Colaiuta
2010-01-14 15:02                                 ` Thomas Rast
2010-01-14 19:04                                   ` Felipe Contreras
2010-01-14 19:15                                     ` Junio C Hamano
2010-01-14 19:36                                       ` Felipe Contreras
2010-01-14 19:44                                         ` Junio C Hamano
2010-01-15  1:21                                           ` Felipe Contreras
2010-01-16  2:56                                 ` Adam Megacz
2010-01-17 11:31                             ` Matthieu Moy
2010-01-17  8:59                           ` Junio C Hamano
2010-01-17 16:18                             ` Jeff King

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7vbph4eg63.fsf_-_@alter.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=adam@megacz.com \
    --cc=git@vger.kernel.org \
    --cc=santi@agolina.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.