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

Re: Large pack causes git clone failures ... what to do?

From
Shawn O. Pearce <spearce@spearce.org>
Date
Aug 31, 2010, 18:02 UTC
Message-ID
<20100831180247.GF32601@spearce.org>
In-Reply-To
<AANLkTi=1iLx=-9gxkGzuhrbpA005VPSp0itkAkOG4D4z@mail.gmail.com>
Geoff Russell <geoffrey.russell@gmail.com> wrote:
Show 12 quoted lines
> I did a "git gc" on a repository and ended up with a 4GB pack ... now I
> can't clone the repository and get the following:
> 
> remote: fatal: Out of memory? mmap failed: Cannot allocate memory
> remote: aborting due to possible repository corruption on the remote side.
> fatal: early EOF
> error: git upload-pack: git-pack-objects died with error.
> fatal: git upload-pack: aborting due to possible repository corruption
> on the remote side.
> fatal: index-pack failed
> 
> How do I deal with this?   I'm running git version 1.6.2.3

Are you on a 32 bit Linux system? Or 64 bit? Git should be auto selecting a unit that would allow it to mmap slices of that 4GB pack.

> I've looked at "git repack --max-pack-size", but which that
> created new packs it didn't delete the old monster.
You really needed to run:
  git repack --max-pack-size=.. -a -d

The -d flag tells it to remove the old packs once the new packs are ready, and the -a flag tells it to reconsider every object in the repository, rather than just those that are loose.

But if you can't clone it, you probably can't repack it. Clone works by creating a pack file on the server, just like repack does. Except it sends the pack out to the network stream instead of to local disk.

-- 
Shawn.
Previous: Geoff RussellNext: Geoff Russell
Message 2 of 7 in “Large pack causes git clone failures ... what to do?”
  1. Geoff RussellAug 31, 2010
  2. Shawn O. PearceAug 31, 2010
  3. Geoff RussellAug 31, 2010
  4. Geoff RussellSep 1, 2010
  5. Geoff RussellSep 1, 2010
  6. Shawn O. PearceSep 1, 2010
  7. Geoff RussellSep 6, 2010

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.