Subject: Re: git-fetch: default globally to --no-tags

From: Jeff King <[email-masked]>
Date: Wed, 19 Nov 2014 15:32:09 -0500

On Wed, Nov 19, 2014 at 12:22:36PM -0800, Junio C Hamano wrote:

> With a separate local-tags hierarchy, the look-up part still has to
> be enhanced.  After doing "git tag v2.0" and "git tag -l snapshot00",
> you would want to be able to say "git log snapshot00..v2.0" and have
> these found.
> 
> If you don't allow a private local-tags hierarchy, then those who
> make releases are burdened to be very careful not to contaminate
> their public repository --- "git tag snapshot00" cannot be used by
> them lightly just to mark their private state, if their day
> typically is concluded with "git push --follow-tags", as that will
> push out the "tags" that are meant to be private.

It's not that I want to disallow a private local-tags hierarchy. It's
just that I consider it a completely orthogonal feature. In other words,
the problem of tags in a global namespace is not solved at all by
local-tags. It just helps people keep things out of the global namespace
that they did not want to be there in the first place[1]. It does
nothing for viewers who need to coalesce multiple global tag namespaces
(either from multiple projects, or "proposals" of global tags they have
pulled in from other non-canonical repositories).

> > 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.
> 
> Yeah, but isn't it an orthogonal issue?  refs/tags/project{1,2}/*
> would be what I would recommend to use for "global" stuff whose
> purpose is to give people a shared world view.

How do they get that split? They cannot use tag auto-following, which
puts the tags in the global refs/tags.

Certainly it can be done with git _today_ by setting up the appropriate
refspecs. I think this is more about making things useful out of the
box. 

-Peff

[1] I am actually not convinced that the mixing of local and global tags
    is a huge problem in practice. We do not push tags by default, so
    local tags tend to stay local. OTOH, I think the world would be a
    better place if "git push --follow-tags" were the default, which
    would entail somehow separating global from local tags.