On Thu, Nov 13, 2008 at 06:53:29PM -0600, Brandon Casey wrote: > > -Ad is nice regarding it's safety-net value, but eg. after a large > > filter-branch run, when refs/original and the reflogs have been cleaned, > > you just want to get rid of all those old unreachable objects, > > immediately. For example after importing and massaging some large > > history from SVN, the -Ad behaviour is definitely _not_ what I want > > there. Writing a few thousand loose objects just to prune them is just a > > waste of time. > > hmm. That's a good point. Even though I think it is likely that the thousand > loose objects that are written will be small commit objects and not blobs, > this use case may be enough to trump the safety benefit provided by the > proposed change. The problem is even small commit objects take a full 4k (or whatever your filesystem block size is) when they are ejected as loose objects. As a result, the current "git gc" defaults can end up requiring far *more* disk space than before, certainly while it is running, and sometimes even after the "git gc" completes. (I then end up running "git prune" to complete deletion of the ejected objects.) Sometimes this gets so annoying that I'll run the individual commands run by git-gc by hand, except I use git repack -ad instead of git repack -A. If we are going to get rid of the distinction between git repack -a and git repack -A, perhaps there can be a config option to force the immediate ejection of the unreachable objects, instead of creating loose objects? If the goal is safety, it would be nice if git repack could create a separate pack that only contained unreachable objects, and then have git prune be able to remove a pack if it only contains unreachable objects. - Ted -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html