Re: [PATCH v2 3/6] remote: remove the_repository from some functions
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 17, 2025, 22:46 UTC
- Message-ID
- <xmqq7c1auguv.fsf@gitster.g>
- In-Reply-To
- <20250617-jk-submodule-helper-use-url-v2-3-04cbb003177d@gmail.com>
Jacob Keller <jacob.e.keller@intel.com> writes:
Show 24 quoted lines
> From: Jacob Keller <jacob.keller@gmail.com> > > The remotes_remote_get_1 (and its caller, remotes_remote_get, have an > implicit dependency on the_repository due to calling > read_branches_file() and read_remotes_file(), both of which use > the_repository. The branch_get() function calls set_merge() which has an > implicit dependency on the_repository as well. > > Because of this use of the_repository, the helper functions cannot be > used in code paths which operate on other repositories. A future > refactor of the submodule--helper will want to make use of some of these > functions. > > Refactor to break the dependency by passing struct repository *repo > instead of struct remote_state *remote_state in a few places. > > The public callers and many other helper functions still depend on > the_repository. A repo-aware function will be exposed in a following > change for git submodule--helper. > > Signed-off-by: Jacob Keller <jacob.keller@gmail.com> > --- > remote.c | 58 ++++++++++++++++++++++++++++------------------------------ > 1 file changed, 28 insertions(+), 30 deletions(-)
As exactly one remote_state instance belongs to each repository ever since fd3cb050 (remote: move static variables into per-repository struct, 2021-11-17) defined the former, and remote_state is not shared across repository, passing the repository instance that owns a remote_state instance and pick up the .remote_state member out of it as needed would give us the right remote_state, and gives us access to the repository instance it owns it.
Makes perfect sense,