Currently, the calls to `create_symref()` do not honor the `core.logAllRefUpdates` nor the `user.{name,email}` configuration settings, and therefore write reflogs even when explicitly asked not to, and ignore the configured user identity. This happens on `git remote add --fetch`, `git remote set-head`, and `git remote rename`: these are the three commands which may create a symbolic-ref for the remote's HEAD. A call to `git_config(git_default_config, NULL);` for these three commands is enough to load the necessary configuration beforehand. The call to `git_config()` was inserted right after command-line processing for these three commands. One might also decide to push it closer to the actual call to `create_symref()`, as it is not needed elsewhere, but it made more sense not to have it buried into nested `if` conditions. Signed-off-by: Jérémie Detrey <Jeremie.Detrey@xxxxxxx> --- builtin/remote.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/builtin/remote.c b/builtin/remote.c index 64b4b551eb..f797fc3f65 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -190,6 +190,8 @@ static int add(int argc, const char **argv) name = argv[0]; url = argv[1]; + git_config(git_default_config, NULL); + remote = remote_get(name); if (remote_is_configured(remote, 1)) die(_("remote %s already exists."), name); @@ -685,6 +687,8 @@ static int mv(int argc, const char **argv) rename.new_name = argv[2]; rename.remote_branches = &remote_branches; + git_config(git_default_config, NULL); + oldremote = remote_get(rename.old_name); if (!remote_is_configured(oldremote, 1)) die(_("No such remote: '%s'"), rename.old_name); @@ -1326,6 +1330,8 @@ static int set_head(int argc, const char **argv) if (argc) strbuf_addf(&buf, "refs/remotes/%s/HEAD", argv[0]); + git_config(git_default_config, NULL); + if (!opt_a && !opt_d && argc == 2) { head_name = xstrdup(argv[1]); } else if (opt_a && !opt_d && argc == 1) { -- 2.29.2