* How to cut extra liftime of expired loose objects
@ 2016-05-30 16:43 Johannes Sixt
2016-05-30 18:24 ` Jeff King
0 siblings, 1 reply; 3+ messages in thread
From: Johannes Sixt @ 2016-05-30 16:43 UTC (permalink / raw)
To: Git Mailing List
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.
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?
-- Hannes
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: How to cut extra liftime of expired loose objects
2016-05-30 16:43 How to cut extra liftime of expired loose objects Johannes Sixt
@ 2016-05-30 18:24 ` Jeff King
2016-05-30 18:53 ` Junio C Hamano
0 siblings, 1 reply; 3+ messages in thread
From: Jeff King @ 2016-05-30 18:24 UTC (permalink / raw)
To: Johannes Sixt; +Cc: Git Mailing List
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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: How to cut extra liftime of expired loose objects
2016-05-30 18:24 ` Jeff King
@ 2016-05-30 18:53 ` Junio C Hamano
0 siblings, 0 replies; 3+ messages in thread
From: Junio C Hamano @ 2016-05-30 18:53 UTC (permalink / raw)
To: Jeff King; +Cc: Johannes Sixt, Git Mailing List
Jeff King <peff@peff.net> writes:
> 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).
Your belief is shared by me.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-05-30 18:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-30 16:43 How to cut extra liftime of expired loose objects Johannes Sixt
2016-05-30 18:24 ` Jeff King
2016-05-30 18:53 ` Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).