Re: git fetch --reference?
From: Junio C Hamano <hidden>
Date: 2016-08-11 19:24:06
"Michael K. Edwards" [off-list ref] writes:
When setting up a working area for kernel integration for a new embedded target, I generally do a "git clone --reference" so that the new area has its own repository (and its own branch structure) but most of the blobs come from a local reference copy. But now that I'm integrating bits from several non-trivially divergent trees (mtd-2.6, netdev-2.6, linux-2.6.16.y, etc.), it would be nice to avoid re-downloading blobs for these additional remote branches, which are also available in the local reference copy. Is it feasible to implement "git fetch --reference" for this purpose? Or is there a better way to manage this sort of integration effort?
I am somewhat doubtful that this is common enough to warrant
adding an extra option to "git fetch", but you could add
alternates to these new reference object stores before
initiating the fetch.
For example, if you have pristine linux-2.6/ and your work was
started by cloning with --reference to it into my-2.6/, you
would have something like this:
$ cd /usr/src
$ ls -F
linux-2.6/ linux-2.6.16.y/ netdev-2.6/ my-2.6/
$ cd my-2.6/
$ cat .git/objects/info/alternates
/usr/src/linux-2.6/.git/objects
Then you would (still in my-2.6 repository):
$ cat >>.git/objects/info/alternates
/usr/src/linux-2.6.16.y/.git/objects
/usr/src/netdev-2.6/.git/objects
$ git pull ../netdev-2.6/ ALL
which would hopefully not download _any_ objects but just gets
the ALL branch and makes a merge commit in your working
repository.