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

Re: People unaware of the importance of "git gc"?

From
GSGovind Salinas <govindsalinas@gmail.com>
Date
Sep 5, 2007, 16:47 UTC
Message-ID
<69b0c0350709050947k5e32ba7fj38924a0968569d9a@mail.gmail.com>
In-Reply-To
<alpine.LFD.0.999.0709042355030.19879@evo.linux-foundation.org>
Hi,

I am very new to git but I have thought about this a bit from a user's perspective. I have several thoughts on the matter.

First, I would like to point out that the hg folks like to compare themselves to git a lot and they list the need for manual gc as a reason to choose hg over git. This may not be something that the git community cares about but I thought I would point it out.

Second, it *is* a hassle.  When trying to figure out what I could
convince my co-workers to use, having to gc was something that I did
not think they would be conscious of or care enough about to do.  It
makes git more of a PITA than it could be.  Similarly, I have no idea
when it is a good time to do a gc.  After every commit?  Before push?
What if I never push a repo?  What if it is a remote repo only used to
sync up with my co-workers, do I have to go there and periodically gc?
 This is one reason why I really think that gc should be *plumbing*
and *not* porcelain.

The user should never have to trigger a gc, they should even be discouraged from doing so. That is how other gc systems are. Can you imagine if you had a Java app that had a button on it to do a gc? When should I push it? Should I wait till the system is getting slow or just start spamming the button whenever I'm bored? I know that Java/c#/py GC are different than git gc, but they fulfill the same basic purpose as git gc. IE to clean up unused items and free up resources. Git additionally may do some re-optimization, but that is not relevant to a user.

I know this goes against the general mood here (which seems to be against auto-gc) but I thought I would give my $.02 as a user of git.

Thanks, Govind.

