Re: Garbage collection creates many unpacked objects.
- From
Shawn Pearce <spearce@spearce.org>
- Date
- Oct 10, 2011, 23:49 UTC
- Message-ID
- <CAJo=hJtGyaudyL63AcaG=y4fvfO8Ka3pn=Orta-imb6AUXO6XA@mail.gmail.com>
- In-Reply-To
- <201110101730.43302.mfick@codeaurora.org>
On Mon, Oct 10, 2011 at 16:30, Martin Fick <mfick@codeaurora.org> wrote:
Show 9 quoted lines
> If I clone linus' kernel, delete all the tags, and then run > git gc, it ends up expanding into about 5K of unpacked > objects. The .git size goes from 473M to 511M. This seems > a bit strange no? Shouldn't gcing yield a smaller repo an > fewer unpacked refs? > > If I do this on our internal kernel repo (which has 2Ktags), > it gets much more pathological, it expands to about 1M > objects and grows to about 7G!!!
This is caused by unreachable objects being evicted from packs and stored as loose objects for up to 2 weeks, until the next `git prune` run. I think you can avoid this by using `git repack -a -d` instead of `git gc`, but at the risk that a concurrent modification of the repository may result in corruption due to a race condition between the object being needed, and the object being deleted.