Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> 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. > 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. > 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)