mbox series

[00/20] Stop using `the_repository` in "config.c"

Message ID cover.1723013714.git.ps@pks.im (mailing list archive)
Headers show
Series Stop using `the_repository` in "config.c" | expand

Message

Patrick Steinhardt Aug. 7, 2024, 6:56 a.m. UTC
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(-)

Comments

Ghanshyam Thakkar Aug. 7, 2024, 9:48 a.m. UTC | #1
Patrick Steinhardt <ps@pks.im> wrote:
> 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.

did you mean 'making the dependency explicit'?

Thanks.
Patrick Steinhardt Aug. 7, 2024, 1:11 p.m. UTC | #2
On Wed, Aug 07, 2024 at 03:18:30PM +0530, Ghanshyam Thakkar wrote:
> Patrick Steinhardt <ps@pks.im> wrote:
> > 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.
> 
> did you mean 'making the dependency explicit'?

D'oh, of course. Thanks!

Patrick