]> git.ipfire.org Git - thirdparty/git.git/commit
maintenance: add checking logic in `pack_refs_condition()`
authorKarthik Nayak <karthik.188@gmail.com>
Thu, 6 Nov 2025 08:22:33 +0000 (09:22 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 6 Nov 2025 18:00:07 +0000 (10:00 -0800)
commitf9bf46ebac3e34f40921fdf8114738ad9defd46b
treea88a4ef5acd9fcfa690116bafe35b438f120efea
parent5a3355f3d94f1ea70751f32d5a55232b4d97eb41
maintenance: add checking logic in `pack_refs_condition()`

The 'git-maintenance(1)' command supports an '--auto' flag. Usage of the
flag ensures to run maintenance tasks only if certain thresholds are
met. The heuristic is defined on a task level, wherein each task defines
an 'auto_condition', which states if the task should be run.

The 'pack-refs' task is hard-coded to return 1 as:
1. There was never a way to check if the reference backend needs to be
optimized without actually performing the optimization.
2. We can pass in the '--auto' flag to 'git-pack-refs(1)' which would
optimize based on heuristics.

The previous commit added a `refs_optimize_required()` function, which
can be used to check if a reference backend required optimization. Use
this within `pack_refs_condition()`.

This allows us to add a 'git maintenance is-needed' subcommand which can
notify the user if maintenance is needed without actually performing the
optimization. Without this change, the reference backend would always
state that optimization is needed.

Since we import 'revision.h', we need to remove the definition for
'SEEN' which is duplicated in the included header.

Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/gc.c
object.h