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

Re: Why aren't tag refs namespaced?

From
Nathan Gray <n8gray@n8gray.org>
Date
Apr 26, 2012, 23:33 UTC
Message-ID
<CA+7g9JzpLkNHT_o1QyJ_r=4DrauWOPFr5XR_CPeAHGcLpLoD+w@mail.gmail.com>
In-Reply-To
<xmqqty068ffd.fsf@junio.mtv.corp.google.com>
On Thu, Apr 26, 2012 at 12:24 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 16 quoted lines
> Nathan Gray <n8gray@n8gray.org> writes:
>
>> So why is it that tag refs don't follow this model?
>
> Because the assumed development model for "people work inside their
> private world (i.e. "branch"), but integration happens in common
> namespace (i.e. somebody eventually pushes to "master branch" of the
> repository that every project participant considers authoritative) and
> the end product of the project is tagged there for everybody's
> consumption.  When something is called "version 1.0", it only invites
> confusion if _my_ Git version 1.0 is different from _your_ Git version
> 1.0, and it makes no sense for tags used in this manner not to be in a
> global single namespace.  People need to qualify such "version 1.0" as
> "Junio's version 1.0" vs "Nathan's version 1.0" if they want to avoid
> confusion anyway, and at that point you would not be talking about
> refs/tags/v1.0, but refs/tags/jc/v1.0 vs refs/tags/ng/v1.0 or something.

I see your point, but the assumption that there is some global tagging authority is quite surprising to me, considering the distributed nature of git. And honestly, I don't think it would be so confusing. Imagine:

[~/src/git]$ git tag my-tag my-other-tag

[~/src/git]$ git tag -a my-tag my-other-tag remotes/joeShmoe/v1.0 remotes/junio/v1.0

I think people would know which v1.0 to trust, in the same way that they know which is the authoritative branch when dealing with multiple remotes.

I actually think this model is less confusing, in the sense that it helps unify the concept of "remote". There's this thing called a remote that represents the last-known state of a remote repository. That state includes branches, tags, etc. You can choose to incorporate that state into your own or ignore it, but it fundamentally belongs to the other repo and you can't change it except by pushing. Right now that's the way that branches work, but tags have their own rules for you to learn.

> Other workflows that use private tags are possible and they might
> benefit from having separate namespaces; it is just that they are not
> the workflow Git was originally designed to support.
That makes sense.

Cheers, -n8

-- 
HexaLex: A New Angle on Crossword Games for iPhone and iPod Touch
http://hexalex.com
On The App Store: http://bit.ly/8Mj1CU
On Facebook: http://bit.ly/9MIJiV
On Twitter: http://twitter.com/hexalexgame
http://n8gray.org
Previous: Junio C HamanoNext: Junio C Hamano
Message 3 of 7 in “Why aren't tag refs namespaced?”
  1. Nathan GrayApr 26, 2012
  2. Junio C HamanoApr 26, 2012
  3. Nathan GrayApr 26, 2012
  4. Junio C HamanoApr 27, 2012
  5. Marc BranchaudApr 26, 2012
  6. Nathan GrayApr 26, 2012
  7. Nathan GrayApr 26, 2012

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.