git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: Michael J Gruber <michaeljgruber+gmane@fastmail.fm>, git@vger.kernel.org
Subject: Re: [PATCH v2] allow user aliases for the --author parameter
Date: Tue, 26 Aug 2008 23:13:13 -0700	[thread overview]
Message-ID: <7v7ia3rnnq.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: 20080827001944.GA7347@coredump.intra.peff.net

Jeff King <peff@peff.net> writes:

> On Tue, Aug 26, 2008 at 04:31:30PM -0700, Junio C Hamano wrote:
>
>> > This allows the use of author abbreviations when specifying commit
>> > authors via the --author option to git commit. "--author=$key" is
>> > resolved by looking up "user.$key.name" and "user.$key.email" in the
>> > config.
>> 
>> Maybe it is just me, but I am hesitant about the contamination of user.*
>> configuration namespace.  This patch as a general solution does not scale
>> well, once you start working with more than a few dozen people.
>
> It is not just you. I think this version of the patch is much improved,
> but I am still against user.$key.*. At the very least, it needs its own
> namespace.

It's not just that.  Having many of these in .git/config will slow down
any unrelated thing that needs to read from config.

I am not married to the "reuse existing information" idea, but doing it
the way this sample patch does at least makes only people who uses this
feature to pay the price and only when they use it.

Not extensively tested, beyond the usual test suite, and using it for real
only once to commit this with "git commit --author=Jeff".  I wanted to say
"Michael J" instead, but there is this little chicken-and-egg problem ;-)

 builtin-commit.c |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git c/builtin-commit.c w/builtin-commit.c
index 649c8be..8aae906 100644
--- c/builtin-commit.c
+++ w/builtin-commit.c
@@ -710,6 +710,30 @@ static int message_is_empty(struct strbuf *sb, int start)
 	return 1;
 }
 
+static const char *find_author_by_nickname(const char *name)
+{
+	struct rev_info revs;
+	struct commit *commit;
+	struct strbuf buf = STRBUF_INIT;
+	const char *av[20];
+	int ac = 0;
+
+	init_revisions(&revs, NULL);
+	strbuf_addf(&buf, "--author=%s", name);
+	av[++ac] = "--all";
+	av[++ac] = buf.buf;
+	av[++ac] = NULL;
+	setup_revisions(ac, av, &revs, NULL);
+	prepare_revision_walk(&revs);
+	commit = get_revision(&revs);
+	if (commit) {
+		strbuf_release(&buf);
+		format_commit_message(commit, "%an <%ae>", &buf);
+		return strbuf_detach(&buf, NULL);
+	}
+	die("No existing author found with '%s'", name);
+}
+
 static int parse_and_validate_options(int argc, const char *argv[],
 				      const char * const usage[],
 				      const char *prefix)
@@ -720,6 +744,9 @@ static int parse_and_validate_options(int argc, const char *argv[],
 	logfile = parse_options_fix_filename(prefix, logfile);
 	template_file = parse_options_fix_filename(prefix, template_file);
 
+	if (force_author && !strchr(force_author, '>'))
+		force_author = find_author_by_nickname(force_author);
+
 	if (logfile || message.len || use_message)
 		use_editor = 0;
 	if (edit_flag)

  reply	other threads:[~2008-08-27  6:14 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-21  9:19 [PATCH] allow user aliases for the --author parameter Michael J Gruber
2008-08-21 13:49 ` Miklos Vajna
2008-08-21 14:30   ` Michael J Gruber
2008-08-21 17:41 ` Alex Riesen
2008-08-21 17:49   ` Alex Riesen
2008-08-21 20:02 ` Jeff King
2008-08-22  6:09   ` Junio C Hamano
2008-08-22  8:27   ` Michael J Gruber
2008-08-22 16:50     ` Jeff King
2008-08-22 21:09       ` Junio C Hamano
2008-08-22 21:19         ` Jeff King
2008-08-26  8:02           ` [PATCH v2] " Michael J Gruber
2008-08-26 23:31             ` Junio C Hamano
2008-08-27  0:19               ` Jeff King
2008-08-27  6:13                 ` Junio C Hamano [this message]
2008-08-27  9:36                   ` Michael J Gruber
2008-08-27 12:40                     ` Jeff King
     [not found]                     ` <20080827123656.GB11986@coredump.intra.peff.net>
     [not found]                       ` <7vmyiyqt08.fsf@gitster.siamese.dyndns.org>
2008-08-27 17:18                         ` Jeff King
2008-08-28  8:53                           ` Michael J Gruber
2008-08-28 21:33                             ` Jeff King
     [not found]                     ` <7vr68aqt3h.fsf@gitster.siamese.dyndns.org>
     [not found]                       ` <48B65922.4050005@fastmail.fm>
2008-08-28 21:36                         ` Jeff King
2008-08-27 12:29                   ` Jeff King
2008-08-27 17:19                     ` Junio C Hamano
2008-08-24  9:19         ` [PATCH] " Pedro Melo
2008-08-24 17:21           ` Jeff King
2008-08-25  1:38         ` [PATCH] fix "git log -i --grep" Jeff King
2008-08-25  2:10           ` [PATCH] format-patch: use default diff format even with patch options Jeff King
2008-08-25  4:57             ` Junio C Hamano
2008-08-25  5:12           ` [PATCH] fix "git log -i --grep" Junio C Hamano
2008-08-25  6:15             ` Jeff King
2008-08-25  6:18               ` Jeff King
2008-08-25  6:27               ` Junio C Hamano

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=7v7ia3rnnq.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=michaeljgruber+gmane@fastmail.fm \
    --cc=peff@peff.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).