git-gc doesn't clean up leftover objects after git-filter-branch unless you clone first
- From
Avery Pennarun <apenwarr@gmail.com>
- Date
- Apr 23, 2008, 15:41 UTC
- Message-ID
- <32541b130804230841h32c07f3arc94cccfaf0b156a3@mail.gmail.com>
On 4/23/08, Johannes Sixt <j.sixt@viscovery.net> wrote:
Show 12 quoted lines
> Peter Karlsson schrieb: > > [Not seeing any unreachable objects] > > > Jeff King: > >> Did you remove refs/original/ ? > > > > That, and cloned the repository to a new location after the conversion, > > and removing the references to "origin" there. It does seem that the > > objects are still there, but I can't see them with "gitk --all". > > Did you clone locally? Then you must use the file:// protocol, otherwise > everything is hard-linked from the origin.
This question has come up at least once a week since I subscribed to the list. I can think of these solutions:
- Add a note to the git-gc and/or git-repack man page about how hidden refs can impact the cleanup.
- Add an option to make git-clone *not* hardlink stuff; its different behaviour for hardlinking vs. file:// seems to be very confusing.
- Make git-gc give a warning when there are some objects that are only referenced via the reflog or refs/original. (I suspect this would trigger too often though.)
- Give git-gc a "really, I'm serious" option that makes it ignore the reflog and refs/original.
Thoughts?
Avery