From: Nathan Gray Date: Thu, 26 Apr 2012 23:48:33 GMT Subject: Re: Why aren't tag refs namespaced? Message-ID: In-Reply-To: CC'ing the list On Thu, Apr 26, 2012 at 12:04 PM, Phil Hord wrote: > On Thu, Apr 26, 2012 at 2:40 PM, Nathan Gray wrote: >> Namespacing works really well for branch refs.  I know that >> remotes/origin/master is origin's master branch.  I may or may not >> have a master branch, and it may or may not have anything in common >> with origin's.  Our repositories are independent, after all, so it >> makes sense that our refs would live in different namespaces. >> >> So why is it that tag refs don't follow this model? > > I expect the simple answer is that no one has been motivated to create > such a mode. > > >> Why is my >> "best-commit-ever" tag assumed to be the same as origin's?  Given a >> ref in refs/tags it's unclear if the ref is public, private, on origin >> or not on origin.  Will pushing my tags create anything new or not? >> Who knows?  Compare this to branches, where the same questions are >> easy to answer thanks to namespacing. >> >> OTOH, am I just not "getting it?"  I've been using git for about 4 >> years now and I feel like I know it pretty well but it's possible I'm >> just misunderstanding things. > > > Tags are presumed not to move, so there's no point in having a remote > tag which you follow with your local tag.  In that sense, they are > fundamentally different from branches.  Also, tags are not pushed by > default, though they are fetched if they're on branches you are > fetching. All that is true, but... > On the other hand, it does invite namespace collisions if > you pull tags from a remote whilst having local tags and no > agreed-upon convention. Exactly! Imagine tracking 5 different forks of the same project on GitHub. They can't be expected to coordinate their tagging conventions. > But perhaps a convention is what you need.  Suppose you name all your > local tags "refs/tags/n8gray/best-commit-ever"?  Or maybe you can 'git > fetch origin "refs/tags/*:refs/tags/origin/*"'. That could probably be made to work, but it requires a fair bit of effort to keep clean. Plus you have to make sure you never accidentally use the built-in tag pushing/pulling stuff or it all falls apart. 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