From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Brian Norris <computersforpeace@gmail.com>, git@vger.kernel.org
Subject: Re: git-fetch: default globally to --no-tags
Date: Wed, 19 Nov 2014 13:57:09 -0500 [thread overview]
Message-ID: <20141119185708.GA9908@peff.net> (raw)
In-Reply-To: <xmqqr3wzrpur.fsf@gitster.dls.corp.google.com>
On Wed, Nov 19, 2014 at 10:45:48AM -0800, Junio C Hamano wrote:
> > My email boils down to two questions:
> >
> > (A) Has there been progress on implementing a proposal like in [2]?
>
> I do not think so, and also I do not agree that "mirror everybody
> else's ref hierarchy into separate namespaces" is necessarily a good
> idea, especially for tags, whose reason of existence is to give
> people a way to have anchoring points they agree on to have a shared
> world view necessary to move things forward.
>
> In other words, talks in [2] are attempting to solve a wrong
> problem. The problem people want to solve is to have a mechanism to
> keep private anchoring points that are not necessarily shared
> project wide, which tags in refs/tags hierarchy is *not*.
>
> Like it or not, tags are meant to be used for globally shared
> anchoring points and the whole machinery (e.g. "fetch" that
> auto-follows tags, "clone" that gives refs/tags*:refs/tags/*
> refspec) is geared towards supporting that use pattern, which will
> be broken by moving tags to per-remote namespace.
>
> I can see "git tag --local foo" that creates refs/local-tags/foo
> and also adding a mechanism to propagate local-tags/ hierarchy just
> like heads/ hierarchy is propagated per-remote as a solution to that
> problem that does not break the "release tags" use case, though.
I am not sure I agree here that the discussions in [2] were not handling
this case. Here you are arguing for the tag-writer to distinguish
between two separate namespaces: global and local.
But I think the proposals in [2] were about pushing that logic into the
lookup phase. That is, pulling in all of the remote's tags as
"refs/remotes/origin/tags/*", and then at lookup time checking multiple
locations for tags (and preferring your local "refs/tags" to what is
pulled from a remote).
I think that system is better because it gives flexibility in resolution
to the viewer of the tags, not the writer. E.g., consider a project that
is merging two different sub-projects, project1 and project2. Each of
the sub-projects has their own global namespace with v1.0, v2.0, etc.
They would never use local-tags; these are meant to be in a per-project
global namespace.
But the superproject is pulling them both together; if it uses
refs/tags, the global namespaces will clash. Instead, it would be more
convenitn to have refs/remotes/project1/tags and so on. And then a
lookup of "v1.0" can either prefer project1 to project2, vice-versa, or
even respect neither. But the point is that the desired outcome is in
the eye of the beholder, not the writer.
> This is a tangent, but it is an important one because we are talking
> about "tagopt" specifically. I think we should start deprecating
> "*.tagopt --[no-]tags".
Thanks for writing this out. I touched on it in the other email I sent,
but did not explain it very well. The transition you mentioned here is
exactly what I was thinking of.
-Peff
next prev parent reply other threads:[~2014-11-19 18:57 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-19 3:05 git-fetch: default globally to --no-tags Brian Norris
2014-11-19 18:42 ` Jeff King
2014-11-19 18:45 ` Junio C Hamano
2014-11-19 18:57 ` Jeff King [this message]
2014-11-19 20:22 ` Junio C Hamano
2014-11-19 20:32 ` Jeff King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20141119185708.GA9908@peff.net \
--to=peff@peff.net \
--cc=computersforpeace@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.