Subject: Re: [PATCH] rev-parse: have --parseopt callers exit 0 on --help

From: "brian m. carlson" <[email-masked]>
Date: Wed, 18 Mar 2026 00:24:38 +0000

On 2026-03-17 at 18:44:41, Jeff King wrote:
> So unless somebody can come up with a more compelling example, I don't
> really see much backwards-compatibility risk. But maybe I just lack
> imagination. ;)

The only reason I can imagine intentionally using `-h` in a script is to
find out whether an option is supported.  For instance, I have this
alias:

    co = "!f() { if git checkout -h | grep -qs recurse-submodules; \
        then git checkout --recurse-submodules \"$@\"; \
        else git checkout \"$@\" && git sui; \
        fi; };f"

(`sui` is `submodule update --init`.)

In most cases, that's going to be upstream of a pipe, so unless you're
using `-o pipefail` (which is only in POSIX in POSIX 1003.1-2024), it's
going to succeed anyway.

I suppose one can also use it to generate a manual page, which manual
page generators do, but that seems silly when Git provides much better
ones unless you desperately need one in a different language for which
Git has translations but no manual page.

None of these seem like they're likely to care about the exit status and
I suspect that if they do, they are probably using `|| true` to ignore
the unexpected 129 exit code.

So I agree that there's unlikely to be any sort of backward
compatibility issues.  If the consensus is that this is shipped only in
3.0, then we can do that, but I think many people are not going to care
and those that do will welcome the change, so I'd just rather treat it
as a bug that we fix.
-- 
brian m. carlson (they/them)
Toronto, Ontario, CA