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

Re: Why repository grows after "git gc"? / Purpose of *.keep files?

From
Mike Hommey <mh@glandium.org>
Date
May 12, 2008, 21:03 UTC
Message-ID
<20080512210304.GA17352@glandium.org>
In-Reply-To
<20080512202414.GA8620@mithlond.arda.local>
On Mon, May 12, 2008 at 11:24:14PM +0300, Teemu Likonen wrote:
> But I have experienced the same earlier with some other post-1.5.5
> version so I believe you can reproduce this yourself. After cloning
> Linus's linux-2.6 repo its .git directory weights 209MB. After single
> "git pull" and "git gc" it was 298MB in my test.

I noticed that a while ago: when repacking multiple packs when one has a .keep file, the resulting additional pack contains too many blobs and trees, contrary to when only packing loose objects:

$ git init $ echo a > a; git add a; git commit -m a $ git gc Counting objects: 3, done. Writing objects: 100% (3/3), done. Total 3 (delta 0), reused 0 (delta 0) $ git verify-pack -v .git/objects/pack/pack-b87e61e2dc18ff37624d7f996f1270f923411530.pack 4bba7c0583de30efff4097299f89b199ab4a6dff commit 160 116 12 78981922613b2afb6025042ff6bd878ac1994e85 blob 2 11 167 aaff74984cccd156a469afa7d9ab10e4777beb24 tree 29 39 128 .git/objects/pack/pack-b87e61e2dc18ff37624d7f996f1270f923411530.pack: ok

$ touch .git/objects/pack/pack-b87e61e2dc18ff37624d7f996f1270f923411530.keep $ echo b > b; git add b; git commit -m b $ git gc Counting objects: 3, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), done. Total 3 (delta 0), reused 0 (delta 0) $ git verify-pack -v .git/objects/pack/pack-aa817046e43f278d67c6b85962676246f57bb855.pack 3683f870be446c7cc05ffaef9fa06415276e1828 tree 58 65 158 61780798228d17af2d34fce4cfbdf35556832472 blob 2 11 223 647aed0360e964adc5cedb12e0719fb8bfc05867 commit 208 146 12 .git/objects/pack/pack-aa817046e43f278d67c6b85962676246f57bb855.pack: ok

$ git gc Counting objects: 4, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (4/4), done. Total 4 (delta 0), reused 4 (delta 0) $ git verify-pack -v .git/objects/pack/pack-5f692a665e062dedad7b4baf692517adec37899d.pack 3683f870be446c7cc05ffaef9fa06415276e1828 tree 58 65 158 61780798228d17af2d34fce4cfbdf35556832472 blob 2 11 234 647aed0360e964adc5cedb12e0719fb8bfc05867 commit 208 146 12 78981922613b2afb6025042ff6bd878ac1994e85 blob 2 11 223 .git/objects/pack/pack-5f692a665e062dedad7b4baf692517adec37899d.pack: ok

Mike
Previous: Teemu LikonenNext: Mike Hommey
Message 12 of 35 in “Why repository grows after "git gc"? / Purpose of *.keep files?”
  1. Teemu LikonenMay 12, 2008
  2. Teemu LikonenMay 12, 2008
  3. Johannes SchindelinMay 12, 2008
  4. Teemu LikonenMay 12, 2008
  5. Nicolas PitreMay 12, 2008
  6. Teemu LikonenMay 12, 2008
  7. Nicolas PitreMay 12, 2008
  8. Govind SalinasMay 12, 2008
  9. Nicolas PitreMay 12, 2008
  10. Govind SalinasMay 12, 2008
  11. Teemu LikonenMay 12, 2008
  12. Mike HommeyMay 12, 2008
  13. Mike HommeyMay 12, 2008
  14. Shawn O. PearceMay 13, 2008
  15. Mike HommeyMay 13, 2008
  16. Nicolas PitreMay 14, 2008
  17. Junio C HamanoMay 14, 2008
  18. Juergen RuehleMay 14, 2008
  19. Nicolas PitreMay 14, 2008
  20. Junio C HamanoMay 14, 2008
  21. Linus TorvaldsMay 14, 2008
  22. Linus TorvaldsMay 14, 2008
  23. Nicolas PitreMay 14, 2008
  24. Linus TorvaldsMay 14, 2008
  25. A Large Angry SCMMay 14, 2008
  26. Nicolas PitreMay 12, 2008
  27. David TweedMay 12, 2008
  28. Shawn O. PearceMay 12, 2008
  29. Junio C HamanoMay 12, 2008
  30. Shawn O. PearceMay 13, 2008
  31. Paolo BonziniMay 13, 2008
  32. Shawn O. PearceMay 13, 2008
  33. Teemu LikonenMay 13, 2008
  34. Stephen R. van den BergMay 13, 2008
  35. Teemu LikonenMay 14, 2008

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.