On Mon, May 30, 2016 at 06:43:07PM +0200, Johannes Sixt wrote: > I think there is logic somewhere in git gc or its minions that gives expired > objects that have been packed a two weeks extra life time as loose objects. > > That is, reachable loose objects are moved to a pack, but those objects that > were packed, but become unreachable due to expired reflogs, are evicted from > the pack and live for another two weeks or so as loose objects. Sort of. The loose objects should get the mtime of the pack, which is likely newer than 2 weeks. So it's not a 2-week extension, but it may take up to 2 weeks for them to go away (and if the pack is already more than 2 weeks old, the objects are dropped without even loosening). > As a consequence of this, I always have a few thousand loose objects in my > busy repositories, no matter how often I collect garbage. Is there a knob > that removes the extra lease of life of objects without reducing the usual > expiration times of reflogs etc? gc.pruneExpire should do this. I have run into this, too, and it interacts annoyingly with the background-gc (which complains "you have too many objects; run git-prune", leaves that in a .lock file, and then every subsequent auto-gc spews it at me). I think we should consider dropping the default time to something more like 1 day. The 2-week period predates reflogs, I believe (OTOH, it does save objects which you might have used with "git add" but never actually committed). -Peff -- 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