builtin/reflog: stop storing default reflog expiry dates globally

When expiring reflog entries, it is possible to configure expiry dates
that depend on the name of the reflog. This requires us to store a
couple of different expiry dates:

  - The default expiry date for reflog entries that aren't otherwise
    specified.

  - The per-reflog expiry date.

  - The currently active set of expiry dates for a given reference.

While the last item is stored in `struct reflog_expire_options`, the
other items aren't, which makes it hard to reuse the structure in other
places.

Refactor the code so that the default expiry date is stored as part of
the structure. The per-reflog expiry dates will be adapted accordingly
in the subsequent commit.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt
2025-04-08 08:22:13 +02:00
committed by Junio C Hamano
parent 2ed8008399
commit 8565827570
2 changed files with 13 additions and 15 deletions

View File

@@ -5,10 +5,16 @@
struct reflog_expire_options {
int stalefix;
int explicit_expiry;
timestamp_t default_expire_total;
timestamp_t expire_total;
timestamp_t default_expire_unreachable;
timestamp_t expire_unreachable;
int recno;
};
#define REFLOG_EXPIRE_OPTIONS_INIT(now) { \
.default_expire_total = now - 30 * 24 * 3600, \
.default_expire_unreachable = now - 90 * 24 * 3600, \
}
struct expire_reflog_policy_cb {
enum {