On Wed, Jun 10, 2020 at 09:19:23PM +0000, Johannes Schindelin via GitGitGadget wrote: > @@ -2099,7 +2100,10 @@ struct ref *guess_remote_head(const struct ref *head, > > /* If refs/heads/master could be right, it is. */ > if (!all) { > - r = find_ref_by_name(refs, "refs/heads/master"); > + char *name = git_default_branch_name(0); > + > + r = find_ref_by_name(refs, name); > + free(name); > if (r && oideq(&r->old_oid, &head->old_oid)) > return copy_ref(r); > } You'd perhaps want to update the comment above, too. However, I think we should be a bit more lenient on the "reading" side default names. Just because "foo" is _my_ default branch name, does not mean it is the default on the remote side. We cannot know what the other side's default preference is, but in a world where we have 15 years of repos that may have been created with "master", it is probably still a good guess. I.e., I think this probably ought to check the preferred name, and then fall back to the existing behavior, like: if (!all) { char *name; /* try the user's preferred default branch name */ name = git_default_branch_name(0); r = find_ref_by_name(refs, name); free(name); if (r && oideq(&r->old_oid, &head->old_oid)) return copy_ref(r); /* otherwise, try "master", which is the historical default */ r = find_ref_by_name(refs, "refs/heads/master"); if (r && oideq(&r->old_oid, &head->old_oid)) return copy_ref(r); } That will help minimize fallout when git_default_branch_name() changes, either by user config or if we switch the baked-in default. In the latter case, we might also consider hard-coding that as a guess between the user's preferred name and the historical "master". Hopefully this would not matter _too_ much either way, as most servers would support the symref extension these days. But I still think we should do our best to minimize spots where the user may see a regression. -Peff