Re: [PATCH] Support multiple virtual repositories with a single object store and refs

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

 



On Tue, May 24, 2011 at 15:47, Josh Triplett <josh@xxxxxxxxxxxxxxxx> wrote:
> On Tue, May 24, 2011 at 03:59:37PM -0400, Jeff King wrote:
>> You have a namespace clash if a repo is named "heads" or "tags" or
>> "remotes". Should we give it its own namespace, like:
>>
>>   refs/virtual/repo1/heads/*

Yes, I strongly agree with Peff here. We should "standardize" the
prefix of "refs/virtual/" for these things, to keep them from
inteferring with the other "standard" namespaces of refs/heads,
refs/remotes, refs/tags, refs/notes, and if Gerrit Code Review is
used, refs/changes.

>> Also, it seems conceptually simpler to me if it's a straight prefix.
>> IOW, "refs/heads/foo" in repo1 becomes:
>>
>>   refs/virtual/repo1/refs/heads/foo

I also think this is a great idea. It vastly simplifies the operations
involved and allows each virtual namespace to have its own HEAD within
the virtual namespace, as a sibling of "refs", just like in a normal
repository. It may seem a little ugly to put two refs in there, but I
think this is easily understood by repository owners/administrators
and will keep the implementation much more simple.

>> Then if we are operating in the virtual repo1 space, then:
>>
>>   1. It is an easy test to know whether we are allowed to see a ref:
>>      "does it start with refs/virtual/$repo/ ?"
>>
>>   2. Converting back and forth is simple. You just prepend or strip the
>>      refs/virtual/$repo prefix.
>
> Both of the namespaces you suggested work with our current patch:
> --ref-prefix=virtual/repo1/, or --ref-prefix=virtual/repo1/refs/.  We'd
> like to leave the exact choice of paths up to the policies of the host,
> but your suggestion does seem like a good general namespacing policy.

Ideally your implementation would only add/remove the prefix and
wouldn't muck around with the "refs/" part. Then step 1 and step 2 are
trivial.

Don't forget that a lot of Git usage comes from shell scripts. Being
able to use git for-each-ref with a simple sed script to process these
virtual namespaces is really important. If the sed script just needs
to remove a prefix, this easy. If it needs to remove part of the
prefix and replace with something else, its a bit more complicated for
the script writer to work with.

-- 
Shawn.
--
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]