git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: git@vger.kernel.org
Subject: [PATCH 0/5] refs: remove functions without ref store
Date: Fri, 3 May 2024 08:27:55 +0200	[thread overview]
Message-ID: <cover.1714717057.git.ps@pks.im> (raw)

[-- Attachment #1: Type: text/plain, Size: 4754 bytes --]

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 #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

             reply	other threads:[~2024-05-03  6:28 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-03  6:27 Patrick Steinhardt [this message]
2024-05-03  6:27 ` [PATCH 1/5] refs: introduce missing functions that accept a `struct ref_store` Patrick Steinhardt
2024-05-03 17:11   ` Junio C Hamano
2024-05-03  6:28 ` [PATCH 2/5] refs: add `exclude_patterns` parameter to `for_each_fullref_in()` Patrick Steinhardt
2024-05-03 18:44   ` Taylor Blau
2024-05-03  6:28 ` [PATCH 3/5] cocci: introduce rules to transform "refs" to pass ref store Patrick Steinhardt
2024-05-03  6:28 ` [PATCH 4/5] cocci: apply rules to rewrite callers of "refs" interfaces Patrick Steinhardt
2024-05-03 18:48   ` Taylor Blau
2024-05-03 19:20     ` Junio C Hamano
2024-05-06  6:35       ` Patrick Steinhardt
2024-05-03  6:28 ` [PATCH 5/5] refs: remove functions without ref store Patrick Steinhardt
2024-05-06  1:15   ` James Liu
2024-05-03 17:24 ` [PATCH 0/5] " Junio C Hamano
2024-05-03 17:35   ` Jeff King
2024-05-03 18:24     ` Junio C Hamano
2024-05-06  6:44       ` Patrick Steinhardt
2024-05-06 16:14         ` Junio C Hamano
2024-05-07  5:56           ` Patrick Steinhardt
2024-05-07  6:20             ` Junio C Hamano
2024-05-07  6:30               ` Patrick Steinhardt
2024-05-07 15:46                 ` Junio C Hamano
2024-05-09 16:55         ` Jeff King
2024-05-10  5:54           ` Patrick Steinhardt
2024-05-03 18:58     ` Taylor Blau
2024-05-03 19:35       ` Junio C Hamano
2024-05-07  7:11 ` [PATCH v2 " Patrick Steinhardt
2024-05-07  7:11   ` [PATCH v2 1/5] refs: introduce missing functions that accept a `struct ref_store` Patrick Steinhardt
2024-05-07  7:11   ` [PATCH v2 2/5] refs: add `exclude_patterns` parameter to `for_each_fullref_in()` Patrick Steinhardt
2024-05-07  7:11   ` [PATCH v2 3/5] cocci: introduce rules to transform "refs" to pass ref store Patrick Steinhardt
2024-05-07  7:11   ` [PATCH v2 4/5] cocci: apply rules to rewrite callers of "refs" interfaces Patrick Steinhardt
2024-05-07  7:11   ` [PATCH v2 5/5] refs: remove functions without ref store Patrick Steinhardt
2024-05-07 17:27   ` [PATCH v2 0/5] " Taylor Blau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1714717057.git.ps@pks.im \
    --to=ps@pks.im \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).