Volume XXII, number 280Wednesday, October 7, 2026Latest message 1 hour ago

The Git List

News and archive of git@vger.kernel.org, since April 2005

patchReintegrate: send "Huh?" warnings to stderr, not stdout

4 messages between Apr 27, 2026 and May 4, 2026, from Erik Cervin-Edin, Tian Yuchen, Erik Cervin Edin, erik@cervined.in.

Plain Markdown or JSON for tools and agents. Diffs are folded; open one to read it.

Erik Cervin-EdinApr 27, 2026, 10:47 UTC on lore

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"

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.

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.
Signed-off-by: Erik Cervin-Edin <erik@cervined.in>
---
 Reintegrate | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Show changes to Reintegrate +1 −1
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 &&
-- 
2.53.0
Tian YuchenApr 28, 2026, 18:05 UTC in reply to Erik Cervin-Edin on lore

Re: [PATCH] Reintegrate: send "Huh?" warnings to stderr, not stdout

On 4/27/26 18:47, Erik Cervin-Edin wrote:
Show 5 quoted lines
> 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 ;)
Show 14 quoted lines
> 
> 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 :-)
Show 18 quoted lines
> Signed-off-by: Erik Cervin-Edin <erik@cervined.in>
> ---
>   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
Erik Cervin EdinMay 4, 2026, 10:03 UTC in reply to Tian Yuchen on lore

Re: [PATCH] Reintegrate: send "Huh?" warnings to stderr, not stdout

On 26/04/29 02:05AM, Tian Yuchen wrote:
Show 9 quoted lines
> 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 ;)

Good point! I hoisted the intent up to the opening paragraph; took the spirit of your wording rather than copying it verbatim, and tightened the rest while I was at it.

erik@cervined.inMay 4, 2026, 10:28 UTC in reply to Erik Cervin-Edin on lore

[PATCH v2] Reintegrate: send "Huh?" warnings to stderr, not stdout

From: Erik Cervin-Edin <erik@cervined.in>

In show_merge(), the "Huh?: $msg" warning -- emitted when a first-parent merge subject does not match either "Merge branch '...'" or "Merge remote branch '...'" -- is meant to go to stderr, but the redirect

	echo 2>&1 "Huh?: $msg"
goes the wrong way and sends the message to stdout instead.
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, with no diagnostic that something went wrong. Worse, the resulting redo-* script is corrupted with a "Huh?:..." line.

Switch the redirection to ">&2", matching every other diagnostic in this script.

Signed-off-by: Erik Cervin-Edin <erik@cervined.in>
---
 Reintegrate | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Show changes to Reintegrate +1 −1
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 &&
-- 
2.53.0

Back to recent threads