From: Jonas Konrad Date: Wed, 15 Jan 2025 14:47:56 GMT Subject: Re: Git branch outputs usage message on stderr Message-ID: <17c78893-d200-4646-a81b-28f32bcf958e@uni-muenster.de> In-Reply-To: Well, let me add that one detail: I could not find any other git sub command which behaves the same (admittedly haven't tried all). Instead, the ones I have tried give their help output usually on stdout. Try yourself with `git -h`. It perfectly acts according to what I'd expect (exit status 0). Where as `git reflog -h`outputs to stdout but still exit with non-zero status (which seems okay). `git branch -h` adds a third way, as described. I argue: That diverging behavior is confusing to the user. If your claim was right, this bug report got even bigger as a lot of behavior from other subcommands would have to be changed. In fact, what "substantial material" is, has to be defined for every piece of software regarding each output. However, I cannot see how one subcommand's usage message is considered "substantial" whereas another subcommand's usage message is not (besides, I guess, `git branch` is more frequently used than `git reflog`). Best, Jonas On 15.01.25 12:36, Matěj Cepl wrote: > On Wed Jan 15, 2025 at 12:22 PM CET, Jonas Konrad wrote: >> What did you do before the bug happened? (Steps to reproduce your issue) >> I opened a terminal on Arch Linux with a bash shell and called `git >> branch -h` to get a usage overview of git's `branch` command. I then >> tried processing the output with `grep` by `git branch -h | grep list` >> which gave the whole (unfiltered) output, i.e., the displayed message >> was not processed by `grep`. > And that is exactly the correct behaviour. In the world of UNIX, > where pipes are normal, utilities should send to the stdout > only substantial material, which could be processed down the > pipeline. Error messages, help, and similar diagnostics, should > go to stderr. Also, you know about `|&`, right? > > Best, > > Matěj >