Re: [RFC PATCH 2/2] config: add 'config.superproject' file
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 9, 2021, 22:29 UTC
- Message-ID
- <xmqqk0pbm6qt.fsf@gitster.g>
- In-Reply-To
- <CAHd-oW4VoBbZHc7cLdn0LPM531qNDGOfwPZdKiKoG4BoRFaqdg@mail.gmail.com>
Matheus Tavares Bernardino <matheus.bernardino@usp.br> writes:
Show 33 quoted lines
> Hi, Emily > > I'm not familiar enough with this code to give a full review and I > imagine you probably want comments more focused on the design level, > while this is an RFC, but here are some small nitpicks I found while > reading the patch. I Hope it helps :) > > On Thu, Apr 8, 2021 at 8:39 PM Emily Shaffer <emilyshaffer@google.com> wrote: >> >> diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt >> index 4b4cc5c5e8..a33136fb08 100644 >> --- a/Documentation/git-config.txt >> +++ b/Documentation/git-config.txt >> @@ -48,7 +48,7 @@ unset an existing `--type` specifier with `--no-type`. >> >> When reading, the values are read from the system, global and >> repository local configuration files by default, and options >> -`--system`, `--global`, `--local`, `--worktree` and >> +`--system`, `--global`, `--superproject`, `--local`, `--worktree` and >> `--file <filename>` can be used to tell the command to read from only >> that location (see <<FILES>>). >> >> @@ -127,6 +127,17 @@ rather than from all available files. >> + >> See also <<FILES>>. >> >> +--superproject:: >> + For writing options: write to the superproject's >> + `.git/config.superproject` file, even if run from a submodule of that >> + superproject. > > Hmm, I wonder what happens if a repo is both a submodule and a > superproject (i.e. in case of nested submodules).
Another thing I am not sure about the design is that a repository can be shared as a submodule by more than one superprojects. The superprojects may want their submodule checkouts at different submodule commits, but that is something doable by having multiple worktrees connected to a single submodule repository.
I think our design principle has been that it is perfectly OK for a superproject to be in total control if its submodules, but submodules should not even be aware of being used as a submodule by a superproject, and that allows a submodule repository to be shared by multiple superprojects. As "write to the superproject's X file" requires a submodule to know who THE superproject of itself is, this feature itself (not the implementation) feels somewhat iffy.