git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: Re: [PATCH 3/7] check-docs: do not pretend that commands are listed which are excluded
Date: Mon, 15 Apr 2019 16:18:57 +0900	[thread overview]
Message-ID: <xmqq4l6zsplq.fsf@gitster-ct.c.googlers.com> (raw)
In-Reply-To: 96ced7e17cb40c4d0f15955c482857196862ab80.1555070430.git.gitgitgadget@gmail.com

"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
writes:

> From: Johannes Schindelin <johannes.schindelin@gmx.de>
> Subject: Re: [PATCH 3/7] check-docs: do not pretend that commands are listed which are excluded

Sorry, but I cannot quite parse the title.  I am guessing that you
meant "do not pretend that commands, which are excluded, are
listed", which is a mouthful but at least can be parseable X-<.

> In the previous commit, we taught `git help -a` to stop listing commands
> that are excluded from the build.
>
> In this commit, we stop `check-docs` from claiming that those commands
> are listed.

I think the result would become more readable (and I suspect that it
would at the same time make the title parseable, but I am not sure
as I do not quite know what the title wants to say in the first
place) if you clarified the verb "list" here perhaps with "listed in
command-list.txt".

The output from the sed script that filters the contents of the
command-list.txt file is compared with the ALL_COMMANDS list, and
we complain if an entry in command-list.txt is no longer in the
ALL_COMMANDS list (i.e. a developer removed a stale command but
forgot to remove it from the command-list.txt) [*1*].  

The step 2/7 marked the subcommands that ought to be on ALL_COMMANDS
for the purpose of this check but that are excluded from the build,
as a preparation for this step, and this step 3/7 uses the list of
excluded ones to avoid complaining them being in the categorized
list of subcommands (i.e. command-list.txt).

Makes sense.

	Side note *1*.  Another thing we would want to catch is a
	developer adding a new subcommand to ALL_COMMANDS while
	forgetting to give it a category in the command-list.txt
	file.  That is done in the "other" loop before this part,
	and the patch is correct that it does not touch that loop to
	filter the command-list using the EXCLUDED_PROGRAMS list.

We can read that "stop listing them" is done as means to some end,
but it is unclear what the end-user/developer visible effect this
step intends to achieve.  After thinking about what the patch does a
bit more, here is what I came up with.

    check-docs: allow excluded subcommands to be in the command-list file

    One of the things this build target makes sure is that all
    entries in the command-list.txt are about subcommands that still
    exist in the system (i.e. if a developer removes a subcommand
    and forgets to remove it from the command list file, it needs to
    be flagged as an incomplete change), and it is done by comparing
    the entries in the file against the list of subprograms in
    $(ALL_COMMANDS) variable.

    However, the latter list is dynamic---not all build contains all
    the Git subcommands categorized in the command-list.txt file.
    And such a partial build would falsely trigger the check,
    complaining that some subcommands are removed but still are
    listed in the command list file.

    Fix this by teaching the logic to use the EXCLUDED_PROGRAMS list
    prepared in the previous step.

or something like that, perhaps?

The same logic to warn about "removed but listed" commands that are
not built (hence missing from ALL_COMMANDS list) is also fed the
list of all documented subcommands by looking at "make print-man1"
in the Documentation directory, so that it can issue "removed but
documented" when a developer removes a subcommand but forgets to
remove its documentation.  Don't we need to teach a similar
treatment on that side of the coin?

I am wondering if it makes that easier to instead add EXCLUDED ones
back to ALL_COMMANDS on the receiving end of the pipe, rather than
filtering them out in the sed script that reads from command-list,
i.e.

	# revert what this patch did to the upstream of the pipe
	(
		sed ... filters comments ... \
			-e 's/^/listed /' command-list.txt;
		$(MAKE) -C Documentation print-man1 |
		sed ... -e 's/^/documented /'
	) | \
	while read how cmd; \
	do
		# instead add them back here
		case " $(patsubst %$X,%,$(ALL_COMMANDS) $(EXCLUDED)) " in
		*" $$cmd "*) : ok ;;
		...

That way, the documentation side can be fixed at the same time as
the command-list side of the check that incorrectly reports "removed
but listed".

