Re: [QUESTION] Selective fetch possible?

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

 



Jakub Narebski wrote:
"Shawn O. Pearce" <spearce@xxxxxxxxxxx> writes:

Filippo Zangheri <filippo.zangheri@xxxxxxxx> wrote:
Is it possible to git-fetch only a portion of the tree
of the specified repository, say, fetch only one directory or a
subset of files matching some regular expression? This is currently
- to my knowledge - only possible via wget iff the GIT repository
has gitweb enabled. But that's just a workaround.
No.

You can use a shallow clone to fetch only X commits back into
history on any branch, and you can also manually configure the
fetch specification in .git/config to only fetch specific branches,
but you must fetch the entire tree to get any of the files in it.

If the repository is available by git:// protocol you may be able
to use git-archive to obtain a tarfile for just the directory you
want (service has to be enabled on the remote side) but that is
just a raw UNIX tar; there is no Git repository and no ability to
commit/fetch/push/diff/apply/log/etc.

Note that what you wanted is, I guess, something called partial
checkout or subtree checkout.  This feature appears now and then in
feature requests; lately Nguyen Thai Ngoc Duy (pclouds) offered to do
this in "on subtree checkout" thread:
  http://thread.gmane.org/gmane.comp.version-control.git/74915

I still believe that it could be done fairly easily by simply recording the SHA1's of the files and directories that are *not* checked out somewhere in the .git directory, and just reusing those when checking the working tree. i.e. rather than stat-ing a tree that was never checked out, get the known SHA1 for that tree from where it was recorded on checkout.

The problem is twofold, as far as I understand it.  First, what to do
if there is merge conflicts outside checked out (selected) directory?

This is something that has been repeated many times, and I fail to see how it can be an issue. How can there be a conflict in a directory that is not, and never has been, checked out, and therefore cannot have been modified?

The only possibility that I can see is if the directory has been renamed elsewhere, but in that case, it *is* effectively checked out (just with a different directory name).

Second, how to make repository contain only relevant objects: git in
many places assumes full connectivity, and that if it has an object it
hass all objects depending on it.


Yes, this is the big problem as I see it.

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]

  Powered by Linux