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

Re: git clone downloads objects that are in GIT_OBJECT_DIRECTORY

From
Shawn Pearce <spearce@spearce.org>
Date
Mar 6, 2006, 01:42 UTC
Message-ID
<20060306014253.GD25790@spearce.org>
In-Reply-To
<20060306010825.GF20768@kvack.org>
Benjamin LaHaise <bcrl@kvack.org> wrote:
Show 6 quoted lines
> Hi folks,
> 
> Doing a fresh git clone git://some.git.url/ foo seems to download the 
> entire remote repository even if all the objects are already stored in 
> GIT_OBJECT_DIRECTORY=/home/bcrl/.git/object .  Is this a known bug?  
> At 100MB for a kernel, this takes a *long* time.

I believe it is a known missing feature. :-) git-clone doesn't prep HEAD to have some sort of starting point so the pull it uses to download everything literally downloads everything as nothing is in common.

One could work around it by running git-init-db to create the new clone locally, git-update-ref HEAD to some commit which you have in common with the remote, create a origin file, then perform a git-pull. This would only download the objects between the commit you put into HEAD and the current master of the remote... But that is actually some work.

I think Cogito's clone is capable of restarting a failed clone; I wonder if that logic would benefit you here?

Is using a common GIT_OBJECT_DIRECTORY across many clones actually pretty common? Maybe its time that git-clone gets some more smarts with regards to what it yanks from the origin.

-- 
Shawn.
Previous: Benjamin LaHaiseNext: Junio C Hamano
Message 2 of 6 in “git clone downloads objects that are in GIT_OBJECT_DIRECTORY”
  1. Benjamin LaHaiseMar 6, 2006
  2. Shawn PearceMar 6, 2006
  3. Junio C HamanoMar 6, 2006
  4. Shawn PearceMar 6, 2006
  5. seanMar 6, 2006
  6. Johannes SchindelinMar 6, 2006

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.