Re: restriction of pulls

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

 



Johannes Schindelin wrote:
Hi,

On Fri, 9 Feb 2007, Christoph Duelli wrote:

Is it possible to restrict a chechout, clone or a later pull to some subdirectory of a repository?

No. In git, a revision really is a revision, and not a group of file revisions.

Ciao,
Dscho


I thought about how this might be implemented, although I'm not entirely sure how efficient this will be.

One obstacle to implementing partial checkouts is that one does not know which objects have changed or been deleted. One way of addressing this is to keep a record of the hashes of all the objects that were NOT checked out. (If one does not check out part of a directory, simply store the hash of the top level, and you do not need to store the child hashes.) This record would be a kind of "negative index".

When deciding what to check in, or which files are modified, one would check the "negative index" first to see if an entry exists. If not, only then would you check the filesystem to see if modification times have changed. With the "negative index", and the files in the file system, one would be able to construct new commits, without any problem.

It would also require an updated transfer protocol, which would allow the client to specify a tag/commit, then walk the tree that it points to to find the portion that the client is looking for, then pull only those objects (and possibly their history). This is likely to be VERY inefficient in terms of round trips, at least initially.

This might be able to benefit from the shallow checkout support that was recently implemented.

Comments?

Rogan
-
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]