From: Patrick Steinhardt Date: Mon, 28 Sep 2026 07:15:56 GMT Subject: Re: [PATCH 2/7] path: introduce `safe_create_leading_directories_no_share_const()` Message-ID: In-Reply-To: <4770b19f-9a8d-4a4c-8cc6-745aa2868b94@gmail.com> On Sat, Sep 26, 2026 at 01:19:42AM +0530, Kaartic Sivaraam wrote: > On 9/24/26 14:49, Patrick Steinhardt wrote: > > > > diff --git a/path.h b/path.h > > index 7e7408dd05..e2d62c4978 100644 > > --- a/path.h > > +++ b/path.h > > @@ -254,6 +254,7 @@ enum scld_error safe_create_leading_directories(struct repository *repo, char *p > > enum scld_error safe_create_leading_directories_const(struct repository *repo, > > const char *path); > > enum scld_error safe_create_leading_directories_no_share(char *path); > > +enum scld_error safe_create_leading_directories_no_share_const(const char *path); > > > > nit: All other variants are mentioned in the documentation blurb just above > the declarations. Would it also be worth mentioning this new one there? That's fair. I find the comment to be somewhat unwieldy overall. How about this diff? diff --git a/path.h b/path.h index 7e7408dd05..922bd6e377 100644 --- a/path.h +++ b/path.h @@ -234,14 +234,11 @@ int safe_create_dir_in_gitdir(struct repository *repo, const char *path); * race, callers might want to try invoking the function again when it * returns SCLD_VANISHED. * - * safe_create_leading_directories() temporarily changes path while it - * is working but restores it before returning. - * safe_create_leading_directories_const() doesn't modify path, even - * temporarily. Both these variants adjust the permissions of the - * created directories to honor core.sharedRepository, so they are best - * suited for files inside the git dir. For working tree files, use - * safe_create_leading_directories_no_share() instead, as it ignores - * the core.sharedRepository setting. + * The default variants honor "core.sharedRepository" and temporarily modify + * `path`. Note that this configuration should be honored for all files in the + * git directory. The `no_share()` variants ignore "core.sharedRepository", + * and should be used for working tree files. The `const()` variants do not + * modify `path`. */ enum scld_error { SCLD_OK = 0, Patrick