Re: [PATCH v6] doc: add an explanation of Git's data model
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 12, 2025, 19:16 UTC
- Message-ID
- <xmqqa50rqcy1.fsf@gitster.g>
- In-Reply-To
- <2474339d-67bc-4a68-9f26-fe7edd172ec4@app.fastmail.com>
"Julia Evans" <julia@jvns.ca> writes:
Show 22 quoted lines
>> 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.