Re: [PATCH 0/7] setup: enforce repo passed to `create_repository()` has no state
- From
Karthik Nayak <karthik.188@gmail.com>
- Date
- Sep 28, 2026, 09:20 UTC
- Message-ID
- <CAOLa=ZSX0e25wK5qQwznXN9rVM+WHn8631pkTEN9Zm-BrXfEsg@mail.gmail.com>
- In-Reply-To
- <20260924-pks-create-repository-stateless-v1-0-11499557cf31@pks.im>
Patrick Steinhardt <ps@pks.im> writes:
Show 31 quoted lines
> Hi, > > when creating a new repository via `create_repository()` we pass in a > repository. This repository is acting as an in/out parameter: the caller > expects that it will be fully configured after the call, but the > function itself also uses some information from the passed-in repository > to figure out how exactly we want to create it. > > This interface is quite confusing, as it's not obvious at all what > configuration of the repository is relevant. We have thus over a couple > of patch series reduced the use of the parameter as in/out parameter. So > now, the only piece of info that is still being propagated via the repo > is "core.sharedRepository". > > This patch series cleans up that last remaining part so that the repo > becomes purely an out-parameter. To ensure that this is the case we also > start to `repo_clear()` it as a first step. > > Besides simplifying the interface, the intent is also to go further into > the direction of unifying repository initialization in a follow-up patch > series. > > The series is built on top of 0f8e75abeb (Revert "Merge branch > 'en/no-amend-during-conflicts'", 2026-09-23) with > ps/odb-alternates-at-creation at d1019ac894 (odb/source: remove the > ability to write alternates, 2026-09-10) merged into it. > > Thanks! > > Patrick >
The series was a good read and I didn't see anything that needed changes. Thanks
Show 24 quoted lines
> --- > Patrick Steinhardt (7): > path: drop useless `safe_create_leading_directories_1()` > path: introduce `safe_create_leading_directories_no_share_const()` > builtin/init: refactor messy creation of leading directories > builtin/init: move handling of "core.sharedRepository" into "setup.c" > builtin/clone: don't apply "core.sharedRepository" to leading dirs > repository: adapt `repo_clear()` to fully reset the repository > setup: enforce that passed-in repo does not carry relevant state > > builtin/clone.c | 4 ++-- > builtin/init-db.c | 15 ++------------- > path.c | 13 ++++++------- > path.h | 1 + > repository.c | 37 ++++++++++++++++++------------------- > repository.h | 2 +- > setup.c | 6 ++++++ > t/t1301-shared-repo.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ > 8 files changed, 78 insertions(+), 42 deletions(-) > > > --- > base-commit: 6b6fe25b12e5324f2fdaf8c73816b9d2207e9404 > change-id: 20260916-pks-create-repository-stateless-f0ca03cca689