git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2] allow user aliases for the --author parameter

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 27, 2008, 06:13 UTC
Message-ID
<7v7ia3rnnq.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<20080827001944.GA7347@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 14 quoted lines
> 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)
Previous: Jeff KingNext: Michael J Gruber
Message 15 of 32 in “allow user aliases for the --author parameter”
  1. allow user aliases for the --author parameterMichael J Gruber, Aug 21, 2008
  2. Miklos VajnaAug 21, 2008
  3. Michael J GruberAug 21, 2008
  4. Alex RiesenAug 21, 2008
  5. Alex RiesenAug 21, 2008
  6. Jeff KingAug 21, 2008
  7. Junio C HamanoAug 22, 2008
  8. Michael J GruberAug 22, 2008
  9. Jeff KingAug 22, 2008
  10. Junio C HamanoAug 22, 2008
  11. Jeff KingAug 22, 2008
  12. allow user aliases for the --author parameterMichael J Gruber, Aug 26, 2008
  13. Junio C HamanoAug 26, 2008
  14. Jeff KingAug 27, 2008
  15. Junio C HamanoAug 27, 2008
  16. Michael J GruberAug 27, 2008
  17. Jeff KingAug 27, 2008
  18. Jeff KingAug 27, 2008
  19. Junio C HamanoAug 27, 2008
  20. Pedro MeloAug 24, 2008
  21. Jeff KingAug 24, 2008
  22. fix "git log -i --grep"Jeff King, Aug 25, 2008
  23. format-patch: use default diff format even with patch optionsJeff King, Aug 25, 2008
  24. Junio C HamanoAug 25, 2008
  25. Junio C HamanoAug 25, 2008
  26. Jeff KingAug 25, 2008
  27. Jeff KingAug 25, 2008
  28. Junio C HamanoAug 25, 2008
  29. Jeff KingAug 27, 2008
  30. Michael J GruberAug 28, 2008
  31. Jeff KingAug 28, 2008
  32. Jeff KingAug 28, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.