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

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

From
Jeff King <peff@peff.net>
Date
Feb 18, 2010, 02:10 UTC
Message-ID
<20100218021010.GA21693@coredump.intra.peff.net>
In-Reply-To
<7vaav7wb8v.fsf@alter.siamese.dyndns.org>
On Wed, Feb 17, 2010 at 06:04:00PM -0800, Junio C Hamano wrote:
Show 13 quoted lines
> 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.

Exactly what I meant, but if somebody as clueful as Avery gets confused, then probably I need to be a bit more clear in my note.

Maybe just this squashed into my previous patch?
---
diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt
index 9ee006b..1a613aa 100644
--- a/Documentation/git-rev-parse.txt
+++ b/Documentation/git-rev-parse.txt
@@ -197,15 +197,15 @@ blobs contained in a commit.
   . if `$GIT_DIR/<name>` exists, that is what you mean (this is usually
     useful only for `HEAD`, `FETCH_HEAD`, `ORIG_HEAD` and `MERGE_HEAD`);
 
-  . otherwise, `$GIT_DIR/refs/<name>` if exists;
+  . otherwise, `refs/<name>` if exists;
 
-  . otherwise, `$GIT_DIR/refs/tags/<name>` if exists;
+  . otherwise, `refs/tags/<name>` if exists;
 
-  . otherwise, `$GIT_DIR/refs/heads/<name>` if exists;
+  . otherwise, `refs/heads/<name>` if exists;
 
-  . otherwise, `$GIT_DIR/refs/remotes/<name>` if exists;
+  . otherwise, `refs/remotes/<name>` if exists;
 
-  . otherwise, `$GIT_DIR/refs/remotes/<name>/HEAD` if exists.
+  . otherwise, `refs/remotes/<name>/HEAD` if exists.
 +
 HEAD names the commit your changes in the working tree is based on.
 FETCH_HEAD records the branch you fetched from a remote repository
@@ -217,10 +217,8 @@ them easily.
 MERGE_HEAD records the commit(s) you are merging into your branch
 when you run 'git merge'.
 +
-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`).
+Note that any of the `refs/*` cases above may come either from
+the `$GIT_DIR/refs` directory or from the `$GIT_DIR/packed-refs` file.
 
 * A ref followed by the suffix '@' with a date specification
   enclosed in a brace
Previous: Junio C HamanoNext: Junio C Hamano
Message 7 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.