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

Re: git-fast-export hg mutt (24M vs 184M)

From
Shawn O. Pearce <spearce@spearce.org>
Date
May 3, 2007, 21:18 UTC
Message-ID
<20070503211824.GB16538@spearce.org>
In-Reply-To
<20070503210112.GE3260@artemis>
Pierre Habouzit <madcoder@debian.org> wrote:
Show 6 quoted lines
> On Thu, May 03, 2007 at 09:17:16PM +0200, Thomas Glanzmann wrote:
> > Hello,
> > git-repack -a -d -f got it down to 19M. I missed the -f parameter
> > before. Sorry for the noise.
> 
>   You may want to use git gc that does that (and a bit more) for you.
Actually, in this case, no.

git-gc by default doesn't use the -f option. -f to git-repack means "no reuse deltas". That particular feature of git-repack is basically required to be used after running git-fast-import with anything sizeable.

The reason you need -f is git-fast-import does not write optimally compressed blobs (file revisions) when it creates the packfile. Instead it does a reasonable best effort while using a minimum amount of memory. The Git packfiles get most of their compression benefits from being able to see all of a project's data at once; this is impossible in fast-import as we're only seeing a small part of the incoming data stream at any single point in time.

If you had a lot of tags imported you might want to also use `git pack-refs` (one of the chores that git-gc does), or `git pack-refs --all` if you have a lot of dangling branches imported. The other chores in git-gc aren't actually useful after running fast-import (reflog expire, prune, rerere gc).

-- 
Shawn.
Previous: Pierre HabouzitNext: Pierre Habouzit
Message 4 of 6 in “git-fast-export hg mutt (24M vs 184M)”
  1. Thomas GlanzmannMay 3, 2007
  2. Thomas GlanzmannMay 3, 2007
  3. Pierre HabouzitMay 3, 2007
  4. Shawn O. PearceMay 3, 2007
  5. Pierre HabouzitMay 3, 2007
  6. Nicolas PitreMay 4, 2007

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.