On 9/5/07, Linus Torvalds <torvalds@linux-foundation.org> wrote:
Show 49 quoted lines
>
> So we had a git bof at linux.conf.eu yesterday, and I leart something
> new: even people who have been using git for a long time apparently don't
> necessarily realize the importance of repacking.
>
> James Bottomley (the Linux SCSI maintainer) is an old-time BK user, and
> very comfy using git. But when he was demonstrating things on his poor old
> laptop, simple things like "git branch" literally took a long time, and
> James didn't seem to realize that the fact that he had apparently never
> ever repacked his repository was a big deal.
>
> The kernel archive is a 190MB pack for me fully repacked (I just checked -
> I had actually thought that it was somewhat larger than that), but because
> James hadn't repacked, his .git directory was over a gigabyte in size, and
> his laptop wasn't able to cache anything at all effectively as a result.
>
> Repacking it took over an hour, simply because everything was *so*
> unpacked, and James' kernel repository had something like 92 thousand
> loose objects, and several hundred packfiles. Simple operations that
> really take much less than a second for me ("git branch" takes 0.022s on
> my laptop, which has the same 512M that James had on his) took many many
> seconds as a result, and James seemed to think that this was all normal.
>
> And James didn't even want to repack, because it was so expensive (which
> he knew - he claims to have never ever repacked at all, but maybe he had
> started it and just control-C'd it when it was really slow at some point).
>
> Now, it may be that James didn't realize how important the occasional
> garbage collect is exactly *because* he is an old-timer and used BK long
> before he used git, and just continued using git simply as a BK
> replacement, but it did make me wonder whether maybe this lack of
> repacking awareness is fairly common.
>
> I've been against automatic repacking, but that was really based on what
> appears to be potentially a very wrong assumption, namely that people
> would do the manual repack on their own. If it turns out that people don't
> do it, maybe the right thing for git to do really is to at least notify
> people when they have way too many pack-files and/or loose objects.
>
> I personally repack everything way more often than is necessary, and I had
> kind of assumed that people did it that way, but I was apparently wrong.
> Comments?
>
>                 Linus
> -
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
Previous: David KastrupNext: Carl Worth
Message 83 of 97 in “People unaware of the importance of "git gc"?”
  1. Linus TorvaldsSep 5, 2007
  2. Martin LanghoffSep 5, 2007
  3. Karl HasselströmSep 5, 2007
  4. Junio C HamanoSep 5, 2007
  5. Tomash BrechkoSep 5, 2007
  6. Johan HerlandSep 5, 2007
  7. Matthieu MoySep 5, 2007
  8. Johan HerlandSep 5, 2007
  9. David KastrupSep 5, 2007
  10. Pierre HabouzitSep 5, 2007
  11. David KastrupSep 5, 2007
  12. Matthieu MoySep 5, 2007
  13. Wincent ColaiutaSep 5, 2007
  14. Pierre HabouzitSep 5, 2007
  15. Junio C HamanoSep 5, 2007
  16. Steven GrimmSep 5, 2007
  17. Junio C HamanoSep 5, 2007
  18. Martin LanghoffSep 5, 2007
  19. Matthieu MoySep 5, 2007
  20. Johan De MessemaekerSep 5, 2007
  21. Matthieu MoySep 5, 2007
  22. Jeff KingSep 5, 2007
  23. David KastrupSep 5, 2007
  24. Pierre HabouzitSep 5, 2007
  25. NixSep 5, 2007
  26. Steven GrimmSep 5, 2007
  27. NixSep 5, 2007
  28. Nicolas PitreSep 5, 2007
  29. Junio C HamanoSep 5, 2007
  30. Nicolas PitreSep 5, 2007
  31. NixSep 5, 2007
  32. Junio C HamanoSep 5, 2007
  33. Nicolas PitreSep 5, 2007
  34. Junio C HamanoSep 5, 2007
  35. Carlos RicaSep 6, 2007
  36. David KastrupSep 6, 2007
  37. Junio C HamanoSep 5, 2007
  38. Invoke "git gc --auto" from commit, merge, am and rebase.Junio C Hamano, Sep 5, 2007
  39. Shawn O. PearceSep 6, 2007
  40. Invoke "git gc --auto" from "git add" and "git fetch"Junio C Hamano, Sep 5, 2007
  41. Johannes SchindelinSep 6, 2007
  42. Alex RiesenSep 5, 2007
  43. Russ DillSep 6, 2007
  44. Shawn O. PearceSep 6, 2007
  45. Andreas EricssonSep 6, 2007
  46. Shawn O. PearceSep 6, 2007
  47. Steven GrimmSep 6, 2007
  48. Shawn O. PearceSep 6, 2007
  49. Johannes SchindelinSep 6, 2007
  50. Junio C HamanoSep 6, 2007
  51. Linus TorvaldsSep 6, 2007
  52. Steven GrimmSep 6, 2007
  53. Subject: [PATCH] git-merge-packJunio C Hamano, Sep 6, 2007
  54. Linus TorvaldsSep 6, 2007
  55. Nicolas PitreSep 7, 2007
  56. Junio C HamanoSep 7, 2007
  57. Nicolas PitreSep 7, 2007
  58. Shawn O. PearceSep 7, 2007
  59. Junio C HamanoSep 7, 2007
  60. make sha1_file.c::matches_pack_name() available to othersJunio C Hamano, Sep 8, 2007
  61. pack-objects --repack-unpackedJunio C Hamano, Sep 8, 2007
  62. Johannes SixtSep 7, 2007
  63. Junio C HamanoSep 7, 2007
  64. Andy ParkinsSep 7, 2007
  65. Shawn O. PearceSep 7, 2007
  66. Johannes SchindelinSep 7, 2007
  67. What's so special about objects/17/ ?Ævar Arnfjörð Bjarmason, Oct 7, 2018
  68. Johannes SixtOct 7, 2018
  69. Ævar Arnfjörð BjarmasonOct 7, 2018
  70. Johannes SixtOct 7, 2018
  71. Junio C HamanoOct 8, 2018
  72. Junio C HamanoOct 7, 2018
  73. Junio C HamanoOct 7, 2018
  74. Stefan BellerOct 8, 2018
  75. Junio C HamanoOct 9, 2018
  76. Stefan BellerOct 9, 2018
  77. Junio C HamanoOct 10, 2018
  78. Stefan BellerOct 10, 2018
  79. Ævar Arnfjörð BjarmasonOct 8, 2018
  80. Junio C HamanoOct 9, 2018
  81. Stefan BellerOct 9, 2018
  82. David KastrupSep 5, 2007
  83. Govind SalinasSep 5, 2007
  84. Carl WorthSep 5, 2007
  85. Jing XueSep 5, 2007
  86. Steven GrimmSep 5, 2007
  87. NixSep 5, 2007
  88. J. Bruce FieldsSep 5, 2007
  89. Brandon CaseySep 5, 2007
  90. David KastrupSep 5, 2007
  91. J. Bruce FieldsSep 5, 2007
  92. David KastrupSep 5, 2007
  93. Mike HommeySep 5, 2007
  94. Alex RiesenSep 5, 2007
  95. Steven GrimmSep 5, 2007
  96. David KastrupSep 5, 2007
  97. Fwd: [PATCH] Invoke "git gc --auto" from "git add" and "git fetch"Govind Salinas, Sep 5, 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.