[PATCH 00/20] Stop using `the_repository` in "config.c"
STALE778d
From: Patrick Steinhardt <hidden>
Date: 2024-08-07 06:56:49
Revision v1 of 2 in this series.
Revisions (2)
- v1 current
- v2 [diff vs current]
Hi,
I found that there had been a bunch of callsites in code
not marked with `USE_THE_REPOSITORY_VARIABLE` that still implicitly
relied on `the_repository` due to calling interfaces of "config.c".
This patch series has the goal of fixing that and making the dependency
implicit. This is done by making "config.c" stop using `the_repository`
while moving its interfaces that do use it into "config.h", guarded by
the `USE_THE_REPOSITORY_VARIABLE` macro.
The series is structured as follows:
- Patches 1 to 7 adapt "path.{c,h}" to become `the_repository`-clean.
This is required because "config.c" relies on the "path" subsystem
quite a lot.
- Patches 8 and 9 introduce functions that take a `struct repository`
where we didn't yet equivalents for the repo-less variants.
- Patches 10 to 16 adapt various functions to take a `struct
repository` as input.
- Patches 17 and 18 fix up some functions that take a `struct
repository`, but still rely on `the_repository`.
- Patches 19 and 20 then hide config functions that rely on
`the_repository` behind `USE_THE_REPOSITORY_VARIABLE`.
The series is built on top of `master` at 406f326d27 (The second batch,
2024-08-01) with ps/refs-wo-the-repository at 9d36dbd1ff (refs/reftable:
stop using `the_repository`, 2024-07-30) merged into it.
Thanks!
Patrick
Patrick Steinhardt (20):
path: expose `do_git_path()` as `repo_git_pathv()`
path: expose `do_git_common_path()` as `strbuf_git_common_pathv()`
editor: do not rely on `the_repository` for interactive edits
hooks: remove implicit dependency on `the_repository`
path: stop relying on `the_repository` when reporting garbage
path: stop relying on `the_repository` in `worktree_git_path()`
path: hide functions using `the_repository` by default
config: introduce missing setters that take repo as parameter
config: expose `repo_config_clear()`
config: pass repo to `git_config_get_index_threads()`
config: pass repo to `git_config_get_split_index()`
config: pass repo to `git_config_get_max_percent_split_change()`
config: pass repo to `git_config_get_expiry()`
config: pass repo to `git_config_get_expiry_in_days()`
config: pass repo to `git_die_config()`
config: pass repo to functions that rename or copy sections
config: don't have setters depend on `the_repository`
config: don't depend on `the_repository` with branch conditions
global: prepare for hiding away repo-less config functions
config: hide functions using `the_repository` by default
add-patch.c | 3 +-
builtin/am.c | 9 +-
builtin/branch.c | 7 +-
builtin/bugreport.c | 2 +-
builtin/checkout.c | 2 +-
builtin/clone.c | 2 +-
builtin/config.c | 16 +-
builtin/count-objects.c | 2 +-
builtin/fast-import.c | 4 +-
builtin/fsck.c | 2 +-
builtin/gc.c | 8 +-
builtin/hook.c | 2 +-
builtin/merge.c | 2 +-
builtin/notes.c | 2 +-
builtin/rebase.c | 2 +-
builtin/receive-pack.c | 10 +-
builtin/remote.c | 4 +-
builtin/submodule--helper.c | 2 +-
builtin/update-index.c | 4 +-
builtin/worktree.c | 6 +-
commit.c | 2 +-
compat/fsmonitor/fsm-ipc-darwin.c | 2 +
compat/precompose_utf8.c | 1 +
config.c | 225 ++++++++---------------
config.h | 285 +++++++++++++++++++++---------
connect.c | 2 +
credential.c | 2 +
daemon.c | 2 +
editor.c | 14 +-
editor.h | 3 +-
fsmonitor.c | 2 +
gpg-interface.c | 2 +
graph.c | 2 +
hook.c | 21 +--
hook.h | 13 +-
imap-send.c | 2 +
mailinfo.c | 2 +
merge-ll.c | 2 +
parallel-checkout.c | 2 +
path.c | 97 +++-------
path.h | 167 +++++++++++------
protocol.c | 2 +
read-cache.c | 22 +--
refs.c | 4 +-
refs/packed-backend.c | 2 +
refs/reftable-backend.c | 2 +
rerere.c | 4 +-
reset.c | 2 +-
revision.c | 2 +-
sequencer.c | 6 +-
sideband.c | 2 +
submodule.c | 2 +-
t/helper/test-advise.c | 2 +
t/helper/test-config.c | 2 +
t/helper/test-userdiff.c | 2 +
trailer.c | 2 +
transport.c | 2 +-
versioncmp.c | 2 +
worktree.c | 2 +-
wt-status.c | 14 +-
60 files changed, 564 insertions(+), 455 deletions(-)
--
2.46.0.dirty
Attachments
- signature.asc [application/pgp-signature] 833 bytes