Hi, this patch series aims to convert the ref subsystem to rely less on `the_repository`. The focus of it is to remove those cases where we have two variants of the same function: one with a `struct ref_store`, and one without. There are still other cases in "refs.c" where we implicitly assume `the_repository`, but those require a bit more thought and will thus be handled in a subsequent patch series. The biggest part of this patch is a set of new Coccinelle rules added by patch 3. Those rules are applied in patch 4 and the now-unused functions that do not take a `struct ref_store` are then removed in patch 5. This of course results in quite a lot of churn, but given that it is fully automated via Coccinelle I don't think it is particularly bad. It is quite likely that this patch series will impact in-flight patch series. I'd be quite happy to drop the last patch that removes the old interfaces to make this a bit less painful. Patrick Patrick Steinhardt (5): refs: introduce missing functions that accept a `struct ref_store` refs: add `exclude_patterns` parameter to `for_each_fullref_in()` cocci: introduce rules to transform "refs" to pass ref store cocci: apply rules to rewrite callers of "refs" interfaces refs: remove functions without ref store add-interactive.c | 17 ++- bisect.c | 25 +++-- blame.c | 4 +- branch.c | 5 +- builtin/am.c | 38 ++++--- builtin/bisect.c | 44 +++++--- builtin/blame.c | 4 +- builtin/branch.c | 49 +++++---- builtin/checkout.c | 35 +++--- builtin/clone.c | 36 +++--- builtin/describe.c | 3 +- builtin/fast-import.c | 11 +- builtin/fetch.c | 20 +++- builtin/fsck.c | 11 +- builtin/gc.c | 3 +- builtin/log.c | 6 +- builtin/merge.c | 34 ++++-- builtin/name-rev.c | 5 +- builtin/notes.c | 26 +++-- builtin/pack-objects.c | 10 +- builtin/pull.c | 2 +- builtin/rebase.c | 18 +-- builtin/receive-pack.c | 15 ++- builtin/reflog.c | 25 +++-- builtin/remote.c | 37 ++++--- builtin/repack.c | 7 +- builtin/replace.c | 9 +- builtin/reset.c | 13 ++- builtin/rev-parse.c | 25 +++-- builtin/show-branch.c | 22 ++-- builtin/show-ref.c | 19 +++- builtin/stash.c | 23 ++-- builtin/submodule--helper.c | 7 +- builtin/symbolic-ref.c | 13 ++- builtin/tag.c | 11 +- builtin/update-index.c | 2 +- builtin/update-ref.c | 21 ++-- builtin/worktree.c | 19 ++-- bundle-uri.c | 12 +- bundle.c | 2 +- commit-graph.c | 3 +- commit.c | 3 +- config.c | 3 +- contrib/coccinelle/refs.cocci | 103 +++++++++++++++++ delta-islands.c | 3 +- fetch-pack.c | 6 +- fmt-merge-msg.c | 4 +- help.c | 5 +- http-backend.c | 13 ++- log-tree.c | 9 +- ls-refs.c | 10 +- midx-write.c | 3 +- negotiator/default.c | 3 +- negotiator/skipping.c | 3 +- notes-cache.c | 6 +- notes-merge.c | 2 +- notes-utils.c | 7 +- notes.c | 5 +- reachable.c | 5 +- ref-filter.c | 35 ++++-- reflog-walk.c | 27 +++-- reflog.c | 20 ++-- refs.c | 200 ++++------------------------------ refs.h | 84 +++----------- remote.c | 38 ++++--- reset.c | 29 +++-- revision.c | 27 +++-- sequencer.c | 61 ++++++----- server-info.c | 3 +- setup.c | 2 +- shallow.c | 16 ++- submodule.c | 6 +- transport-helper.c | 29 +++-- transport.c | 16 ++- upload-pack.c | 20 ++-- walker.c | 6 +- wt-status.c | 22 ++-- 77 files changed, 845 insertions(+), 680 deletions(-) create mode 100644 contrib/coccinelle/refs.cocci -- 2.45.0
Attachment:
signature.asc
Description: PGP signature