Re: [PATCH 4/5] doc lint: fix bugs in, simplify and improve lint script
From: Junio C Hamano <hidden>
Date: 2021-03-28 06:39:32
Ævar Arnfjörð Bjarmason [off-list ref] writes:
- Was using File::Find to recursively find *.txt files in Documentation/, let's instead use the Makefile as a source of truth for *.txt files, and pass it down to the script.
OK.
- We now don't lint linkgit:* in RelNotes/* or technical/*, which we shouldn't have been doing in the first place anyway.
I understand RelNotes (which I consider is plain text file), but are technical/* documentation forbidden from referring to our manual pages for the commands they talk about?
- When the doc-diff script was added in beb188e22a (add a script to diff rendered documentation, 2018-08-06) we started sometimes having a "git worktree" under "documentation". This tree contains a full checkout of git.git, as a result the "lint" script would recurse into that, and lint any *.txt file found in that entire repository.
Ouch.
In practice the only in-tree "linkgit" outside of the Documentation/ tree is contrib/contacts/git-contacts.txt and contrib/subtree/git-subtree.txt, so this wouldn't emit any errors
Hmm, the nested copy of git has Documentation/ subdirectory of its own, and we do not want to scan it, I think. That is a problem worth fixing. Thanks for noticing it.
Now we instead simply trust the Makefile to give us *.txt files, and since the Makefile also knows what sections each page should be in we don't have to open the files ourselves and try to parse that out. As a bonus this will also catch bugs with the section line in the file being incorrect.
OK.
quoted hunk
diff --git a/Documentation/Makefile b/Documentation/Makefile index 7313956d73f..6bfd8c75772 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile@@ -4,6 +4,7 @@ MAN5_TXT = MAN7_TXT = HOWTO_TXT = INCLUDE_TARGETS_TXT = +ALL_TXT = TECH_DOCS = ARTICLES = SP_ARTICLES =@@ -49,6 +50,13 @@ HOWTO_TXT += $(wildcard howto/*.txt) INCLUDE_TARGETS_TXT += $(wildcard *.txt) INCLUDE_TARGETS_TXT += $(wildcard config/*.txt) +# For linting +ALL_TXT += $(MAN1_TXT) +ALL_TXT += $(MAN5_TXT) +ALL_TXT += $(MAN7_TXT) +ALL_TXT += $(HOWTO_TXT) +ALL_TXT += $(INCLUDE_TARGETS_TXT)
The "INCLUDE_TARGETS_TXT" looks more and more like "all txt sources", which is a superset of MAN1_TXT and its friends. Listing all of them in ALL_TXT duplicated feels somewhat iffy.
quoted hunk
ifdef MAN_FILTER MAN_TXT = $(filter $(MAN_FILTER),$(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT)) else@@ -477,7 +485,11 @@ print-man1: @for i in $(MAN1_TXT); do echo $$i; done lint-docs:: - $(QUIET_LINT)$(PERL_PATH) lint-gitlink.perl + $(QUIET_LINT)$(PERL_PATH) lint-gitlink.perl \ + --section=1 $(MAN1_TXT) \ + --section=5 $(MAN5_TXT) \ + --section=7 $(MAN7_TXT) \ + --to-lint $(ALL_TXT)