git/list[1] front-page[2] threads[3] people[4] search[5] about
 

git fetch --reference

From
Yann Droneaud <ydroneaud@opteya.com>
Date
Sep 3, 2013, 16:55 UTC
Message-ID
<ae657fa74373b58feba41615d335504e@meuh.org>
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
Next: Andreas Schwab
Message 1 of 2 in “git fetch --reference”
  1. Yann DroneaudSep 3, 2013
  2. Andreas SchwabSep 3, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.