threads / discuss / 34841

git fetch --reference

Subject: git fetch --reference

## tl;dr

2 messages between Sep 3, 2013 and Sep 3, 2013.

replies: 1people: 2as markdown or json

Yann Droneaud· Sep 3, 2013, 16:55 UTC · lore
Hi,

I surprised myself trying to run git fetch --reference <local directory> <remote> in the hope git would use my <local directory> to resolve objects present in <remote> but not in my current repository ... just like git clone --reference <local directory> <URL>:

--reference <repository>
            If the reference repository is on the local machine, 
automatically setup
            .git/objects/info/alternates to obtain objects from the 
reference repository.
            Using an already existing repository as an alternate will 
require fewer objects
            to be copied from the repository being cloned, reducing 
network and local storage
            costs.

git fetch --reference would set up a temporary objects/info/alternates ... and skrew everything up.

Having a git fetch --reference option would be great, so that I could fetch one remote and the other related one in a row without any special setup. [At this point, you're likely to suggest me to use a local mirror that I would git clone/fetch from, and your probably right, but for a one time hack, it's cumbersome.]

In the end I've read http://git-blame.blogspot.fr/2012/08/bringing-bit-more-sanity-to-alternates.html

First I thought having "git alternatives add" would enable me to temporary add the --reference <directory> before running git fetch ... But it seems --reference doesn't work as I first understand it: git clone --reference don't *copy* object from the --reference <repository> instead of *copying* them from the cloned <url>, eg. using --reference <repository> as kind of mirror. Instead --reference <repository> seems to add a kind of a symlink. And if the --reference <repository> disappear, things are going to be lost. See this : http://randyfay.com/content/git-clone-reference-considered-harmfu

So setting a temporary alternate with git fetch --reference is a non-sense ... To achieve what I intend to do with this option, a git repack would need to be issued to actually copy the objects from the --reference <repository>.

So what's the best way to do a git fetch <remote>, copying objects from another local repository to resolve delta ?

Regards.
-- 
Yann Droneaud
OPTEYA
Andreas Schwab· Sep 3, 2013, 17:19 UTC · re: Yann Droneaud · lore

Re: git fetch --reference

Yann Droneaud <ydroneaud@opteya.com> writes:
> So what's the best way to do a git fetch <remote>, copying objects from
> another local repository
> to resolve delta ?

IMHO the best way is to add a remote for the local repository, fetch from it, then fetch from <remote>.

Andreas.
-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

← back to recent threads