* [PATCH 0/2] guides: keep Documentation/Makefile and command-list.txt in sync
@ 2026-09-09 5:24 Tuomas Ahola
2026-09-09 5:25 ` [PATCH 1/2] command-list: add gitformat-loose(5) and gitpacking(7) Tuomas Ahola
` (3 more replies)
0 siblings, 4 replies; 15+ messages in thread
From: Tuomas Ahola @ 2026-09-09 5:24 UTC (permalink / raw)
To: git; +Cc: Tuomas Ahola
Documentation/lint-manpages.sh was expanded with a new test
ensuring that command-list.txt also includes all non-command
manual pages (concept guides and interface manuals).
Based on kh/doc-datamodel.
Tuomas Ahola (2):
command-list: add gitformat-loose(5) and gitpacking(7)
lint-docs: check the guide list in command-list.txt
Documentation/Makefile | 2 ++
Documentation/lint-manpages.sh | 9 ++++++---
command-list.txt | 2 ++
3 files changed, 10 insertions(+), 3 deletions(-)
base-commit: e9019fcafe0040228b8631c30f97ae1adb61bcdc
prerequisite-patch-id: 13af80fdddfc7d4f65437343cee0ca3787cbdea4
--
ta/command-list-guides-sync-lint
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 1/2] command-list: add gitformat-loose(5) and gitpacking(7)
2026-09-09 5:24 [PATCH 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
@ 2026-09-09 5:25 ` Tuomas Ahola
2026-09-09 18:15 ` Junio C Hamano
2026-09-09 5:25 ` [PATCH 2/2] lint-docs: check the guide list in command-list.txt Tuomas Ahola
` (2 subsequent siblings)
3 siblings, 1 reply; 15+ messages in thread
From: Tuomas Ahola @ 2026-09-09 5:25 UTC (permalink / raw)
To: git; +Cc: Tuomas Ahola
Three manpages from sections 5 and 7 are not featured in
command-list.txt as concept guides or interface manuals.
As easy fixes, add gitformat-loose(5) to 'developerinterfaces'
and make gitpacking(7) a 'guide'.
That leaves only gitweb.conf(5) which could be added to
'userinterfaces'. However, the manual would then appear
as "web.conf" in `git help -a` which is just confusing.
So, perhaps we are better off by leaving it out.
Signed-off-by: Tuomas Ahola <taahol@utu.fi>
---
command-list.txt | 2 ++
1 file changed, 2 insertions(+)
diff --git a/command-list.txt b/command-list.txt
index 63ae2a67c9..955eec6e7e 100644
--- a/command-list.txt
+++ b/command-list.txt
@@ -225,6 +225,7 @@ gitformat-bundle developerinterfaces
gitformat-chunk developerinterfaces
gitformat-commit-graph developerinterfaces
gitformat-index developerinterfaces
+gitformat-loose developerinterfaces
gitformat-pack developerinterfaces
gitformat-signature developerinterfaces
gitglossary guide
@@ -234,6 +235,7 @@ gitk mainporcelain
gitmailmap userinterfaces
gitmodules userinterfaces
gitnamespaces guide
+gitpacking guide
gitprotocol-capabilities developerinterfaces
gitprotocol-common developerinterfaces
gitprotocol-http developerinterfaces
--
ta/command-list-guides-sync-lint
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 2/2] lint-docs: check the guide list in command-list.txt
2026-09-09 5:24 [PATCH 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
2026-09-09 5:25 ` [PATCH 1/2] command-list: add gitformat-loose(5) and gitpacking(7) Tuomas Ahola
@ 2026-09-09 5:25 ` Tuomas Ahola
2026-09-09 18:15 ` Junio C Hamano
2026-09-10 19:43 ` [PATCH v2 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
2026-10-29 18:48 ` [PATCH v3 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
3 siblings, 1 reply; 15+ messages in thread
From: Tuomas Ahola @ 2026-09-09 5:25 UTC (permalink / raw)
To: git; +Cc: Tuomas Ahola
Since 2135e1ad70 (command-list.txt: add missing 'gitcredentials' and
'gitremote-helpers', 2020-08-05) there has been a comment in
Documentation/Makefile reminding developers to add new guides also to
command-list.txt. However, there is no linter script to enforce that.
Adapt Documentation/lint-manpages.sh to fill that role. Extract
MAN5_TXT and MAN7_TXT from the Makefile and check command-list.txt
against them. Exempt gitweb.conf(5) from the new linter routine.
Signed-off-by: Tuomas Ahola <taahol@utu.fi>
---
Notes:
c655855559 (doc: git: list gitdatamodel(7) as a concept guide, 2026-09-05)
should be merged in to make the new test pass.
Documentation/Makefile | 2 ++
Documentation/lint-manpages.sh | 9 ++++++---
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 2699f0b24a..203f6a0c31 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -67,6 +67,8 @@ MAN7_TXT += gittutorial-2.adoc
MAN7_TXT += gittutorial.adoc
MAN7_TXT += gitworkflows.adoc
+MAN_GUIDES = $(patsubst %.adoc,%,$(MAN5_TXT) $(MAN7_TXT))
+
HOWTO_TXT += $(wildcard howto/*.adoc)
DOC_DEP_TXT += $(wildcard *.adoc)
diff --git a/Documentation/lint-manpages.sh b/Documentation/lint-manpages.sh
index a0ea572382..290ebe0947 100755
--- a/Documentation/lint-manpages.sh
+++ b/Documentation/lint-manpages.sh
@@ -1,21 +1,22 @@
#!/bin/sh
extract_variable () {
+ file=${2:-../Makefile}
(
- cat ../Makefile
+ cat $file
cat <<EOF
print_variable:
@\$(foreach b,\$($1),echo XXX \$(b:\$X=) YYY;)
EOF
) |
- make -C .. -f - print_variable 2>/dev/null |
+ make -C $(dirname $file) -f - print_variable 2>/dev/null |
sed -n -e 's/.*XXX \(.*\) YYY.*/\1/p'
}
check_missing_docs () (
ret=0
- for v in $ALL_COMMANDS
+ for v in $ALL_COMMANDS $MAN_GUIDES
do
case "$v" in
git-merge-octopus) continue;;
@@ -29,6 +30,7 @@ check_missing_docs () (
git-stage) continue;;
git-legacy-*) continue;;
git-?*--?* ) continue ;;
+ gitweb.conf) continue ;;
esac
if ! test -f "$v.adoc"
@@ -87,6 +89,7 @@ check_extraneous_docs () {
BUILT_INS="$(extract_variable BUILT_INS)"
ALL_COMMANDS="$(extract_variable ALL_COMMANDS)"
EXCLUDED_PROGRAMS="$(extract_variable EXCLUDED_PROGRAMS)"
+MAN_GUIDES="$(extract_variable MAN_GUIDES ./Makefile)"
findings=$(
if ! check_missing_docs
--
ta/command-list-guides-sync-lint
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] lint-docs: check the guide list in command-list.txt
2026-09-09 5:25 ` [PATCH 2/2] lint-docs: check the guide list in command-list.txt Tuomas Ahola
@ 2026-09-09 18:15 ` Junio C Hamano
0 siblings, 0 replies; 15+ messages in thread
From: Junio C Hamano @ 2026-09-09 18:15 UTC (permalink / raw)
To: Tuomas Ahola; +Cc: git
Tuomas Ahola <taahol@utu.fi> writes:
> extract_variable () {
> + file=${2:-../Makefile}
> (
> - cat ../Makefile
> + cat $file
Now you are allowing arbitrary path to be fed to this function, you
should prepare to accept arbitrary path, without assuming that $file
has no $IFS whitespaces. I.e.,
cat "$file"
> ) |
> - make -C .. -f - print_variable 2>/dev/null |
> + make -C $(dirname $file) -f - print_variable 2>/dev/null |
Ditto. $file itself may have $IFS whitespaces, and the result of
running dirname on it may too.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/2] command-list: add gitformat-loose(5) and gitpacking(7)
2026-09-09 5:25 ` [PATCH 1/2] command-list: add gitformat-loose(5) and gitpacking(7) Tuomas Ahola
@ 2026-09-09 18:15 ` Junio C Hamano
0 siblings, 0 replies; 15+ messages in thread
From: Junio C Hamano @ 2026-09-09 18:15 UTC (permalink / raw)
To: Tuomas Ahola; +Cc: git
Tuomas Ahola <taahol@utu.fi> writes:
> Three manpages from sections 5 and 7 are not featured in
> command-list.txt as concept guides or interface manuals.
>
> As easy fixes, add gitformat-loose(5) to 'developerinterfaces'
> and make gitpacking(7) a 'guide'.
>
> That leaves only gitweb.conf(5) which could be added to
> 'userinterfaces'. However, the manual would then appear
> as "web.conf" in `git help -a` which is just confusing.
> So, perhaps we are better off by leaving it out.
>
> Signed-off-by: Tuomas Ahola <taahol@utu.fi>
> ---
> command-list.txt | 2 ++
> 1 file changed, 2 insertions(+)
Good eyes. Thanks.
>
> diff --git a/command-list.txt b/command-list.txt
> index 63ae2a67c9..955eec6e7e 100644
> --- a/command-list.txt
> +++ b/command-list.txt
> @@ -225,6 +225,7 @@ gitformat-bundle developerinterfaces
> gitformat-chunk developerinterfaces
> gitformat-commit-graph developerinterfaces
> gitformat-index developerinterfaces
> +gitformat-loose developerinterfaces
> gitformat-pack developerinterfaces
> gitformat-signature developerinterfaces
> gitglossary guide
> @@ -234,6 +235,7 @@ gitk mainporcelain
> gitmailmap userinterfaces
> gitmodules userinterfaces
> gitnamespaces guide
> +gitpacking guide
> gitprotocol-capabilities developerinterfaces
> gitprotocol-common developerinterfaces
> gitprotocol-http developerinterfaces
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v2 0/2] guides: keep Documentation/Makefile and command-list.txt in sync
2026-09-09 5:24 [PATCH 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
2026-09-09 5:25 ` [PATCH 1/2] command-list: add gitformat-loose(5) and gitpacking(7) Tuomas Ahola
2026-09-09 5:25 ` [PATCH 2/2] lint-docs: check the guide list in command-list.txt Tuomas Ahola
@ 2026-09-10 19:43 ` Tuomas Ahola
2026-09-10 19:43 ` [PATCH v2 1/2] command-list.txt: add gitformat-loose(5) and gitpacking(7) Tuomas Ahola
2026-09-10 19:43 ` [PATCH v2 2/2] lint-docs: check the guide list in command-list.txt Tuomas Ahola
2026-10-29 18:48 ` [PATCH v3 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
3 siblings, 2 replies; 15+ messages in thread
From: Tuomas Ahola @ 2026-09-10 19:43 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Tuomas Ahola
Documentation/lint-manpages.sh was expanded with a new test
ensuring that command-list.txt also includes all non-command
manual pages (concept guides and interface manuals).
Based on kh/doc-datamodel.
Changes in v2:
* [1/2]: Use command-list.txt as the area identifier.
* [2/2]: Protect variables againtst whitespace breakage per review comment.
Tuomas Ahola (2):
command-list.txt: add gitformat-loose(5) and gitpacking(7)
lint-docs: check the guide list in command-list.txt
Documentation/Makefile | 2 ++
Documentation/lint-manpages.sh | 10 +++++++---
command-list.txt | 2 ++
3 files changed, 11 insertions(+), 3 deletions(-)
Intervall-diff mot v1:
1: 014da7fdff ! 1: cb6ce6cad1 command-list: add gitformat-loose(5) and gitpacking(7)
@@ Metadata
Author: Tuomas Ahola <taahol@utu.fi>
## Commit message ##
- command-list: add gitformat-loose(5) and gitpacking(7)
+ command-list.txt: add gitformat-loose(5) and gitpacking(7)
Three manpages from sections 5 and 7 are not featured in
command-list.txt as concept guides or interface manuals.
2: b24d96f732 ! 2: 2dc1ee4514 lint-docs: check the guide list in command-list.txt
@@ Documentation/lint-manpages.sh
extract_variable () {
+ file=${2:-../Makefile}
++ directory=$(dirname "$file")
(
- cat ../Makefile
-+ cat $file
++ cat "$file"
cat <<EOF
print_variable:
@\$(foreach b,\$($1),echo XXX \$(b:\$X=) YYY;)
EOF
) |
- make -C .. -f - print_variable 2>/dev/null |
-+ make -C $(dirname $file) -f - print_variable 2>/dev/null |
++ make -C "$directory" -f - print_variable 2>/dev/null |
sed -n -e 's/.*XXX \(.*\) YYY.*/\1/p'
}
base-commit: b8242b093d9e941a34460d715e3ce616a34ac3fe
--
ta/command-list-guides-sync-lint
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v2 1/2] command-list.txt: add gitformat-loose(5) and gitpacking(7)
2026-09-10 19:43 ` [PATCH v2 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
@ 2026-09-10 19:43 ` Tuomas Ahola
2026-09-10 19:43 ` [PATCH v2 2/2] lint-docs: check the guide list in command-list.txt Tuomas Ahola
1 sibling, 0 replies; 15+ messages in thread
From: Tuomas Ahola @ 2026-09-10 19:43 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Tuomas Ahola
Three manpages from sections 5 and 7 are not featured in
command-list.txt as concept guides or interface manuals.
As easy fixes, add gitformat-loose(5) to 'developerinterfaces'
and make gitpacking(7) a 'guide'.
That leaves only gitweb.conf(5) which could be added to
'userinterfaces'. However, the manual would then appear
as "web.conf" in `git help -a` which is just confusing.
So, perhaps we are better off by leaving it out.
Signed-off-by: Tuomas Ahola <taahol@utu.fi>
---
command-list.txt | 2 ++
1 file changed, 2 insertions(+)
diff --git a/command-list.txt b/command-list.txt
index 21b802c420..6667930e8f 100644
--- a/command-list.txt
+++ b/command-list.txt
@@ -224,6 +224,7 @@ gitformat-bundle developerinterfaces
gitformat-chunk developerinterfaces
gitformat-commit-graph developerinterfaces
gitformat-index developerinterfaces
+gitformat-loose developerinterfaces
gitformat-pack developerinterfaces
gitformat-signature developerinterfaces
gitglossary guide
@@ -233,6 +234,7 @@ gitk mainporcelain
gitmailmap userinterfaces
gitmodules userinterfaces
gitnamespaces guide
+gitpacking guide
gitprotocol-capabilities developerinterfaces
gitprotocol-common developerinterfaces
gitprotocol-http developerinterfaces
--
ta/command-list-guides-sync-lint
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v2 2/2] lint-docs: check the guide list in command-list.txt
2026-09-10 19:43 ` [PATCH v2 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
2026-09-10 19:43 ` [PATCH v2 1/2] command-list.txt: add gitformat-loose(5) and gitpacking(7) Tuomas Ahola
@ 2026-09-10 19:43 ` Tuomas Ahola
1 sibling, 0 replies; 15+ messages in thread
From: Tuomas Ahola @ 2026-09-10 19:43 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Tuomas Ahola
Since 2135e1ad70 (command-list.txt: add missing 'gitcredentials' and
'gitremote-helpers', 2020-08-05) there has been a comment in
Documentation/Makefile reminding developers to add new guides also to
command-list.txt. However, there is no linter script to enforce that.
Adapt Documentation/lint-manpages.sh to fill that role. Extract
MAN5_TXT and MAN7_TXT from the Makefile and check command-list.txt
against them. Exempt gitweb.conf(5) from the new linter routine.
Signed-off-by: Tuomas Ahola <taahol@utu.fi>
---
Notes:
c655855559 (doc: git: list gitdatamodel(7) as a concept guide, 2026-09-05)
should be merged in to make the new test pass.
Documentation/Makefile | 2 ++
Documentation/lint-manpages.sh | 10 +++++++---
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/Documentation/Makefile b/Documentation/Makefile
index f8dea4b395..8e28ac784b 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -67,6 +67,8 @@ MAN7_TXT += gittutorial-2.adoc
MAN7_TXT += gittutorial.adoc
MAN7_TXT += gitworkflows.adoc
+MAN_GUIDES = $(patsubst %.adoc,%,$(MAN5_TXT) $(MAN7_TXT))
+
HOWTO_TXT += $(wildcard howto/*.adoc)
DOC_DEP_TXT += $(wildcard *.adoc)
diff --git a/Documentation/lint-manpages.sh b/Documentation/lint-manpages.sh
index a0ea572382..d4a1977ba6 100755
--- a/Documentation/lint-manpages.sh
+++ b/Documentation/lint-manpages.sh
@@ -1,21 +1,23 @@
#!/bin/sh
extract_variable () {
+ file=${2:-../Makefile}
+ directory=$(dirname "$file")
(
- cat ../Makefile
+ cat "$file"
cat <<EOF
print_variable:
@\$(foreach b,\$($1),echo XXX \$(b:\$X=) YYY;)
EOF
) |
- make -C .. -f - print_variable 2>/dev/null |
+ make -C "$directory" -f - print_variable 2>/dev/null |
sed -n -e 's/.*XXX \(.*\) YYY.*/\1/p'
}
check_missing_docs () (
ret=0
- for v in $ALL_COMMANDS
+ for v in $ALL_COMMANDS $MAN_GUIDES
do
case "$v" in
git-merge-octopus) continue;;
@@ -29,6 +31,7 @@ check_missing_docs () (
git-stage) continue;;
git-legacy-*) continue;;
git-?*--?* ) continue ;;
+ gitweb.conf) continue ;;
esac
if ! test -f "$v.adoc"
@@ -87,6 +90,7 @@ check_extraneous_docs () {
BUILT_INS="$(extract_variable BUILT_INS)"
ALL_COMMANDS="$(extract_variable ALL_COMMANDS)"
EXCLUDED_PROGRAMS="$(extract_variable EXCLUDED_PROGRAMS)"
+MAN_GUIDES="$(extract_variable MAN_GUIDES ./Makefile)"
findings=$(
if ! check_missing_docs
--
ta/command-list-guides-sync-lint
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 0/2] guides: keep Documentation/Makefile and command-list.txt in sync
2026-09-09 5:24 [PATCH 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
` (2 preceding siblings ...)
2026-09-10 19:43 ` [PATCH v2 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
@ 2026-10-29 18:48 ` Tuomas Ahola
2026-10-29 18:48 ` [PATCH v3 1/2] command-list.txt: add gitformat-loose(5) and gitpacking(7) Tuomas Ahola
2026-10-29 18:48 ` [PATCH v3 2/2] lint-docs: check the guide list in command-list.txt Tuomas Ahola
3 siblings, 2 replies; 15+ messages in thread
From: Tuomas Ahola @ 2026-10-29 18:48 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Julia Evans, Patrick Steinhardt,
Kristoffer Haugsbakk, Jeff King, Tuomas Ahola
A new linter test has been added to Documentation/lint-manpages.sh
to ensure that all non-command manual pages (concept guides and
interface manuals) listed in Documentation/Makefile are present in
command-list.txt.
Changes in v3:
* [2/2]:
- Exempt obsoleted gittutorial-2(7).
- Even more defensive quotation.
Changes in v2:
* [1/2]: Use command-list.txt as the area identifier.
* [2/2]: Protect variables againtst whitespace breakage per review comment.
synthetic-base: master + je/doc-remove-gittutorial-2
Tuomas Ahola (2):
command-list.txt: add gitformat-loose(5) and gitpacking(7)
lint-docs: check the guide list in command-list.txt
Documentation/Makefile | 2 ++
Documentation/lint-manpages.sh | 11 ++++++++---
command-list.txt | 2 ++
3 files changed, 12 insertions(+), 3 deletions(-)
Intervall-diff mot v2:
1: cb6ce6cad1 = 1: 9a1ba61ac0 command-list.txt: add gitformat-loose(5) and gitpacking(7)
2: 2dc1ee4514 ! 2: 5d36d75859 lint-docs: check the guide list in command-list.txt
@@ Commit message
Adapt Documentation/lint-manpages.sh to fill that role. Extract
MAN5_TXT and MAN7_TXT from the Makefile and check command-list.txt
- against them. Exempt gitweb.conf(5) from the new linter routine.
+ against them. Exempt gitweb.conf(5) and gittutorial-2(7) from the
+ new linter routine.
Signed-off-by: Tuomas Ahola <taahol@utu.fi>
@@ Documentation/lint-manpages.sh
#!/bin/sh
extract_variable () {
-+ file=${2:-../Makefile}
-+ directory=$(dirname "$file")
++ file="${2:-../Makefile}"
++ directory="$(dirname "$file")"
(
- cat ../Makefile
+ cat "$file"
@@ Documentation/lint-manpages.sh: check_missing_docs () (
git-stage) continue;;
git-legacy-*) continue;;
git-?*--?* ) continue ;;
++ gittutorial-2) continue ;;
+ gitweb.conf) continue ;;
esac
base-commit: b9e5cff1803ab24582201ef059516eb16014b9d9
prerequisite-patch-id: 7f3cc00ab656bf1192d93c2e6a434c0d0fda2b6b
prerequisite-patch-id: eb8fbd9fc3f96e3cbffddbeaf47b99f397e5330b
--
ta/command-list-guides-sync-lint
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 1/2] command-list.txt: add gitformat-loose(5) and gitpacking(7)
2026-10-29 18:48 ` [PATCH v3 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
@ 2026-10-29 18:48 ` Tuomas Ahola
2026-11-05 19:32 ` Junio C Hamano
2026-10-29 18:48 ` [PATCH v3 2/2] lint-docs: check the guide list in command-list.txt Tuomas Ahola
1 sibling, 1 reply; 15+ messages in thread
From: Tuomas Ahola @ 2026-10-29 18:48 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Julia Evans, Patrick Steinhardt,
Kristoffer Haugsbakk, Jeff King, Tuomas Ahola
Three manpages from sections 5 and 7 are not featured in
command-list.txt as concept guides or interface manuals.
As easy fixes, add gitformat-loose(5) to 'developerinterfaces'
and make gitpacking(7) a 'guide'.
That leaves only gitweb.conf(5) which could be added to
'userinterfaces'. However, the manual would then appear
as "web.conf" in `git help -a` which is just confusing.
So, perhaps we are better off by leaving it out.
Signed-off-by: Tuomas Ahola <taahol@utu.fi>
---
command-list.txt | 2 ++
1 file changed, 2 insertions(+)
diff --git a/command-list.txt b/command-list.txt
index 5c649c882e..d96f56a379 100644
--- a/command-list.txt
+++ b/command-list.txt
@@ -225,6 +225,7 @@ gitformat-bundle developerinterfaces
gitformat-chunk developerinterfaces
gitformat-commit-graph developerinterfaces
gitformat-index developerinterfaces
+gitformat-loose developerinterfaces
gitformat-pack developerinterfaces
gitformat-signature developerinterfaces
gitglossary guide
@@ -234,6 +235,7 @@ gitk mainporcelain
gitmailmap userinterfaces
gitmodules userinterfaces
gitnamespaces guide
+gitpacking guide
gitprotocol-capabilities developerinterfaces
gitprotocol-common developerinterfaces
gitprotocol-http developerinterfaces
--
ta/command-list-guides-sync-lint
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 2/2] lint-docs: check the guide list in command-list.txt
2026-10-29 18:48 ` [PATCH v3 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
2026-10-29 18:48 ` [PATCH v3 1/2] command-list.txt: add gitformat-loose(5) and gitpacking(7) Tuomas Ahola
@ 2026-10-29 18:48 ` Tuomas Ahola
2026-11-02 18:39 ` Julia Evans
2026-11-05 19:41 ` Junio C Hamano
1 sibling, 2 replies; 15+ messages in thread
From: Tuomas Ahola @ 2026-10-29 18:48 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Julia Evans, Patrick Steinhardt,
Kristoffer Haugsbakk, Jeff King, Tuomas Ahola
Since 2135e1ad70 (command-list.txt: add missing 'gitcredentials' and
'gitremote-helpers', 2020-08-05) there has been a comment in
Documentation/Makefile reminding developers to add new guides also to
command-list.txt. However, there is no linter script to enforce that.
Adapt Documentation/lint-manpages.sh to fill that role. Extract
MAN5_TXT and MAN7_TXT from the Makefile and check command-list.txt
against them. Exempt gitweb.conf(5) and gittutorial-2(7) from the
new linter routine.
Signed-off-by: Tuomas Ahola <taahol@utu.fi>
---
Documentation/Makefile | 2 ++
Documentation/lint-manpages.sh | 11 ++++++++---
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/Documentation/Makefile b/Documentation/Makefile
index f8dea4b395..8e28ac784b 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -67,6 +67,8 @@ MAN7_TXT += gittutorial-2.adoc
MAN7_TXT += gittutorial.adoc
MAN7_TXT += gitworkflows.adoc
+MAN_GUIDES = $(patsubst %.adoc,%,$(MAN5_TXT) $(MAN7_TXT))
+
HOWTO_TXT += $(wildcard howto/*.adoc)
DOC_DEP_TXT += $(wildcard *.adoc)
diff --git a/Documentation/lint-manpages.sh b/Documentation/lint-manpages.sh
index a0ea572382..31ee3cbe72 100755
--- a/Documentation/lint-manpages.sh
+++ b/Documentation/lint-manpages.sh
@@ -1,21 +1,23 @@
#!/bin/sh
extract_variable () {
+ file="${2:-../Makefile}"
+ directory="$(dirname "$file")"
(
- cat ../Makefile
+ cat "$file"
cat <<EOF
print_variable:
@\$(foreach b,\$($1),echo XXX \$(b:\$X=) YYY;)
EOF
) |
- make -C .. -f - print_variable 2>/dev/null |
+ make -C "$directory" -f - print_variable 2>/dev/null |
sed -n -e 's/.*XXX \(.*\) YYY.*/\1/p'
}
check_missing_docs () (
ret=0
- for v in $ALL_COMMANDS
+ for v in $ALL_COMMANDS $MAN_GUIDES
do
case "$v" in
git-merge-octopus) continue;;
@@ -29,6 +31,8 @@ check_missing_docs () (
git-stage) continue;;
git-legacy-*) continue;;
git-?*--?* ) continue ;;
+ gittutorial-2) continue ;;
+ gitweb.conf) continue ;;
esac
if ! test -f "$v.adoc"
@@ -87,6 +91,7 @@ check_extraneous_docs () {
BUILT_INS="$(extract_variable BUILT_INS)"
ALL_COMMANDS="$(extract_variable ALL_COMMANDS)"
EXCLUDED_PROGRAMS="$(extract_variable EXCLUDED_PROGRAMS)"
+MAN_GUIDES="$(extract_variable MAN_GUIDES ./Makefile)"
findings=$(
if ! check_missing_docs
--
ta/command-list-guides-sync-lint
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH v3 2/2] lint-docs: check the guide list in command-list.txt
2026-10-29 18:48 ` [PATCH v3 2/2] lint-docs: check the guide list in command-list.txt Tuomas Ahola
@ 2026-11-02 18:39 ` Julia Evans
2026-11-03 17:09 ` Tuomas Ahola
2026-11-05 19:41 ` Junio C Hamano
1 sibling, 1 reply; 15+ messages in thread
From: Julia Evans @ 2026-11-02 18:39 UTC (permalink / raw)
To: Tuomas Ahola, git
Cc: Junio C Hamano, Patrick Steinhardt, Kristoffer Haugsbakk,
Jeff King
On Thu, Oct 29, 2026, at 2:48 PM, Tuomas Ahola wrote:
> Since 2135e1ad70 (command-list.txt: add missing 'gitcredentials' and
> 'gitremote-helpers', 2020-08-05) there has been a comment in
> Documentation/Makefile reminding developers to add new guides also to
> command-list.txt. However, there is no linter script to enforce that.
>
> Adapt Documentation/lint-manpages.sh to fill that role. Extract
> MAN5_TXT and MAN7_TXT from the Makefile and check command-list.txt
> against them. Exempt gitweb.conf(5) and gittutorial-2(7) from the
> new linter routine.
>
> Signed-off-by: Tuomas Ahola <taahol@utu.fi>
> ---
> Documentation/Makefile | 2 ++
> Documentation/lint-manpages.sh | 11 ++++++++---
> 2 files changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/Makefile b/Documentation/Makefile
> index f8dea4b395..8e28ac784b 100644
> --- a/Documentation/Makefile
> +++ b/Documentation/Makefile
> @@ -67,6 +67,8 @@ MAN7_TXT += gittutorial-2.adoc
> MAN7_TXT += gittutorial.adoc
> MAN7_TXT += gitworkflows.adoc
>
> +MAN_GUIDES = $(patsubst %.adoc,%,$(MAN5_TXT) $(MAN7_TXT))
> +
> HOWTO_TXT += $(wildcard howto/*.adoc)
>
> DOC_DEP_TXT += $(wildcard *.adoc)
> diff --git a/Documentation/lint-manpages.sh b/Documentation/lint-manpages.sh
> index a0ea572382..31ee3cbe72 100755
> --- a/Documentation/lint-manpages.sh
> +++ b/Documentation/lint-manpages.sh
> @@ -1,21 +1,23 @@
> #!/bin/sh
>
> extract_variable () {
> + file="${2:-../Makefile}"
I think what's happening here is that previously we were
getting the variables from ./Makefile (in the basedir), but now we need
some variables from ./Makefile and some from Documentation/Makefile.
Would it make sense to get all the variables from Documentation/Makefile?
> + directory="$(dirname "$file")"
> (
> - cat ../Makefile
> + cat "$file"
> cat <<EOF
> print_variable:
> @\$(foreach b,\$($1),echo XXX \$(b:\$X=) YYY;)
> EOF
> ) |
> - make -C .. -f - print_variable 2>/dev/null |
> + make -C "$directory" -f - print_variable 2>/dev/null |
> sed -n -e 's/.*XXX \(.*\) YYY.*/\1/p'
> }
>
> check_missing_docs () (
> ret=0
>
> - for v in $ALL_COMMANDS
> + for v in $ALL_COMMANDS $MAN_GUIDES
> do
> case "$v" in
> git-merge-octopus) continue;;
> @@ -29,6 +31,8 @@ check_missing_docs () (
> git-stage) continue;;
> git-legacy-*) continue;;
> git-?*--?* ) continue ;;
> + gittutorial-2) continue ;;
> + gitweb.conf) continue ;;
> esac
>
> if ! test -f "$v.adoc"
> @@ -87,6 +91,7 @@ check_extraneous_docs () {
> BUILT_INS="$(extract_variable BUILT_INS)"
> ALL_COMMANDS="$(extract_variable ALL_COMMANDS)"
> EXCLUDED_PROGRAMS="$(extract_variable EXCLUDED_PROGRAMS)"
> +MAN_GUIDES="$(extract_variable MAN_GUIDES ./Makefile)"
>
> findings=$(
> if ! check_missing_docs
> --
> ta/command-list-guides-sync-lint
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v3 2/2] lint-docs: check the guide list in command-list.txt
2026-11-02 18:39 ` Julia Evans
@ 2026-11-03 17:09 ` Tuomas Ahola
0 siblings, 0 replies; 15+ messages in thread
From: Tuomas Ahola @ 2026-11-03 17:09 UTC (permalink / raw)
To: Julia Evans
Cc: git, Junio C Hamano, Patrick Steinhardt, Kristoffer Haugsbakk,
Jeff King
"Julia Evans" <julia@jvns.ca> wrote:
> On Thu, Oct 29, 2026, at 2:48 PM, Tuomas Ahola wrote:
> > diff --git a/Documentation/lint-manpages.sh b/Documentation/lint-manpages.sh
> > index a0ea572382..31ee3cbe72 100755
> > --- a/Documentation/lint-manpages.sh
> > +++ b/Documentation/lint-manpages.sh
> > @@ -1,21 +1,23 @@
> > #!/bin/sh
> >
> > extract_variable () {
> > + file="${2:-../Makefile}"
>
> I think what's happening here is that previously we were
> getting the variables from ./Makefile (in the basedir), but now we need
> some variables from ./Makefile and some from Documentation/Makefile.
>
> Would it make sense to get all the variables from Documentation/Makefile?
>
If that's possible, then sure, why not. But I think we are mostly extracting
from the top-level Makefile such information that simply isn't available in the
docs Makefile (and vice versa)?
> > + directory="$(dirname "$file")"
> > (
> > - cat ../Makefile
> > + cat "$file"
> > cat <<EOF
> > print_variable:
> > @\$(foreach b,\$($1),echo XXX \$(b:\$X=) YYY;)
> > EOF
> > ) |
> > - make -C .. -f - print_variable 2>/dev/null |
> > + make -C "$directory" -f - print_variable 2>/dev/null |
> > sed -n -e 's/.*XXX \(.*\) YYY.*/\1/p'
> > }
> >
> > check_missing_docs () (
> > ret=0
> >
> > - for v in $ALL_COMMANDS
> > + for v in $ALL_COMMANDS $MAN_GUIDES
> > do
> > case "$v" in
> > git-merge-octopus) continue;;
> > @@ -29,6 +31,8 @@ check_missing_docs () (
> > git-stage) continue;;
> > git-legacy-*) continue;;
> > git-?*--?* ) continue ;;
> > + gittutorial-2) continue ;;
> > + gitweb.conf) continue ;;
> > esac
> >
> > if ! test -f "$v.adoc"
> > @@ -87,6 +91,7 @@ check_extraneous_docs () {
> > BUILT_INS="$(extract_variable BUILT_INS)"
> > ALL_COMMANDS="$(extract_variable ALL_COMMANDS)"
> > EXCLUDED_PROGRAMS="$(extract_variable EXCLUDED_PROGRAMS)"
> > +MAN_GUIDES="$(extract_variable MAN_GUIDES ./Makefile)"
> >
> > findings=$(
> > if ! check_missing_docs
> > --
> > ta/command-list-guides-sync-lint
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v3 1/2] command-list.txt: add gitformat-loose(5) and gitpacking(7)
2026-10-29 18:48 ` [PATCH v3 1/2] command-list.txt: add gitformat-loose(5) and gitpacking(7) Tuomas Ahola
@ 2026-11-05 19:32 ` Junio C Hamano
0 siblings, 0 replies; 15+ messages in thread
From: Junio C Hamano @ 2026-11-05 19:32 UTC (permalink / raw)
To: Tuomas Ahola
Cc: git, Julia Evans, Patrick Steinhardt, Kristoffer Haugsbakk,
Jeff King
Tuomas Ahola <taahol@utu.fi> writes:
> Three manpages from sections 5 and 7 are not featured in
> command-list.txt as concept guides or interface manuals.
>
> As easy fixes, add gitformat-loose(5) to 'developerinterfaces'
> and make gitpacking(7) a 'guide'.
>
> That leaves only gitweb.conf(5) which could be added to
> 'userinterfaces'. However, the manual would then appear
> as "web.conf" in `git help -a` which is just confusing.
> So, perhaps we are better off by leaving it out.
>
> Signed-off-by: Tuomas Ahola <taahol@utu.fi>
> ---
> command-list.txt | 2 ++
> 1 file changed, 2 insertions(+)
I agree we can decide what to do about gitweb. Is the list
otherwise complete to cover the available documents in .adoc format?
Thanks.
>
> diff --git a/command-list.txt b/command-list.txt
> index 5c649c882e..d96f56a379 100644
> --- a/command-list.txt
> +++ b/command-list.txt
> @@ -225,6 +225,7 @@ gitformat-bundle developerinterfaces
> gitformat-chunk developerinterfaces
> gitformat-commit-graph developerinterfaces
> gitformat-index developerinterfaces
> +gitformat-loose developerinterfaces
> gitformat-pack developerinterfaces
> gitformat-signature developerinterfaces
> gitglossary guide
> @@ -234,6 +235,7 @@ gitk mainporcelain
> gitmailmap userinterfaces
> gitmodules userinterfaces
> gitnamespaces guide
> +gitpacking guide
> gitprotocol-capabilities developerinterfaces
> gitprotocol-common developerinterfaces
> gitprotocol-http developerinterfaces
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v3 2/2] lint-docs: check the guide list in command-list.txt
2026-10-29 18:48 ` [PATCH v3 2/2] lint-docs: check the guide list in command-list.txt Tuomas Ahola
2026-11-02 18:39 ` Julia Evans
@ 2026-11-05 19:41 ` Junio C Hamano
1 sibling, 0 replies; 15+ messages in thread
From: Junio C Hamano @ 2026-11-05 19:41 UTC (permalink / raw)
To: Tuomas Ahola
Cc: git, Julia Evans, Patrick Steinhardt, Kristoffer Haugsbakk,
Jeff King
Tuomas Ahola <taahol@utu.fi> writes:
> extract_variable () {
> + file="${2:-../Makefile}"
> + directory="$(dirname "$file")"
> (
> - cat ../Makefile
> + cat "$file"
> cat <<EOF
> print_variable:
> @\$(foreach b,\$($1),echo XXX \$(b:\$X=) YYY;)
> EOF
> ) |
> - make -C .. -f - print_variable 2>/dev/null |
> + make -C "$directory" -f - print_variable 2>/dev/null |
I like this sayIt pattern to prepend a snippet in front of the
Makefile. As we allow extracting from different Makefile with this
change, it would make more sense to (1) make the path to the Makefile
mandatory, (2) move the path to the Makefile first, and (3) use not
just the $1 but all the remainder of the command line as listing the
symbols we are inquiring.
which would mean ...
> @@ -87,6 +91,7 @@ check_extraneous_docs () {
> BUILT_INS="$(extract_variable BUILT_INS)"
> ALL_COMMANDS="$(extract_variable ALL_COMMANDS)"
> EXCLUDED_PROGRAMS="$(extract_variable EXCLUDED_PROGRAMS)"
> +MAN_GUIDES="$(extract_variable MAN_GUIDES ./Makefile)"
These would become
BUILT_INS="$(extract_variable ../Makefile BUILT_INS)"
ALL_COMMANDS="$(extract_variable ../Makefile ALL_COMMANDS)"
EXCLUDED_PROGRAMS="$(extract_variable ../Makefile EXCLUDED_PROGRAMS)"
MAN_GUIDES="$(extract_variable Makefile MAN_GUIDES)"
Other than that, looking good.
Thanks.
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2026-11-05 19:41 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-09 5:24 [PATCH 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
2026-09-09 5:25 ` [PATCH 1/2] command-list: add gitformat-loose(5) and gitpacking(7) Tuomas Ahola
2026-09-09 18:15 ` Junio C Hamano
2026-09-09 5:25 ` [PATCH 2/2] lint-docs: check the guide list in command-list.txt Tuomas Ahola
2026-09-09 18:15 ` Junio C Hamano
2026-09-10 19:43 ` [PATCH v2 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
2026-09-10 19:43 ` [PATCH v2 1/2] command-list.txt: add gitformat-loose(5) and gitpacking(7) Tuomas Ahola
2026-09-10 19:43 ` [PATCH v2 2/2] lint-docs: check the guide list in command-list.txt Tuomas Ahola
2026-10-29 18:48 ` [PATCH v3 0/2] guides: keep Documentation/Makefile and command-list.txt in sync Tuomas Ahola
2026-10-29 18:48 ` [PATCH v3 1/2] command-list.txt: add gitformat-loose(5) and gitpacking(7) Tuomas Ahola
2026-11-05 19:32 ` Junio C Hamano
2026-10-29 18:48 ` [PATCH v3 2/2] lint-docs: check the guide list in command-list.txt Tuomas Ahola
2026-11-02 18:39 ` Julia Evans
2026-11-03 17:09 ` Tuomas Ahola
2026-11-05 19:41 ` Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox