Subject: Re: [PATCH v6] doc: add an explanation of Git's data model

From: Junio C Hamano <[email-masked]>
Date: Wed, 12 Nov 2025 11:16:06 -0800

"Julia Evans" <[email-masked]> writes:

>> Maybe its just me, but I find it a quite roundabout thing to say
>> that a ref refers to an object name (or "ID" if you like), simply
>> because name or ID *is* a way to refer to the thing that is assigned
>> that name, so you are making a ref to refer to something ("name")
>> that refers to what it ("ref") originally wanted to refer to
>> ("object").
> ...
> One idea I just had is "a branch is a label for a commit ID", which
> I think avoids the issue with "name" from earlier.
>
>> That is what I find the most strange in the construction "A branch
>> refers to ID" at the conceptual level.  I am much less unhappy with
>> "A branch records an ID", but stopping at that may make readers ask
>> the obvious question "what goal does that design aim to achieve?"
>> (whose answer is of course "to refer to the object that is assigned
>> that ID").
>>
>> "A branch refers to a commit object by recording its object name",
>> "A branch records the ID of a commit it refers to", "A branch
>> records the ID of the commit at the tip of its history".  Any of the
>> phrasing that does not make "ID" the object/target of the verb
>> "refer to" would work to avoid that strange construction.

Sorry, but I am having a hard time to come up with something that I
can give to help somebody who rejects "record", saying that it is a
new verb, and in the same message introduces "label" as a better
alternative, as we haven't seen "label" used in this context,
either.

Besides, a label, a name, or an ID are all that are used to refer to
something (in this context, "a commit object"), so I find the newly
proposed one just as roundabout as "a branch refers to ID" in the
same way.  The use of *ID* is a low-level implementation detail to
make the ref work as a label for, or make the ref refer to, an
object, so "is a label for ID" is just as bad as "refers to ID".

If we do not hesitate using a new word and introduce "label", "a
branch works as a label for a commit object" may probably work,
probably.

Thanks.