From: Keith Thompson <Keith.S.Thompson@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Keith Thompson <Keith.S.Thompson@gmail.com>
Subject: Re: Bug report: Minor glitch in "git help" error message
Date: Thu, 17 Apr 2025 20:52:10 -0700 [thread overview]
Message-ID: <CAAHpriNYikDFwiTpjZEupG4yWOkbzW5DnBcsUnBKkfxxxtWNkw@mail.gmail.com> (raw)
In-Reply-To: <xmqq5xj2clcx.fsf@gitster.g>
On Thu, Apr 17, 2025 at 6:24 PM Junio C Hamano <gitster@pobox.com> wrote:
>
> Keith Thompson <Keith.S.Thompson@gmail.com> writes:
>
> > What did you do before the bug happened? (Steps to reproduce your issue)
> > git help nosuchcommand
> >
> > What did you expect to happen? (Expected behavior)
> > An error message: "No manual entry for git-nosuchcommand"
> >
> > What happened instead? (Actual behavior)
> > An error message: "No manual entry for gitnosuchcommand"
>
> I am of two minds. When "git help" is asked for commands, your
> suggestion does make sense, i.e.
>
> $ git help dog-file
> No manual entry for gitdog-file
>
> And these two are moral equivalents.
>
> $ git help cat-file
> $ man git-cat-file
>
> But "git help" can ask for things other than subcommands.
> For example, these two are equivalents.
>
> $ git help glossary
> $ man gitglossary
>
> Notice the lack of "-" there?
Indeed. I've just learned several things that I either didn't know
or had forgotten:
* "git help foo" works for values of "foo" that aren't command names,
like "glossary" or "cli".
* "git help subcommand" directly invokes "man git-subcommand".
* "git help topic" directly invokes "man gittopic".
Clearly, "git help" knows whether the user wanted a subcommand or a
topic if it's something that exists. If it isn't, "git help" has no
way of knowing what was intended.
Some proposed solutions, none of which I really like (except maybe
the first):
* Assume that the unrecognized word is a subcommand name. There will
be errors (a message referring to "git-topic" that should have been
"gittopic"), but I speculate that *most* (mistyped) arguments are
command names.
* Produce an error message like:
"No such manual entry for git-foo or gitfoo"
Problem: The error message comes directly from the "man" command,
which can't be persuaded to produce the above message.
Probably more effort than it's worth, and a potential new source
of bugs.
* Construct the man page names the same way for subcommands and topics,
so "git help glossary" invokes "man git-glossary". This is a change
to long-standing practice, and I don't expect this idea to be taken
seriously.
* Create aliases for all the topic names, so "git-glossary.7.gz"
is a symlink to "gitglossary.7.gz". Likely too confusing, and
not worthwhile for the sake of a one-character glitch in an error
message. (Except that I might expect "man git-cli" to work, but
I almost always use Git's help mechanism rather than "man".)
>
> > If "nosuchcommand" were a git command, the man page would be
> > readable by typing "man git-nosuchcommand". The error message
> > should reflect that. (The error message is actually produced
> > by the "man" command.)
>
> In other words, if "nosuchguide" were a concept with guide, the man
> page is readable by "man gitnosuchguide", and the error message does
> reflect it.
>
> Unlike "git foo --help", where it is clear that the user expected a
> subommand "foo", when the user says "git help foo", we cannot tell
> whether the user asked for documentation for a command or a concept
> guide, so adding "-" there is a bit like robbing Peter to pay Paul.
>
> Thanks for a report.
>
>
next prev parent reply other threads:[~2025-04-18 3:52 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-17 22:56 Bug report: Minor glitch in "git help" error message Keith Thompson
2025-04-18 1:24 ` Junio C Hamano
2025-04-18 3:52 ` Keith Thompson [this message]
2025-04-18 9:16 ` Jeff King
2025-04-18 13:27 ` Junio C Hamano
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAAHpriNYikDFwiTpjZEupG4yWOkbzW5DnBcsUnBKkfxxxtWNkw@mail.gmail.com \
--to=keith.s.thompson@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/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.
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 NNTP newsgroup(s).