summaryrefslogtreecommitdiff
path: root/Documentation/Makefile
diff options
context:
space:
mode:
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>2021-04-09 15:02:47 (GMT)
committerJunio C Hamano <gitster@pobox.com>2021-04-11 06:36:34 (GMT)
commitd2c9908076b00aa59037673e7f262fc6f8867559 (patch)
tree7d2a26f9d7ac42c8cc6f2af65001a5e585223e49 /Documentation/Makefile
parent3951eeb6d981cf9b9109c905d773c978e6de3f0d (diff)
downloadgit-d2c9908076b00aa59037673e7f262fc6f8867559.zip
git-d2c9908076b00aa59037673e7f262fc6f8867559.tar.gz
git-d2c9908076b00aa59037673e7f262fc6f8867559.tar.bz2
doc lint: fix bugs in, simplify and improve lint script
The lint-gitlink.perl script added in ab81411ced (ci: validate "linkgit:" in documentation, 2016-05-04) was more complex than it needed to be. It: - 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. - We now don't lint linkgit:* in RelNotes/* or technical/*, which we shouldn't have been doing in the first place anyway. - 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. 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 Now we instead simply trust the Makefile to give us *.txt files. 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 files themselves being incorrect. The structure of the new script is mostly based on t/check-non-portable-shell.pl. As an added bonus it will also use pos() to print where the problems it finds are, e.g. given an issue like: diff --git a/Documentation/git-cherry.txt b/Documentation/git-cherry.txt [...] and line numbers. git-cherry therefore detects when commits have been -"copied" by means of linkgit:git-cherry-pick[1], linkgit:git-am[1] or -linkgit:git-rebase[1]. +"copied" by means of linkgit:git-cherry-pick[2], linkgit:git-am[3] or +linkgit:git-rebase[4]. We'll now emit: git-cherry.txt:20: error: git-cherry-pick[2]: wrong section (should be 1), shown with 'HERE' below: git-cherry.txt:20: '"copied" by means of linkgit:git-cherry-pick[2]' <-- HERE git-cherry.txt:20: error: git-am[3]: wrong section (should be 1), shown with 'HERE' below: git-cherry.txt:20: '"copied" by means of linkgit:git-cherry-pick[2], linkgit:git-am[3]' <-- HERE git-cherry.txt:21: error: git-rebase[4]: wrong section (should be 1), shown with 'HERE' below: git-cherry.txt:21: 'linkgit:git-rebase[4]' <-- HERE Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'Documentation/Makefile')
-rw-r--r--Documentation/Makefile6
1 files changed, 5 insertions, 1 deletions
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 164d5ff..de55c4e 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -478,7 +478,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 \
+ $(HOWTO_TXT) $(DOC_DEP_TXT) \
+ --section=1 $(MAN1_TXT) \
+ --section=5 $(MAN5_TXT) \
+ --section=7 $(MAN7_TXT)
ifeq ($(wildcard po/Makefile),po/Makefile)
doc-l10n install-l10n::