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

Re: git reflog write does not pick up user.name and user.email from config

From
Patrick Steinhardt <ps@pks.im>
Date
Sep 29, 2025, 23:57 UTC
Message-ID
<aNsc9En-DjxVOLcV@pks.im>
In-Reply-To
<519E887F-2028-476E-B26D-85E23F7974A5@not-evil.de>
Hi Michael,
On Mon, Sep 29, 2025 at 01:11:56PM +0200, Michael wrote:
Show 44 quoted lines
> Hi there!
> 
> I've been playing around with a toy project (an interactive step by step
> git tutorial that is just a repo) where I have been creating a reflog
> manually so far. I was happy to see the new `reflog write` feature and
> wanted to integrate it.
> 
> When comparing the results of my hand made reflog with the new
> `git reflog write` result I found some differences: It does not seem to
> pick up the "user.name" and "user.email" from the local git config.
> 
> Example:
> 
> ```bash
> git init example && cd example
> git config --local user.name "C O Mitter"
> git config --local user.email "committer@example.com"
> 
> message="hi"
> oid="0000000000000000000000000000000000000000"
> 
> # Setting env vars works as expected
> GIT_COMMITTER_NAME="$(git config --get user.name)" \
>   GIT_COMMITTER_EMAIL="$(git config --get user.email)" \
>   git reflog write "refs/test_vars" "$oid" "$oid" "$message"
> 
> # Picking up the information from the local config does not work
> unset GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL
> git reflog write "refs/test_no_vars" "$oid" "$oid" "$message"
> 
> # Since setting the env variables to the config value, no diff expected
> # but:
> diff .git/logs/refs/test_*
> # 1c1
> # < 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 Michael <michael@mycomp.local> 1759142076 +0200	hi
> # ---
> # > 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 C O Mitter <committer@example.com> 1759142076 +0200	hi
> ```
> 
> Intuitively I would expect these values to be picked up from the local
> config instead of having to specify them in env variables. I didn't
> expect it to fall back to some system values, instead of git config. Is
> there a reason that this information is not used from the config? And if
> yes, could you set some config, so that it gets picked up?
Thanks for this great bug report!

You're definitely onto something. The problem indeed is that we don't parse any of the configuration right now, but I agree a 100% that we really should.

The reason why I never noticed this issue is that our test suite by default sets both GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL. If set, we'll end up writing those into the reflog as expected. So it's a bit of a test gap we have.

> Unfortunately my ability to understand C is too limited to grasp how
> `git_committer_info` works…

You't typically call it with `repo_config()`. So if you want to work on this, the below should work. Only thing that's missing would be a test to verify that the gitconfig is parsed now as well as a proper commit message to tie it all together.

Thanks!
Patrick
diff --git a/builtin/reflog.c b/builtin/reflog.c
index c8f6b93d60..40884787b9 100644
--- a/builtin/reflog.c
+++ b/builtin/reflog.c
@@ -422,6 +422,8 @@ static int cmd_reflog_write(int argc, const char **argv, const char *prefix,
 	if (argc != 4)
 		usage_with_options(reflog_write_usage, options);
 
+	repo_config(repo, git_ident_config, NULL);
+
 	ref = argv[0];
 	if (!is_root_ref(ref) && check_refname_format(ref, 0))
 		die(_("invalid reference name: %s"), ref);
Previous: MichaelNext: gitmlko@not-evil.de
Message 2 of 9 in “git reflog write does not pick up user.name and user.email from config”
  1. MichaelSep 29, 2025
  2. Patrick SteinhardtSep 29, 2025
  3. builtin/reflog: respect user config in "write" subcommandgitmlko@not-evil.de, Sep 30, 2025
  4. Patrick SteinhardtSep 30, 2025
  5. builtin/reflog: respect user config in "write" subcommandgit@lohmann.sh, Sep 30, 2025
  6. Junio C HamanoSep 30, 2025
  7. builtin/reflog: respect user config in "write" subcommandMichael Lohmann, Sep 30, 2025
  8. Patrick SteinhardtOct 1, 2025
  9. Junio C HamanoOct 1, 2025

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.