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

Re: Bug: `git remote show <remote>` reports different HEAD branch than refs/remotes/<remote>/HEAD

From
Jeff King <peff@peff.net>
Date
Aug 15, 2017, 21:59 UTC
Message-ID
<20170815215947.hbddixjjwzlgsfuq@sigill.intra.peff.net>
In-Reply-To
<CAKNmmv3_rFNDDFVEeShAb3mEMOBL4z=oZXP8Df72D44stB_7BA@mail.gmail.com>
On Tue, Aug 15, 2017 at 01:58:38PM -0400, Jason Karns wrote:
Show 17 quoted lines
> > On the other hand, what "git remote show" outputs for HEAD is a name
> > of actually checked-out branch inside that remote repository - it`s
> > what`s stored inside HEAD file of the remote repository root.
> >
> > So it is something set on the _remote_ end, you can`t influence it
> > from your local repository.
> 
> So _this_ is not what I expected. Thanks for clarifying.
> 
> Considering that a fresh clone replicates the remote's default branch
> as the local default for that remote, I wager (in the majority of
> cases) that these two are the same. It would seem that what I would
> like in this case is a feature change to git-remote-show to show both
> the locally-configured and remote-configured defaults for the given
> remote (similar in spirit to how git-remote-show already shows local
> vs remote information: branches and their configurations for
> push/pull).

Yes, I'd agree. This seems like exactly the kind of information that "remote show" was intended to display.

It should be a pretty straight-forward patch for anybody wanting to get their feet wet in git development. The trickier half of showing both is getting the remote information, but we're already doing that. So I think any patch would want to:

  1. Teach builtin/remote.c:show() to say "Remote HEAD branch" instead
     of just "HEAD branch".
  2. Add a "Local HEAD branch" that shows the local symref. That symref
     is always refs/remotes/<remotename>/HEAD, which can be constructed
     with a strbuf. And then resolve_refdup() can be used to get the
     pointed-to ref (check the returned flags for REF_ISSYMREF, and
     the string return value is the refname).
-Peff
Previous: Jason Karns
Message 4 of 4 in “Bug: `git remote show <remote>` reports different HEAD branch than refs/remotes/<remote>/HEAD”
  1. Jason KarnsAug 15, 2017
  2. Igor DjordjevicAug 15, 2017
  3. Jason KarnsAug 15, 2017
  4. Jeff KingAug 15, 2017

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.