Merge branch 'kn/maintenance-is-needed' into next

"git maintenance" command learned "is-needed" subcommand to tell if
it is necessary to perform various maintenance tasks.

* kn/maintenance-is-needed:
  maintenance: add 'is-needed' subcommand
  maintenance: add checking logic in `pack_refs_condition()`
  refs: add a `optimize_required` field to `struct ref_storage_be`
  reftable/stack: add function to check if optimization is required
  reftable/stack: return stack segments directly
This commit is contained in:
Junio C Hamano
2025-11-19 10:58:40 -08:00
14 changed files with 285 additions and 44 deletions

View File

@@ -132,6 +132,17 @@ static int debug_optimize(struct ref_store *ref_store, struct refs_optimize_opts
return res;
}
static int debug_optimize_required(struct ref_store *ref_store,
struct refs_optimize_opts *opts,
bool *required)
{
struct debug_ref_store *drefs = (struct debug_ref_store *)ref_store;
int res = drefs->refs->be->optimize_required(drefs->refs, opts, required);
trace_printf_key(&trace_refs, "optimize_required: %s, res: %d\n",
required ? "yes" : "no", res);
return res;
}
static int debug_rename_ref(struct ref_store *ref_store, const char *oldref,
const char *newref, const char *logmsg)
{
@@ -440,6 +451,8 @@ struct ref_storage_be refs_be_debug = {
.transaction_abort = debug_transaction_abort,
.optimize = debug_optimize,
.optimize_required = debug_optimize_required,
.rename_ref = debug_rename_ref,
.copy_ref = debug_copy_ref,