Subject: Re: Improve support for 'git config gc.reflogExpire never'

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Tue, 19 Mar 2019 10:30:17 +0100

On Fri, Mar 08 2019, Mikko Rantalainen wrote:

> If I configure bare repo with
>
> git config gc.pruneExpire never
> git config gc.reflogExpire never
>
> then git will never garbage collect any commit ever stored in the repo.
> This is what I want.
>
> However, all commits referenced only via reflog are kept as loose
> objects and will not be included in packs. In long run this will cause
>
> warning: There are too many unreachable loose objects; run 'git prune'
> to remove them.
>
> and the performance of the repository will slowly decrease.
>
>
> If I have understood correctly, git should notice that reflog will keep
> referenced commits forever and include all those commits in packs
> instead of keeping those as loose forever.
>
> A more generic behavior might be to always compress all loose commits in
> (one?) special pack so the performance would stay good even if
> gc.reflogExpire is very long instead of "never".
>
>
> Discussion about this case:
> https://stackoverflow.com/questions/28092485/how-to-prevent-garbage-collection-in-git
> https://stackoverflow.com/questions/55043693/is-it-possible-to-get-git-gc-to-pack-reflog-objects

Just to add to Jeff's E-Mail, the case he's describing is something I
wrote a stand-alone test case for here:
https://public-inbox.org/git/[email-masked]/

Try to run it, it's probably the same behavior you're seeing, and it has
nothing per-se to do with reflogs.