* [PATCH] doc: remove mentions of .gitmodules !command syntax @ 2023-07-12 16:02 pvutov 2023-07-12 16:40 ` Junio C Hamano 0 siblings, 1 reply; 22+ messages in thread From: pvutov @ 2023-07-12 16:02 UTC (permalink / raw) To: git; +Cc: Petar Vutov From: Petar Vutov <pvutov@imap.cc> To mitigate CVE-2019-19604, the capability to configure `git submodule update` to execute custom commands was removed in v2.20.2. The git-submodule documentation still mentions the now-unsupported syntax, which is misleading. Remove the leftover documentation. Signed-off-by: Petar Vutov <pvutov@imap.cc> --- Documentation/git-submodule.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt index 4d3ab6b9f9..b40ac72f75 100644 --- a/Documentation/git-submodule.txt +++ b/Documentation/git-submodule.txt @@ -163,12 +163,6 @@ checked out in the submodule. The following 'update' procedures are only available via the `submodule.<name>.update` configuration variable: - custom command;; arbitrary shell command that takes a single - argument (the sha1 of the commit recorded in the - superproject) is executed. When `submodule.<name>.update` - is set to '!command', the remainder after the exclamation mark - is the custom command. - none;; the submodule is not updated. If the submodule is not yet initialized, and you just want to use the -- 2.41.0 ^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH] doc: remove mentions of .gitmodules !command syntax 2023-07-12 16:02 [PATCH] doc: remove mentions of .gitmodules !command syntax pvutov @ 2023-07-12 16:40 ` Junio C Hamano 2023-07-12 17:30 ` Petar Vutov 0 siblings, 1 reply; 22+ messages in thread From: Junio C Hamano @ 2023-07-12 16:40 UTC (permalink / raw) To: pvutov; +Cc: git pvutov@imap.cc writes: > From: Petar Vutov <pvutov@imap.cc> > > To mitigate CVE-2019-19604, the capability to configure > `git submodule update` to execute custom commands was > removed in v2.20.2. > > The git-submodule documentation still mentions the now-unsupported > syntax, which is misleading. > > Remove the leftover documentation. The change during v2.20.2 timeperiod you have in mind may be e904deb8 (submodule: reject submodule.update = !command in .gitmodules, 2019-12-05). The key phrase is "in .gitmodules" as it did not forbid writing update command in the configuration. The pre-context lines of your patch (see below) say that the 'custom command' option and 'none' option are only available via the `submodule.<name>.update` configuration variable. IOW, this part of the documentation does not talk about the .gitmodules file---it talks about what you can say in the configuration file (which is under your local control). I think the existing text that came from fc01a5d2 (submodule update documentation: don't repeat ourselves, 2016-12-27) may be misleading, and may has room for improvement, but I do not think it is wrong per-se. If we remove it, there is nowhere else that teaches users !cmd can be set in their configuration files, or is there? Thanks. > Signed-off-by: Petar Vutov <pvutov@imap.cc> > --- > Documentation/git-submodule.txt | 6 ------ > 1 file changed, 6 deletions(-) > > diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt > index 4d3ab6b9f9..b40ac72f75 100644 > --- a/Documentation/git-submodule.txt > +++ b/Documentation/git-submodule.txt > @@ -163,12 +163,6 @@ checked out in the submodule. > The following 'update' procedures are only available via the > `submodule.<name>.update` configuration variable: > > - custom command;; arbitrary shell command that takes a single > - argument (the sha1 of the commit recorded in the > - superproject) is executed. When `submodule.<name>.update` > - is set to '!command', the remainder after the exclamation mark > - is the custom command. > - > none;; the submodule is not updated. > > If the submodule is not yet initialized, and you just want to use the ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH] doc: remove mentions of .gitmodules !command syntax 2023-07-12 16:40 ` Junio C Hamano @ 2023-07-12 17:30 ` Petar Vutov 2023-07-12 17:54 ` Junio C Hamano 2023-07-13 19:33 ` [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command pvutov 0 siblings, 2 replies; 22+ messages in thread From: Petar Vutov @ 2023-07-12 17:30 UTC (permalink / raw) To: Junio C Hamano; +Cc: git On 7/12/23 18:40, Junio C Hamano wrote: > pvutov@imap.cc writes: > >> From: Petar Vutov <pvutov@imap.cc> >> >> To mitigate CVE-2019-19604, the capability to configure >> `git submodule update` to execute custom commands was >> removed in v2.20.2. >> >> The git-submodule documentation still mentions the now-unsupported >> syntax, which is misleading. >> >> Remove the leftover documentation. > > The change during v2.20.2 timeperiod you have in mind may be > e904deb8 (submodule: reject submodule.update = !command in > .gitmodules, 2019-12-05). The key phrase is "in .gitmodules" > as it did not forbid writing update command in the configuration. > > The pre-context lines of your patch (see below) say that the 'custom > command' option and 'none' option are only available via the > `submodule.<name>.update` configuration variable. IOW, this part of > the documentation does not talk about the .gitmodules file---it > talks about what you can say in the configuration file (which is > under your local control). > > I think the existing text that came from fc01a5d2 (submodule update > documentation: don't repeat ourselves, 2016-12-27) may be > misleading, and may has room for improvement, but I do not think it > is wrong per-se. If we remove it, there is nowhere else that teaches > users !cmd can be set in their configuration files, or is there? > > Thanks. Thanks for the review. I was not aware of the .gitconfig use case. I hit that paragraph while trying to enforce sparse-checkout via .gitmodules. Yet the gitmodules doc is clear enough: "See description of update command in git-submodule[1] for their meaning. For security reasons, the !command form is not accepted here." Clearly I followed the link in the first sentence without reading the second :) Perhaps the term "configuration variable" in "The following update procedures are only available via the submodule.<name>.update configuration variable:" is more specific and technical than immediately obvious - I would have expected the contents of .gitmodules to be a form of (repository) configuration. But that is just bikeshedding. > >> Signed-off-by: Petar Vutov <pvutov@imap.cc> >> --- >> Documentation/git-submodule.txt | 6 ------ >> 1 file changed, 6 deletions(-) >> >> diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt >> index 4d3ab6b9f9..b40ac72f75 100644 >> --- a/Documentation/git-submodule.txt >> +++ b/Documentation/git-submodule.txt >> @@ -163,12 +163,6 @@ checked out in the submodule. >> The following 'update' procedures are only available via the >> `submodule.<name>.update` configuration variable: >> >> - custom command;; arbitrary shell command that takes a single >> - argument (the sha1 of the commit recorded in the >> - superproject) is executed. When `submodule.<name>.update` >> - is set to '!command', the remainder after the exclamation mark >> - is the custom command. >> - >> none;; the submodule is not updated. >> >> If the submodule is not yet initialized, and you just want to use the ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH] doc: remove mentions of .gitmodules !command syntax 2023-07-12 17:30 ` Petar Vutov @ 2023-07-12 17:54 ` Junio C Hamano 2023-07-12 18:48 ` Petar Vutov 2023-07-13 19:33 ` [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command pvutov 1 sibling, 1 reply; 22+ messages in thread From: Junio C Hamano @ 2023-07-12 17:54 UTC (permalink / raw) To: Petar Vutov; +Cc: git Petar Vutov <pvutov@imap.cc> writes: > Perhaps the term "configuration variable" in > > "The following update procedures are only available via the > submodule.<name>.update configuration variable:" > > is more specific and technical than immediately obvious - I would have > expected the contents of .gitmodules to be a form of (repository) > configuration. But that is just bikeshedding. Not necessarily. It is always good to learn how "normal people" (read: those other than who develop and write documentation for Git) would react to and understand what we write in the manual pages, as that is the only way we can find what is confusing, ambiguous and can be improved. Perhaps "... available via the ... configuration variable, and cannot be used in the .gitmodules file" would have helped you? Thanks. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH] doc: remove mentions of .gitmodules !command syntax 2023-07-12 17:54 ` Junio C Hamano @ 2023-07-12 18:48 ` Petar Vutov 2023-07-12 20:33 ` Junio C Hamano 0 siblings, 1 reply; 22+ messages in thread From: Petar Vutov @ 2023-07-12 18:48 UTC (permalink / raw) To: Junio C Hamano; +Cc: git On 7/12/23 19:54, Junio C Hamano wrote: > > Perhaps > > "... available via the ... configuration variable, and cannot be > used in the .gitmodules file" > > would have helped you? > > Thanks. I think that addition is good and makes the intent clearer. But it's slightly wrong - only 'custom command' cannot be used in .gitmodules. 'none' is legal (and mentioned in the gitmodules doc as such). What about something like this? From 7b2fcd9a56b4954863cc74e1cf89a4b9d9d3ad52 Mon Sep 17 00:00:00 2001 From: Petar Vutov <pvutov@imap.cc> Date: Wed, 12 Jul 2023 20:40:10 +0200 Subject: [PATCH] docs: highlight that .gitmodules does not support !command The `custom command` and `none` entries are described as sharing the same limitations, but one is allowed in .gitmodules and the other is not. Instead, describe their limitations separately and with slightly more detail. Signed-off-by: Petar Vutov <pvutov@imap.cc> --- Documentation/git-submodule.txt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt index 4d3ab6b9f9..eb024a1531 100644 --- a/Documentation/git-submodule.txt +++ b/Documentation/git-submodule.txt @@ -160,16 +160,19 @@ checked out in the submodule. merge;; the commit recorded in the superproject will be merged into the current branch in the submodule. -The following 'update' procedures are only available via the -`submodule.<name>.update` configuration variable: - custom command;; arbitrary shell command that takes a single argument (the sha1 of the commit recorded in the superproject) is executed. When `submodule.<name>.update` is set to '!command', the remainder after the exclamation mark is the custom command. ++ +Custom commands are only available via the `submodule.<name>.update` +configuration variable. They cannot be used in the .gitmodules file. none;; the submodule is not updated. ++ +The `none` update procedure is only available via the .gitmodules file +or the `submodule.<name>.update` configuration variable. If the submodule is not yet initialized, and you just want to use the setting as stored in `.gitmodules`, you can automatically initialize the -- 2.41.0 ^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH] doc: remove mentions of .gitmodules !command syntax 2023-07-12 18:48 ` Petar Vutov @ 2023-07-12 20:33 ` Junio C Hamano 2023-07-13 19:20 ` Petar Vutov 0 siblings, 1 reply; 22+ messages in thread From: Junio C Hamano @ 2023-07-12 20:33 UTC (permalink / raw) To: Petar Vutov; +Cc: git Petar Vutov <pvutov@imap.cc> writes: > On 7/12/23 19:54, Junio C Hamano wrote: >> Perhaps >> "... available via the ... configuration variable, and cannot >> be >> used in the .gitmodules file" >> would have helped you? >> Thanks. > > I think that addition is good and makes the intent clearer. > > But it's slightly wrong - only 'custom command' cannot be used in > .gitmodules. 'none' is legal (and mentioned in the gitmodules doc as > such). Hmph, that will be a bugfix for fc01a5d2 (submodule update documentation: don't repeat ourselves, 2016-12-27). I think you are technically correct. Side note: but is there a useful use case to set it to 'none' in ".gitmodules" in the first place? If there is not, saying that "'none' is only useful in the configuration files" is not quite wrong per-se. > merge;; the commit recorded in the superproject will be merged > into the current branch in the submodule. > > -The following 'update' procedures are only available via the > -`submodule.<name>.update` configuration variable: > - > custom command;; arbitrary shell command that takes a single > argument (the sha1 of the commit recorded in the > superproject) is executed. When `submodule.<name>.update` > is set to '!command', the remainder after the exclamation mark > is the custom command. > ++ > +Custom commands are only available via the `submodule.<name>.update` > +configuration variable. They cannot be used in the .gitmodules file. Sounds good. s/available/allowed/, perhaps. > none;; the submodule is not updated. > ++ > +The `none` update procedure is only available via the .gitmodules file > +or the `submodule.<name>.update` configuration variable. This side we do not need "only" anywhere in the sentence, do we? Thanks. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH] doc: remove mentions of .gitmodules !command syntax 2023-07-12 20:33 ` Junio C Hamano @ 2023-07-13 19:20 ` Petar Vutov 2023-07-13 19:33 ` Junio C Hamano 0 siblings, 1 reply; 22+ messages in thread From: Petar Vutov @ 2023-07-13 19:20 UTC (permalink / raw) To: Junio C Hamano; +Cc: git On 7/12/23 22:33, Junio C Hamano wrote: > > Side note: but is there a useful use case to set it to 'none' in > ".gitmodules" in the first place? If there is not, saying that > "'none' is only useful in the configuration files" is not quite > wrong per-se. A twisted person might use it to commit a truly empty folder, without even a .gitkeep file. Whether that's a useful use case, I don't know. > > Sounds good. s/available/allowed/, perhaps. > >> none;; the submodule is not updated. >> ++ >> +The `none` update procedure is only available via the .gitmodules file >> +or the `submodule.<name>.update` configuration variable. > > This side we do not need "only" anywhere in the sentence, do we? > > Thanks. I will address both of those and include your bugfix blurb in v3. Still figuring out how to properly reference the previous patches using git-send-email.. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH] doc: remove mentions of .gitmodules !command syntax 2023-07-13 19:20 ` Petar Vutov @ 2023-07-13 19:33 ` Junio C Hamano 0 siblings, 0 replies; 22+ messages in thread From: Junio C Hamano @ 2023-07-13 19:33 UTC (permalink / raw) To: Petar Vutov; +Cc: git Petar Vutov <pvutov@imap.cc> writes: > I will address both of those and include your bugfix blurb in > v3. Still figuring out how to properly reference the previous patches > using git-send-email.. $ git send-email --in-reply-to='<7090349c-4485-d5c4-1f26-190974864f72@imap.cc>' ... ^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command 2023-07-12 17:30 ` Petar Vutov 2023-07-12 17:54 ` Junio C Hamano @ 2023-07-13 19:33 ` pvutov 2023-07-13 19:38 ` Junio C Hamano ` (2 more replies) 1 sibling, 3 replies; 22+ messages in thread From: pvutov @ 2023-07-13 19:33 UTC (permalink / raw) To: pvutov; +Cc: git, gitster From: Petar Vutov <pvutov@imap.cc> Bugfix for fc01a5d2 (submodule update documentation: don't repeat ourselves, 2016-12-27). The `custom command` and `none` entries are described as sharing the same limitations, but one is allowed in .gitmodules and the other is not. Instead, describe their limitations separately and in slightly more detail. Signed-off-by: Petar Vutov <pvutov@imap.cc> --- Changes from v1: Don't delete the documentation for `!command`. Instead, highlight the differences in the limitations of `none` and `!command`. Changes from v2: Improve phrasing. Add the bugfix blurb in the commit message. Documentation/git-submodule.txt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt index 4d3ab6b9f9..69ee2cd6b0 100644 --- a/Documentation/git-submodule.txt +++ b/Documentation/git-submodule.txt @@ -160,16 +160,19 @@ checked out in the submodule. merge;; the commit recorded in the superproject will be merged into the current branch in the submodule. -The following 'update' procedures are only available via the -`submodule.<name>.update` configuration variable: - custom command;; arbitrary shell command that takes a single argument (the sha1 of the commit recorded in the superproject) is executed. When `submodule.<name>.update` is set to '!command', the remainder after the exclamation mark is the custom command. ++ +Custom commands are only allowed in the `submodule.<name>.update` +git-config variable. They cannot be used in the .gitmodules file. none;; the submodule is not updated. ++ +The `none` update procedure is allowed in the .gitmodules file +or the `submodule.<name>.update` git-config variable. If the submodule is not yet initialized, and you just want to use the setting as stored in `.gitmodules`, you can automatically initialize the -- 2.41.0 ^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command 2023-07-13 19:33 ` [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command pvutov @ 2023-07-13 19:38 ` Junio C Hamano 2023-07-13 19:46 ` Petar Vutov 2023-07-13 20:34 ` [PATCH v4] docs: " pvutov 2 siblings, 0 replies; 22+ messages in thread From: Junio C Hamano @ 2023-07-13 19:38 UTC (permalink / raw) To: pvutov; +Cc: git pvutov@imap.cc writes: > From: Petar Vutov <pvutov@imap.cc> > > Bugfix for fc01a5d2 (submodule update documentation: don't repeat > ourselves, 2016-12-27). > > The `custom command` and `none` entries are described as sharing the > same limitations, but one is allowed in .gitmodules and the other is > not. Instead, describe their limitations separately and in slightly > more detail. Sounds sensible. > > Signed-off-by: Petar Vutov <pvutov@imap.cc> > --- > > Changes from v1: > Don't delete the documentation for `!command`. Instead, highlight > the differences in the limitations of `none` and `!command`. > > Changes from v2: > Improve phrasing. > Add the bugfix blurb in the commit message. > > Documentation/git-submodule.txt | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt > index 4d3ab6b9f9..69ee2cd6b0 100644 > --- a/Documentation/git-submodule.txt > +++ b/Documentation/git-submodule.txt > @@ -160,16 +160,19 @@ checked out in the submodule. > merge;; the commit recorded in the superproject will be merged > into the current branch in the submodule. > > -The following 'update' procedures are only available via the > -`submodule.<name>.update` configuration variable: > - > custom command;; arbitrary shell command that takes a single > argument (the sha1 of the commit recorded in the > superproject) is executed. When `submodule.<name>.update` > is set to '!command', the remainder after the exclamation mark > is the custom command. > ++ > +Custom commands are only allowed in the `submodule.<name>.update` > +git-config variable. They cannot be used in the .gitmodules file. > > none;; the submodule is not updated. > ++ > +The `none` update procedure is allowed in the .gitmodules file > +or the `submodule.<name>.update` git-config variable. But the usual ones like "merge" are also allowed in both places. Does this still need to be said? I wonder if it makes more sense to swap the order of these two entries, showing "none" without any additional text first, and then describe "custom command" with the note, exactly like you did above. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command 2023-07-13 19:33 ` [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command pvutov 2023-07-13 19:38 ` Junio C Hamano @ 2023-07-13 19:46 ` Petar Vutov 2023-07-13 19:55 ` Junio C Hamano 2023-07-13 20:34 ` [PATCH v4] docs: " pvutov 2 siblings, 1 reply; 22+ messages in thread From: Petar Vutov @ 2023-07-13 19:46 UTC (permalink / raw) To: pvutov; +Cc: git Oops, this was supposed to go under <7090349c-4485-d5c4-1f26-190974864f72@imap.cc>.. Side question in this side thread: I was tempted to change the mention of "configuration variable" with "git-config variable", to highlight the narrow meaning of the term. But I grepped and that term is used everywhere in the documentation. Changing it only in this section would be inconsistent. If I were to go through all those mentions and figure out which "configuration variable" mentions refer exclusively to `git-config`, wis there interest in changing them to something like "git-config variable" in a potential future patch? Or do we like the term "configuration variable"? ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command 2023-07-13 19:46 ` Petar Vutov @ 2023-07-13 19:55 ` Junio C Hamano 2023-07-13 20:34 ` Petar Vutov 0 siblings, 1 reply; 22+ messages in thread From: Junio C Hamano @ 2023-07-13 19:55 UTC (permalink / raw) To: Petar Vutov; +Cc: git Petar Vutov <pvutov@imap.cc> writes: > Oops, this was supposed to go under > <7090349c-4485-d5c4-1f26-190974864f72@imap.cc>.. > > Side question in this side thread: I was tempted to change the mention > of "configuration variable" with "git-config variable", to highlight > the narrow meaning of the term. But I grepped and that term is used > everywhere in the documentation. Changing it only in this section > would be inconsistent. Don't. People should be familiar with "configuration variable", but may not be with "git-config variable". How about doing it this way? I moved 'none' up, as it is effective in `.gitmodules` and as a configuration variable, just like all others, and then completely rewrote the somewhat awkward explanation of the custom command thing. ----- >8 --------- >8 --------- >8 --------- >8 ---- Subject: submodule: clarify that "!custom command" is the only oddball We singled out 'none' and 'custom command' as submodule update modes that cannot be specified in the .gitmodules file, but 'none' can appear there, and use of a custom command is the only oddball. Move the description of 'none' up, clarify how the custom command is used, and explicitly say it cannot be used in the `.gitmodules` file. Strictly speaking, the last one should not be needed, as we already say `configuration variable`, but to new readers, the distinction between the configuration variable and settings that appear in the .gitmodules file may not be apparent; hopefully the new text will help them understand where it can(not) be used. Signed-off-by: Junio C Hamano <gitster@pobox.com> --- Documentation/git-submodule.txt | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git c/Documentation/git-submodule.txt w/Documentation/git-submodule.txt index 4d3ab6b9f9..391ff0dbf2 100644 --- c/Documentation/git-submodule.txt +++ w/Documentation/git-submodule.txt @@ -160,17 +160,15 @@ checked out in the submodule. merge;; the commit recorded in the superproject will be merged into the current branch in the submodule. -The following 'update' procedures are only available via the -`submodule.<name>.update` configuration variable: - - custom command;; arbitrary shell command that takes a single - argument (the sha1 of the commit recorded in the - superproject) is executed. When `submodule.<name>.update` - is set to '!command', the remainder after the exclamation mark - is the custom command. - none;; the submodule is not updated. + custom command;; When the `submodule.<name>.update` + configuration variable is set to `!custom command`, the + object name of the commit recorded in the superproject + for the submodule is appended to the `custom command` + string and gets executed. Note that this mechanism + cannot be used in the `.gitmodules` file. + If the submodule is not yet initialized, and you just want to use the setting as stored in `.gitmodules`, you can automatically initialize the submodule with the `--init` option. ^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command 2023-07-13 19:55 ` Junio C Hamano @ 2023-07-13 20:34 ` Petar Vutov 2023-07-13 20:55 ` Junio C Hamano 0 siblings, 1 reply; 22+ messages in thread From: Petar Vutov @ 2023-07-13 20:34 UTC (permalink / raw) To: Junio C Hamano; +Cc: git On 7/13/23 21:55, Junio C Hamano wrote: > Petar Vutov <pvutov@imap.cc> writes: > > Don't. People should be familiar with "configuration variable", but > may not be with "git-config variable". Right, on closer inspection this collision with .gitmodules is rather niche to start with. Few things in .gitconfig are also legal in .gitmodules. > > -The following 'update' procedures are only available via the > -`submodule.<name>.update` configuration variable: > - > - custom command;; arbitrary shell command that takes a single > - argument (the sha1 of the commit recorded in the > - superproject) is executed. When `submodule.<name>.update` > - is set to '!command', the remainder after the exclamation mark > - is the custom command. > - > none;; the submodule is not updated. > > + custom command;; When the `submodule.<name>.update` > + configuration variable is set to `!custom command`, the > + object name of the commit recorded in the superproject > + for the submodule is appended to the `custom command` > + string and gets executed. Note that this mechanism > + cannot be used in the `.gitmodules` file. > + > If the submodule is not yet initialized, and you just want to use the > setting as stored in `.gitmodules`, you can automatically initialize the > submodule with the `--init` option. I prefer the original description as it uses shorter sentences. I can't hold that 5-liner in my head :) But now I really am bikeshedding, and I've taken enough of your time. I will send a v4 with just the .gitmodules disclaimer, no rewrite, in case you end up agreeing. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command 2023-07-13 20:34 ` Petar Vutov @ 2023-07-13 20:55 ` Junio C Hamano 2023-07-13 21:37 ` Junio C Hamano 0 siblings, 1 reply; 22+ messages in thread From: Junio C Hamano @ 2023-07-13 20:55 UTC (permalink / raw) To: Petar Vutov; +Cc: git Petar Vutov <pvutov@imap.cc> writes: > I prefer the original description as it uses shorter sentences. I > can't hold that 5-liner in my head :) But you are comparing oranges and apples, aren't you? You are not counting "oh by the way this cannot be in .gitmodules" as part of 5. > But now I really am bikeshedding, and I've taken enough of your > time. I will send a v4 with just the .gitmodules disclaimer, no > rewrite, in case you end up agreeing. After reading the original again and again, I hate more and more the way the original wasted too many words to refer to one thing twice (e.g. "arbitrary command" and then "is the custom command", "a single argument" and then the parenthesized explanation of it) without adding any clarity. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command 2023-07-13 20:55 ` Junio C Hamano @ 2023-07-13 21:37 ` Junio C Hamano 2023-07-13 21:47 ` Petar Vutov 2023-07-14 22:03 ` Petar Vutov 0 siblings, 2 replies; 22+ messages in thread From: Junio C Hamano @ 2023-07-13 21:37 UTC (permalink / raw) To: Petar Vutov; +Cc: git Junio C Hamano <gitster@pobox.com> writes: > After reading the original again and again, I hate more and more the > way the original wasted too many words to refer to one thing twice > (e.g. "arbitrary command" and then "is the custom command", "a > single argument" and then the parenthesized explanation of it) > without adding any clarity. Another thing I noticed is that this section is ONLY talking about the configuration variable, so everything both of us have been saying misses the point. The preamble before the choices ("checkout", "rebase", "merge", "custom" and "none") are listed read like so: update [--init] [--remote] [-N|--no-f... + -- Update the registered submodules to match what the superproject expects by cloning missing submodules, fetching missing commits in submodules and updating the working tree of the submodules. The "updating" can be done in several ways depending on command line options and the value of `submodule.<name>.update` configuration variable. The command line option takes precedence over the configuration variable. If neither is given, a 'checkout' is performed. The 'update' procedures supported both from the command line as well as through the `submodule.<name>.update` configuration are: Then why do we even think about referring to ".gitmodules" here? It is because of this behaviour that is described elsewhere: init [--] [<path>...]:: Initialize the submodules recorded in the index (which were added and committed elsewhere) by setting `submodule.$name.url` in .git/config. It uses the same setting from `.gitmodules` as a template. If the URL is relative, it will be resolved using the default remote. If there is no default remote, the current repository will be assumed to be upstream. + Optional <path> arguments limit which submodules will be initialized. If no path is specified and submodule.active has been configured, submodules configured to be active will be initialized, otherwise all submodules are initialized. + When present, it will also copy the value of `submodule.$name.update`. and this description is very flawed. It says "X is copied", but not "X is copied from A to B". It also does not say that even if you have a custom command there, it does not get copied. It copies submodule.<name>.update from the ".gitmodules" to the configuraiton. And that is the reason why, the configuration may have "submodule.<name>.update" in it after running "git init" to initialize a submodule. And that is why the choices of update methods listed in the part your patch touched talked about things that can both appear in .gitmodules and the configuration. But the linkage is quite indirect. So, here is another round, this time the primary change is to stop talking about `.gitmodules` in the "update" section, but explain how `.gitmodules` file is used in the "init" section. Documentation/git-submodule.txt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git c/Documentation/git-submodule.txt w/Documentation/git-submodule.txt index 4d3ab6b9f9..5248840b18 100644 --- c/Documentation/git-submodule.txt +++ w/Documentation/git-submodule.txt @@ -95,7 +95,7 @@ too (and can also report changes to a submodule's work tree). init [--] [<path>...]:: Initialize the submodules recorded in the index (which were added and committed elsewhere) by setting `submodule.$name.url` - in .git/config. It uses the same setting from `.gitmodules` as + in `.git/config`, using the same setting from `.gitmodules` as a template. If the URL is relative, it will be resolved using the default remote. If there is no default remote, the current repository will be assumed to be upstream. @@ -105,9 +105,12 @@ If no path is specified and submodule.active has been configured, submodules configured to be active will be initialized, otherwise all submodules are initialized. + -When present, it will also copy the value of `submodule.$name.update`. -This command does not alter existing information in .git/config. -You can then customize the submodule clone URLs in .git/config +It will also copy the value of `submodule.$name.update`, if present in +the `.gitmodules` file, to `.git/config`, but (1) this command does not +alter existing information in `.git/config`, and (2) `submodule.$name.update` +that is set to a custom command is *not* copied for security reasons. ++ +You can then customize the submodule clone URLs in `.git/config` for your local setup and proceed to `git submodule update`; you can also just use `git submodule update --init` without the explicit 'init' step if you do not intend to customize @@ -143,6 +146,8 @@ the submodules. The "updating" can be done in several ways depending on command line options and the value of `submodule.<name>.update` configuration variable. The command line option takes precedence over the configuration variable. If neither is given, a 'checkout' is performed. +(note: what is in `.gitmodules` file is irrelevant at this point; +see `git submodule init` above for how `.gitmodules` is used). The 'update' procedures supported both from the command line as well as through the `submodule.<name>.update` configuration are: @@ -160,9 +165,6 @@ checked out in the submodule. merge;; the commit recorded in the superproject will be merged into the current branch in the submodule. -The following 'update' procedures are only available via the -`submodule.<name>.update` configuration variable: - custom command;; arbitrary shell command that takes a single argument (the sha1 of the commit recorded in the superproject) is executed. When `submodule.<name>.update` ^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command 2023-07-13 21:37 ` Junio C Hamano @ 2023-07-13 21:47 ` Petar Vutov 2023-07-13 22:28 ` Junio C Hamano 2023-07-14 22:03 ` Petar Vutov 1 sibling, 1 reply; 22+ messages in thread From: Petar Vutov @ 2023-07-13 21:47 UTC (permalink / raw) To: Junio C Hamano; +Cc: git Thanks. I'll digest this and reply tomorrow. Until then, I remembered something: On 7/13/23 23:37, Junio C Hamano wrote: > > -The following 'update' procedures are only available via the > -`submodule.<name>.update` configuration variable: > - Originally I was trying to write a disclaimer about `none` because the current documentation we're removing seems to be trying to say something like this: "The following `update` procedures are not supported via the command line: none, custom command" It's referencing this bit at the top: > The 'update' procedures supported both from the command line as well as > through the `submodule.<name>.update` configuration are: ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command 2023-07-13 21:47 ` Petar Vutov @ 2023-07-13 22:28 ` Junio C Hamano 0 siblings, 0 replies; 22+ messages in thread From: Junio C Hamano @ 2023-07-13 22:28 UTC (permalink / raw) To: Petar Vutov; +Cc: git Petar Vutov <pvutov@imap.cc> writes: > Thanks. I'll digest this and reply tomorrow. Thanks. > "The following `update` procedures are not supported via the command > line: none, custom command" Ah, that is a good thing to notice. Yes, the command line override is also something we need to explain. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command 2023-07-13 21:37 ` Junio C Hamano 2023-07-13 21:47 ` Petar Vutov @ 2023-07-14 22:03 ` Petar Vutov 2023-07-25 18:17 ` Junio C Hamano 1 sibling, 1 reply; 22+ messages in thread From: Petar Vutov @ 2023-07-14 22:03 UTC (permalink / raw) To: Junio C Hamano; +Cc: git On 7/13/23 23:37, Junio C Hamano wrote: > So, here is another round, this time the primary change is to stop > talking about `.gitmodules` in the "update" section, but explain how > `.gitmodules` file is used in the "init" section. Looks good to me. I applied your patch and then made some additions, which I'll append at the end of this message. Summary: * Added your rewrite from yesterday. I like that it's more precise than the current docs, but I struggle with the complexity of the first sentence. I wanted to make it easier to follow by splitting it in two somehow. Instead I ended up with an introductory sentence summarizing the functionality with small words. * In gitmodules.txt, moved the security disclaimer so people are more likely to see it before they follow the link to git-submodule.txt. * Explicitly called out `none` and `custom command` as being unusable on the command line (and in .gitmodules). I expect that you won't want that .gitmodules mention anymore, but I left it in for now, up to you. By the way, I ran into an SO question where some people were discussing the same issue: https://stackoverflow.com/q/65744067/876832 The diff below is based on top of your patch from yesterday, since I assume that you don't want to look at a mishmash of both patches. --- Documentation/git-submodule.txt | 19 ++++++++++++------- Documentation/gitmodules.txt | 6 +++--- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt index 5248840b18..695730609a 100644 --- a/Documentation/git-submodule.txt +++ b/Documentation/git-submodule.txt @@ -165,13 +165,18 @@ checked out in the submodule. merge;; the commit recorded in the superproject will be merged into the current branch in the submodule. - custom command;; arbitrary shell command that takes a single - argument (the sha1 of the commit recorded in the - superproject) is executed. When `submodule.<name>.update` - is set to '!command', the remainder after the exclamation mark - is the custom command. - - none;; the submodule is not updated. +The following update procedures have additional limitations: + + custom command;; mechanism for running arbitrary commands with the + commit ID as an argument. Specifically, if the + `submodule.<name>.update` configuration variable is set to + `!custom command`, the object name of the commit recorded in the + superproject for the submodule is appended to the `custom command` + string and executed. Note that this mechanism is not supported in + the `.gitmodules` file or on the command line. + + none;; the submodule is not updated. This update procedure is not + allowed on the command line. If the submodule is not yet initialized, and you just want to use the setting as stored in `.gitmodules`, you can automatically initialize the diff --git a/Documentation/gitmodules.txt b/Documentation/gitmodules.txt index dcee09b500..d9bec8b187 100644 --- a/Documentation/gitmodules.txt +++ b/Documentation/gitmodules.txt @@ -43,9 +43,9 @@ submodule.<name>.update:: command in the superproject. This is only used by `git submodule init` to initialize the configuration variable of the same name. Allowed values here are 'checkout', 'rebase', - 'merge' or 'none'. See description of 'update' command in - linkgit:git-submodule[1] for their meaning. For security - reasons, the '!command' form is not accepted here. + 'merge' or 'none', but not '!command' (for security reasons). + See the description of the 'update' command in + linkgit:git-submodule[1] for more details. submodule.<name>.branch:: A remote branch name for tracking updates in the upstream submodule. -- 2.41.0 ^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command 2023-07-14 22:03 ` Petar Vutov @ 2023-07-25 18:17 ` Junio C Hamano 2023-07-25 21:22 ` [PATCH v5] doc: " pvutov 0 siblings, 1 reply; 22+ messages in thread From: Junio C Hamano @ 2023-07-25 18:17 UTC (permalink / raw) To: Petar Vutov; +Cc: git Petar Vutov <pvutov@imap.cc> writes: > I applied your patch and then made some additions, which I'll append > at the end of this message. Summary: > > * Added your rewrite from yesterday. I like that it's more precise > than the current docs, but I struggle with the complexity of the > first sentence. I wanted to make it easier to follow by splitting it > in two somehow. Instead I ended up with an introductory sentence > summarizing the functionality with small words. > > * In gitmodules.txt, moved the security disclaimer so people are more > likely to see it before they follow the link to git-submodule.txt. > > * Explicitly called out `none` and `custom command` as being unusable > on the command line (and in .gitmodules). I expect that you won't > want that .gitmodules mention anymore, but I left it in for now, up > to you. > > The diff below is based on top of your patch from yesterday, since I > assume that you don't want to look at a mishmash of both patches. Sorry for a very slow response; I seem to have missed this one. The end result looks good. Care to wrap it up into a single patch (iow, make a "mishmash of both patches") with a good log message so we can move the topic forward? Thanks. > diff --git a/Documentation/git-submodule.txt > b/Documentation/git-submodule.txt > index 5248840b18..695730609a 100644 > --- a/Documentation/git-submodule.txt > +++ b/Documentation/git-submodule.txt > @@ -165,13 +165,18 @@ checked out in the submodule. > merge;; the commit recorded in the superproject will be merged > into the current branch in the submodule. > > - custom command;; arbitrary shell command that takes a single > - argument (the sha1 of the commit recorded in the > - superproject) is executed. When `submodule.<name>.update` > - is set to '!command', the remainder after the exclamation mark > - is the custom command. > - > - none;; the submodule is not updated. > +The following update procedures have additional limitations: > + > + custom command;; mechanism for running arbitrary commands with the > + commit ID as an argument. Specifically, if the > + `submodule.<name>.update` configuration variable is set to > + `!custom command`, the object name of the commit recorded in the > + superproject for the submodule is appended to the `custom command` > + string and executed. Note that this mechanism is not supported in > + the `.gitmodules` file or on the command line. > + > + none;; the submodule is not updated. This update procedure is not > + allowed on the command line. > > If the submodule is not yet initialized, and you just want to use the > setting as stored in `.gitmodules`, you can automatically initialize the > diff --git a/Documentation/gitmodules.txt b/Documentation/gitmodules.txt > index dcee09b500..d9bec8b187 100644 > --- a/Documentation/gitmodules.txt > +++ b/Documentation/gitmodules.txt > @@ -43,9 +43,9 @@ submodule.<name>.update:: > command in the superproject. This is only used by `git > submodule init` to initialize the configuration variable of > the same name. Allowed values here are 'checkout', 'rebase', > - 'merge' or 'none'. See description of 'update' command in > - linkgit:git-submodule[1] for their meaning. For security > - reasons, the '!command' form is not accepted here. > + 'merge' or 'none', but not '!command' (for security reasons). > + See the description of the 'update' command in > + linkgit:git-submodule[1] for more details. > > submodule.<name>.branch:: > A remote branch name for tracking updates in the upstream submodule. ^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v5] doc: highlight that .gitmodules does not support !command 2023-07-25 18:17 ` Junio C Hamano @ 2023-07-25 21:22 ` pvutov 2023-07-25 21:56 ` Junio C Hamano 0 siblings, 1 reply; 22+ messages in thread From: pvutov @ 2023-07-25 21:22 UTC (permalink / raw) To: gitster; +Cc: git, Petar Vutov From: Petar Vutov <pvutov@imap.cc> Bugfix for fc01a5d2 (submodule update documentation: don't repeat ourselves, 2016-12-27). The `custom command` and `none` options are described as sharing the same limitations, but one is allowed in .gitmodules and the other is not. Rewrite the description for custom commands to be more precise, and make it easier for readers to notice that custom commands cannot be used in the .gitmodules file. Signed-off-by: Petar Vutov <pvutov@imap.cc> --- Combines the custom command description rewrite by Junio C Hamano and my proposed changes into a single patch. Apologies for the "From:" line at the top - I don't know if it is safe to remove it, and I can't figure out how set my name in git-send-email so that the line is not automatically added. Documentation/git-submodule.txt | 31 +++++++++++++++++++------------ Documentation/gitmodules.txt | 6 +++--- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt index 4d3ab6b9f9..695730609a 100644 --- a/Documentation/git-submodule.txt +++ b/Documentation/git-submodule.txt @@ -95,7 +95,7 @@ too (and can also report changes to a submodule's work tree). init [--] [<path>...]:: Initialize the submodules recorded in the index (which were added and committed elsewhere) by setting `submodule.$name.url` - in .git/config. It uses the same setting from `.gitmodules` as + in `.git/config`, using the same setting from `.gitmodules` as a template. If the URL is relative, it will be resolved using the default remote. If there is no default remote, the current repository will be assumed to be upstream. @@ -105,9 +105,12 @@ If no path is specified and submodule.active has been configured, submodules configured to be active will be initialized, otherwise all submodules are initialized. + -When present, it will also copy the value of `submodule.$name.update`. -This command does not alter existing information in .git/config. -You can then customize the submodule clone URLs in .git/config +It will also copy the value of `submodule.$name.update`, if present in +the `.gitmodules` file, to `.git/config`, but (1) this command does not +alter existing information in `.git/config`, and (2) `submodule.$name.update` +that is set to a custom command is *not* copied for security reasons. ++ +You can then customize the submodule clone URLs in `.git/config` for your local setup and proceed to `git submodule update`; you can also just use `git submodule update --init` without the explicit 'init' step if you do not intend to customize @@ -143,6 +146,8 @@ the submodules. The "updating" can be done in several ways depending on command line options and the value of `submodule.<name>.update` configuration variable. The command line option takes precedence over the configuration variable. If neither is given, a 'checkout' is performed. +(note: what is in `.gitmodules` file is irrelevant at this point; +see `git submodule init` above for how `.gitmodules` is used). The 'update' procedures supported both from the command line as well as through the `submodule.<name>.update` configuration are: @@ -160,16 +165,18 @@ checked out in the submodule. merge;; the commit recorded in the superproject will be merged into the current branch in the submodule. -The following 'update' procedures are only available via the -`submodule.<name>.update` configuration variable: +The following update procedures have additional limitations: - custom command;; arbitrary shell command that takes a single - argument (the sha1 of the commit recorded in the - superproject) is executed. When `submodule.<name>.update` - is set to '!command', the remainder after the exclamation mark - is the custom command. + custom command;; mechanism for running arbitrary commands with the + commit ID as an argument. Specifically, if the + `submodule.<name>.update` configuration variable is set to + `!custom command`, the object name of the commit recorded in the + superproject for the submodule is appended to the `custom command` + string and executed. Note that this mechanism is not supported in + the `.gitmodules` file or on the command line. - none;; the submodule is not updated. + none;; the submodule is not updated. This update procedure is not + allowed on the command line. If the submodule is not yet initialized, and you just want to use the setting as stored in `.gitmodules`, you can automatically initialize the diff --git a/Documentation/gitmodules.txt b/Documentation/gitmodules.txt index dcee09b500..d9bec8b187 100644 --- a/Documentation/gitmodules.txt +++ b/Documentation/gitmodules.txt @@ -43,9 +43,9 @@ submodule.<name>.update:: command in the superproject. This is only used by `git submodule init` to initialize the configuration variable of the same name. Allowed values here are 'checkout', 'rebase', - 'merge' or 'none'. See description of 'update' command in - linkgit:git-submodule[1] for their meaning. For security - reasons, the '!command' form is not accepted here. + 'merge' or 'none', but not '!command' (for security reasons). + See the description of the 'update' command in + linkgit:git-submodule[1] for more details. submodule.<name>.branch:: A remote branch name for tracking updates in the upstream submodule. -- 2.41.0 ^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH v5] doc: highlight that .gitmodules does not support !command 2023-07-25 21:22 ` [PATCH v5] doc: " pvutov @ 2023-07-25 21:56 ` Junio C Hamano 0 siblings, 0 replies; 22+ messages in thread From: Junio C Hamano @ 2023-07-25 21:56 UTC (permalink / raw) To: pvutov; +Cc: git pvutov@imap.cc writes: > From: Petar Vutov <pvutov@imap.cc> > > Bugfix for fc01a5d2 (submodule update documentation: don't repeat > ourselves, 2016-12-27). > > The `custom command` and `none` options are described as sharing the > same limitations, but one is allowed in .gitmodules and the other is > not. > > Rewrite the description for custom commands to be more precise, > and make it easier for readers to notice that custom commands cannot > be used in the .gitmodules file. > > Signed-off-by: Petar Vutov <pvutov@imap.cc> > --- > Combines the custom command description rewrite by Junio C Hamano and > my proposed changes into a single patch. Thanks. Willl queue. Let's move it forward. ^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v4] docs: highlight that .gitmodules does not support !command 2023-07-13 19:33 ` [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command pvutov 2023-07-13 19:38 ` Junio C Hamano 2023-07-13 19:46 ` Petar Vutov @ 2023-07-13 20:34 ` pvutov 2 siblings, 0 replies; 22+ messages in thread From: pvutov @ 2023-07-13 20:34 UTC (permalink / raw) To: pvutov; +Cc: git, gitster From: Petar Vutov <pvutov@imap.cc> Bugfix for fc01a5d2 (submodule update documentation: don't repeat ourselves, 2016-12-27). The `custom command` and `none` entries are described as sharing the same limitations, but one is allowed in .gitmodules and the other is not. Instead, highlight the limitation of `custom command` only. Signed-off-by: Petar Vutov <pvutov@imap.cc> --- Changes from v1: Don't delete the documentation for `!command`. Instead, highlight the differences in the limitations of `none` and `!command`. Changes from v2: Improve phrasing. Add the bugfix blurb in the commit message. Changes from v3: Keep the description of `none` unchanged and just move it up. Documentation/git-submodule.txt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt index 4d3ab6b9f9..b3303afb8f 100644 --- a/Documentation/git-submodule.txt +++ b/Documentation/git-submodule.txt @@ -160,16 +160,14 @@ checked out in the submodule. merge;; the commit recorded in the superproject will be merged into the current branch in the submodule. -The following 'update' procedures are only available via the -`submodule.<name>.update` configuration variable: + none;; the submodule is not updated. custom command;; arbitrary shell command that takes a single argument (the sha1 of the commit recorded in the superproject) is executed. When `submodule.<name>.update` is set to '!command', the remainder after the exclamation mark - is the custom command. - - none;; the submodule is not updated. + is the custom command. Note that this mechanism + cannot be used in the .gitmodules file. If the submodule is not yet initialized, and you just want to use the setting as stored in `.gitmodules`, you can automatically initialize the -- 2.41.0 ^ permalink raw reply related [flat|nested] 22+ messages in thread
end of thread, other threads:[~2023-07-25 21:56 UTC | newest] Thread overview: 22+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-07-12 16:02 [PATCH] doc: remove mentions of .gitmodules !command syntax pvutov 2023-07-12 16:40 ` Junio C Hamano 2023-07-12 17:30 ` Petar Vutov 2023-07-12 17:54 ` Junio C Hamano 2023-07-12 18:48 ` Petar Vutov 2023-07-12 20:33 ` Junio C Hamano 2023-07-13 19:20 ` Petar Vutov 2023-07-13 19:33 ` Junio C Hamano 2023-07-13 19:33 ` [PATCH v3 1/1] docs: highlight that .gitmodules does not support !command pvutov 2023-07-13 19:38 ` Junio C Hamano 2023-07-13 19:46 ` Petar Vutov 2023-07-13 19:55 ` Junio C Hamano 2023-07-13 20:34 ` Petar Vutov 2023-07-13 20:55 ` Junio C Hamano 2023-07-13 21:37 ` Junio C Hamano 2023-07-13 21:47 ` Petar Vutov 2023-07-13 22:28 ` Junio C Hamano 2023-07-14 22:03 ` Petar Vutov 2023-07-25 18:17 ` Junio C Hamano 2023-07-25 21:22 ` [PATCH v5] doc: " pvutov 2023-07-25 21:56 ` Junio C Hamano 2023-07-13 20:34 ` [PATCH v4] docs: " pvutov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).