From: Tian Yuchen Date: Tue, 28 Apr 2026 18:05:16 GMT Subject: Re: [PATCH] Reintegrate: send "Huh?" warnings to stderr, not stdout Message-ID: <5a821f71-3d6e-4942-9bdb-257617484a6b@malon.dev> In-Reply-To: On 4/27/26 18:47, Erik Cervin-Edin wrote: > The "Huh?: $msg" warning in show_merge(), emitted when a first-parent > merge subject does not match either "Merge branch '...'" or "Merge > remote branch '...'", uses > > echo 2>&1 "Huh?: $msg" Yes, this is clearly wrong. > The "2>&1" redirect dupes stderr onto stdout's destination; it does > not change where stdout itself points. Since echo writes to stdout, > the "Huh?:" message lands on stdout regardless -- as would any > command's normal output. > The intent appears to have been ">&2", which dupes stdout onto stderr. It would be better for me if this sentence (i.e., what was the code originally *intended* to do before the patch?) were placed right at the beginning. Something similar to: In show_merge(), the warning "Huh?: $msg" is emitted to stdout because it uses the erroneous redirect `echo 2>&1`. The intent was clearly to use `>&2` to print to stderr... Of course, it’s up to you ;) > > In the common Reintegrate invocation that captures stdout, e.g. > > Meta/Reintegrate next..seen >Meta/redo-seen.sh > > this means the warning is silently embedded in the generated heredoc > body instead of being printed to the maintainer's terminal. The > resulting redo-* script is corrupted with a "Huh?:..." line and the > maintainer has no diagnostic that something went wrong. > > Every other diagnostic in this script already uses ">&2"; this line > is the lone outlier. > > Use ">&2" so the warning reaches stderr as intended. Overall, the reasoning is nice :-) > Signed-off-by: Erik Cervin-Edin > --- > Reintegrate | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/Reintegrate b/Reintegrate > index a1e67a0330..6fdc7c5f41 100755 > --- a/Reintegrate > +++ b/Reintegrate > @@ -327,7 +327,7 @@ show_merge () { > merge_hier= > ;; > *) > - echo 2>&1 "Huh?: $msg" > + echo >&2 "Huh?: $msg" > return > ;; > esac && Thanks, Yuchen