Re: [PATCH 4/5] doc lint: fix bugs in, simplify and improve lint script
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 28, 2021, 06:38 UTC
- Message-ID
- <xmqqv99bn5ov.fsf@gitster.g>
- In-Reply-To
- <patch-4.6-5c8e8f21495-20210326T103454Z-avarab@gmail.com>
Ævar Arnfjörð Bjarmason <avarab@gmail.com> 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?
Show 5 quoted lines
> - 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.
Show 5 quoted lines
> 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.
Show 22 quoted lines
> 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.
Show 13 quoted lines
> 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)