Subject: [PATCH 0/2] refs/files: use heuristic to decide whether to repack with `--auto`

From: Patrick Steinhardt <[email-masked]>
Date: Mon, 2 Sep 2024 15:48:29 +0200

Hi,

I recently noticed that `git maintenance run --auto` always ends up
repacking loose references. This is because the "files" backend does not
yet have any heuristics wired up to decide whether or not packing refs
is in order. The consequence is that we always decided to pack them,
which is of course quite a waste of time.

This small patch series fixes this by introducing a new heuristic for
the "files" backend. The heuristic is rather simple: the bigger the
"packed-refs" file, the more loose refs we require before we decide to
repack. We have been using this heurisitc successfully for a long time
in Gitaly by now.

Thanks!

Patrick

Patrick Steinhardt (2):
  t0601: merge tests for auto-packing of refs
  refs/files: use heuristic to decide whether to repack with `--auto`

 refs/files-backend.c          |  75 +++++++++++++++++++++++++
 refs/packed-backend.c         |  18 ++++++
 refs/packed-backend.h         |   7 +++
 t/t0601-reffiles-pack-refs.sh | 101 ++++++++++++++++++++++++++++------
 4 files changed, 185 insertions(+), 16 deletions(-)

-- 
2.46.0.421.g159f2d50e7.dirty