This series refactors various small bits of builtin/reflog.c (e.g. using a "struct string_list" now), and finally makes it handle the "--verbose" output, instead of telling the files backend to emit that same verbose output. This means that when we start to integrate "reftable" the new backend won't need to implement verbose reflog output, it will just work. This is a sort-of v2[1]. I ejected the changes at the end to add better --progress output to "git reflog". Those fixes are worthwhile, but hopefully this smaller & easier to review series can be queued up first, we can do those UX improvements later. 1. https://lore.kernel.org/git/cover-00.12-00000000000-20211130T213319Z-avarab@xxxxxxxxx/ Ævar Arnfjörð Bjarmason (9): reflog delete: narrow scope of "cmd" passed to count_reflog_ent() reflog expire: narrow scope of "cb" in cmd_reflog_expire() reflog: change one->many worktree->refnames to use a string_list reflog expire: don't do negative comparison on enum values reflog expire: refactor & use "tip_commit" only for UE_NORMAL reflog expire: don't use lookup_commit_reference_gently() reflog: reduce scope of "struct rev_info" refs files-backend: assume cb->newlog if !EXPIRE_REFLOGS_DRY_RUN reflog + refs-backend: move "verbose" out of the backend builtin/reflog.c | 208 +++++++++++++++++++++++-------------------- refs.h | 3 +- refs/files-backend.c | 44 +++++---- 3 files changed, 134 insertions(+), 121 deletions(-) Range-diff against v1: 1: 99e8a639163 = 1: 22c8119640c reflog delete: narrow scope of "cmd" passed to count_reflog_ent() 2: c424b26b4fe = 2: b8e84538427 reflog expire: narrow scope of "cb" in cmd_reflog_expire() 3: 5a54b04a13e = 3: c0e190e46cf reflog: change one->many worktree->refnames to use a string_list 4: a7a2dfd1406 = 4: e42fac1b518 reflog expire: don't do negative comparison on enum values 5: de162a476c1 = 5: 39263cd00ae reflog expire: refactor & use "tip_commit" only for UE_NORMAL 6: eb3dd3fa8b9 = 6: c71aab5845e reflog expire: don't use lookup_commit_reference_gently() 7: 3aab4a4a436 = 7: 2fb33ef2546 reflog: reduce scope of "struct rev_info" 8: adbec242a7a = 8: f9fe6a2cfb0 refs files-backend: assume cb->newlog if !EXPIRE_REFLOGS_DRY_RUN 9: 6a8f3915898 = 9: 28aa0aa6e30 reflog + refs-backend: move "verbose" out of the backend 10: f54dee1f1cc < -: ----------- reflog expire: add progress output on --stale-fix 11: 794e6e677a8 < -: ----------- gc + reflog: emit progress output from "reflog expire --all" 12: fc2b15d0abe < -: ----------- gc + reflog: don't stall before initial "git gc" progress output -- 2.34.1.1020.gc80c40b6642