If we go that route, the earlier rewrite of the proposed log message
I suggested may want to be further updated.  Perhaps by replacing
"use the EXCLUDED_PROGRAMS list prepared in the previous step" with
"add the EXCLUDED_PROGRAMS list prepared in the previous step back
to ALL_COMMANDS list when checking entries from the list of
documented and categorized subcommands." or something like that.

Thanks.

  reply	other threads:[~2019-04-15  7:19 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-12 12:00 [PATCH 0/7] Assorted Documentation-related fixes Johannes Schindelin via GitGitGadget
2019-04-12 12:00 ` [PATCH 1/7] remote-testgit: move it into the support directory for t5801 Johannes Schindelin via GitGitGadget
2019-04-15  7:08   ` Junio C Hamano
2019-04-18 11:46     ` Johannes Schindelin
2019-04-12 12:00 ` [PATCH 2/7] help -a: do not list commands that are excluded from the build Johannes Schindelin via GitGitGadget
2019-04-15  7:08   ` Junio C Hamano
2019-04-18 12:06     ` Johannes Schindelin
2019-04-12 12:00 ` [PATCH 3/7] check-docs: do not pretend that commands are listed which are excluded Johannes Schindelin via GitGitGadget
2019-04-15  7:18   ` Junio C Hamano [this message]
2019-04-18 12:41     ` Johannes Schindelin
2019-04-12 12:00 ` [PATCH 4/7] docs: exclude documentation for commands that have been excluded Johannes Schindelin via GitGitGadget
2019-04-12 18:46   ` Eric Sunshine
2019-04-15  3:09     ` Junio C Hamano
2019-04-15  4:16       ` Eric Sunshine
2019-04-15  4:18         ` Eric Sunshine
2019-04-18 13:08           ` Johannes Schindelin
2019-04-15 14:50         ` Jeff King
2019-04-16  4:12           ` Junio C Hamano
2019-04-18 13:06           ` Johannes Schindelin
2019-04-18 16:01             ` Jeff King
2019-04-12 12:00 ` [PATCH 5/7] check-docs: do not bother checking for legacy scripts' documentation Johannes Schindelin via GitGitGadget
2019-04-15  7:19   ` Junio C Hamano
2019-04-12 12:00 ` [PATCH 6/7] test-tool: handle the `-C <directory>` option just like `git` Johannes Schindelin via GitGitGadget
2019-04-12 12:00 ` [PATCH 7/7] Turn `git serve` into a test helper Johannes Schindelin via GitGitGadget
2019-04-15 14:03   ` Junio C Hamano
2019-04-17  3:46     ` Jeff King
2019-04-17  5:40       ` Junio C Hamano
2019-04-17 18:22         ` Josh Steadmon
2019-04-18  1:58           ` Junio C Hamano
2019-04-18 12:17     ` Johannes Schindelin
2019-04-18 13:16 ` [PATCH v2 0/8] Assorted Documentation-related fixes Johannes Schindelin via GitGitGadget
2019-04-18 13:16   ` [PATCH v2 1/8] remote-testgit: move it into the support directory for t5801 Johannes Schindelin via GitGitGadget
2019-04-18 13:16   ` [PATCH v2 2/8] Makefile: drop the NO_INSTALL variable Johannes Schindelin via GitGitGadget
2019-04-18 13:16   ` [PATCH v2 3/8] help -a: do not list commands that are excluded from the build Johannes Schindelin via GitGitGadget
2019-04-18 13:16   ` [PATCH v2 4/8] check-docs: allow command-list.txt to contain excluded commands Johannes Schindelin via GitGitGadget
2019-04-18 13:16   ` [PATCH v2 5/8] docs: exclude documentation for commands that have been excluded Johannes Schindelin via GitGitGadget
2019-04-19  5:20     ` Junio C Hamano
2019-04-29 12:28       ` Johannes Schindelin
2019-04-18 13:16   ` [PATCH v2 6/8] check-docs: do not bother checking for legacy scripts' documentation Johannes Schindelin via GitGitGadget
2019-04-18 13:16   ` [PATCH v2 7/8] test-tool: handle the `-C <directory>` option just like `git` Johannes Schindelin via GitGitGadget
2019-04-18 13:16   ` [PATCH v2 8/8] Turn `git serve` into a test helper Johannes Schindelin via GitGitGadget

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqq4l6zsplq.fsf@gitster-ct.c.googlers.com \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=johannes.schindelin@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).