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

Re: expensive local git clone

From
Linus Torvalds <torvalds@osdl.org>
Date
Jul 4, 2005, 20:39 UTC
Message-ID
<Pine.LNX.4.58.0507041327580.3570@g5.osdl.org>
In-Reply-To
<20050704.125744.59481768.davem@davemloft.net>
On Mon, 4 Jul 2005, David S. Miller wrote:
> 
> I can't be the only person in the world seeing this :-)
> It usually grows to around 88MB and runs for 8 minutes before
> it finishes.
I'm making something based on pack-files.

git-local-pull is indeed walking the whole tree and copying one file at a time. We shouldn't use "git-fetch-script" in "git clone" (it's really designed for doing one file at a time and for small updates),

That said, the pack-file thing I'm working on won't be perfect either, and the main advantage is that it should work over ssh. The fastest way to do a clone is really to do a recursive hardlinked tree, so you may well want to just do

	#!/bin/sh
	mkdir "$2" && cp -rl "$1/.git" "$2/.git"
and it should be about a million times faster and equally effective.
Untested, of course.
		Linus
Previous: David S. MillerNext: Petr Baudis
Message 2 of 14 in “expensive local git clone”
  1. David S. MillerJul 4, 2005
  2. Linus TorvaldsJul 4, 2005
  3. Petr BaudisJul 4, 2005
  4. David S. MillerJul 4, 2005
  5. Junio C HamanoJul 4, 2005
  6. David S. MillerJul 4, 2005
  7. Junio C HamanoJul 4, 2005
  8. Linus TorvaldsJul 4, 2005
  9. Short-cut git-fetch-pack while cloning locally.Junio C Hamano, Jul 5, 2005
  10. Linus TorvaldsJul 6, 2005
  11. Short-circuit git-clone-pack while cloning locally.Junio C Hamano, Jul 6, 2005
  12. Linus TorvaldsJul 6, 2005
  13. Junio C HamanoJul 6, 2005
  14. Short-circuit git-clone-pack while cloning locally (take 2).Junio C Hamano, Jul 6, 2005

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.