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

Re: Host refs to push are chosen (documentation error)?

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 18, 2010, 02:04 UTC
Message-ID
<7vaav7wb8v.fsf@alter.siamese.dyndns.org>
In-Reply-To
<32541b131002171751n454081a9w90f2957d7a40d87@mail.gmail.com>
Avery Pennarun <apenwarr@gmail.com> writes:
Show 9 quoted lines
>> ++
>> +For any of the `$GIT_DIR/refs` cases above, packed refs from
>> +`$GIT_DIR/packed-refs` may be substituted (e.g., a line with
>> +`refs/heads/master` in the packed-refs file would have the same
>> +precedence as the file `$GIT_DIR/refs/heads/master`).
>
> Are they really equal precedence?  How does git decide, when there's
> one of each?  I'd guess packed-refs might actually be strictly higher
> precedence, but I'm not sure.

This is not about "I have packed refs/heads/master and then a loose refs/heads/master also exists" case. After packing, update ref simply creates a new loose ref, and we read loose ones and give precedence to it over packed one. This is so that you once gc and most of the unchanging refs will stay in packed file, but some active branches can be quickly flipped without having to rewrite the whole packed refs file (or removing the ref from that file).

But the statement is not about that.  The statement is about this:
    "refs/tags/master" gets higher precedence over "refs/heads/master",
    and this order is indifferent to where these two refs come from,
    either packed refs or loose in the filesystem.
Previous: Avery PennarunNext: Jeff King
Message 6 of 12 in “Host refs to push are chosen (documentation error)?”
  1. Andrey BorzenkovFeb 17, 2010
  2. Tay Ray ChuanFeb 17, 2010
  3. Avery PennarunFeb 17, 2010
  4. Jeff KingFeb 18, 2010
  5. Avery PennarunFeb 18, 2010
  6. Junio C HamanoFeb 18, 2010
  7. Jeff KingFeb 18, 2010
  8. Junio C HamanoFeb 18, 2010
  9. Jeff KingFeb 18, 2010
  10. Junio C HamanoFeb 18, 2010
  11. Jeff KingFeb 18, 2010
  12. Andrey BorzenkovFeb 18, 2010

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.