Re: [1.8.0] Provide proper remote ref namespaces

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 14 Feb 2011, Junio C Hamano wrote:

> Jakub Narebski <jnareb@xxxxxxxxx> writes:
> 
> > Please consider this use case:
> >
> > Let's assume that current maintainer steps aside for a bit, and new interim
> > temporary maintainer takes mantle.  One would add new remote _temporarily_,
> > but one would want for tags that temporary maintainer created to be as good
> > as tags from 'origin' remote... and not be deleted when you remove temp
> > remote and its remote-tracking branches.
> 
> Why don't you want to delete them?
> 
> When the "interim" maintainer gives the baton back to the authoritative
> maintainer, the tags that are blessed between these two maintainers will
> surely be propagated [*1*] to the authoritative repository and you will
> have them at refs/tags or refs/remotes/origin/tags in your repository.
> 
> And at that point, if you do not want to have refs/remotes/interim/heads/
> branches, you surely do not mind cleaning refs/remotes/interim/tags/
> hierarchy as well, no?

Exact.

> Having said all that, if we assume *1* above, then we wouldn't have needed
> separate tag namespace in the first place.

Depends.  There could be multiple compeeting "interim" maintainers 
effectively creating forks.  They may have conflicting tags.  The 
"official" maintainer may vet only one of those forks.  The other forks 
may die or have a life of their own, Etc. Etc.

> Further, think about the case where the "interim" maintainer ends up
> becoming the authoritative maintainer, which is the same thing as not
> assuming *1* above.  You would want to consolidate refs/remotes/origin/tags
> and refs/remotes/interim/tags, and we do not expect any collisions when we do
> so.

Right.  But that's an expectation based on social practices within a 
project.  In theory there _could_ be collisions.

Let's take the OpenOffice vs LibreOffice as an example.  What if I want 
both in my repository so I can easily perform diffs between those 
independent branches?  They may certainly end up producing releases with 
the same version numbers (same tag name) but different content 
(different tag references).

> Which suggests that tags namespace is really special in that it does want
> to be globally unique and agreed namespace, unlike branch namespace.

Semantically, yes.  but a separate namespace just makes special cases as 
those shown above so much easier to deal with.

The separate namespace is a _technical_ implementation detail that makes 
all the ambigous cases easy.  It doesn't make the mistake of imposing a 
social convention upon people.  So whatever people end up collectively 
doing with their tags is not tied to the tool's limitation anymore.

You end up with 2 tags with the same name?  Fine.  If they are identical 
then you may just as well ignore that they're in separate namespaces.  
The tool will present things to you as such instead of enforcing that in 
the data structure (this is just like we do with file renames). If 
they're different, then at least you now have the possibility to choose 
which tag you actually want by prefixing it with its namespace.  Right 
now this is just not possible.

Please let's not confuse technical details like data (or tag) storage 
with social conventions.


Nicolas
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]