* [PATCH] Reintegrate: send "Huh?" warnings to stderr, not stdout
@ 2026-04-27 10:47 Erik Cervin-Edin
2026-04-28 18:05 ` Tian Yuchen
2026-05-04 10:28 ` [PATCH v2] " erik
0 siblings, 2 replies; 4+ messages in thread
From: Erik Cervin-Edin @ 2026-04-27 10:47 UTC (permalink / raw)
To: git; +Cc: gitster
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(-)
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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] Reintegrate: send "Huh?" warnings to stderr, not stdout
2026-04-27 10:47 [PATCH] Reintegrate: send "Huh?" warnings to stderr, not stdout Erik Cervin-Edin
@ 2026-04-28 18:05 ` Tian Yuchen
2026-05-04 10:03 ` Erik Cervin Edin
2026-05-04 10:28 ` [PATCH v2] " erik
1 sibling, 1 reply; 4+ messages in thread
From: Tian Yuchen @ 2026-04-28 18:05 UTC (permalink / raw)
To: git, gitster
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 <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
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Reintegrate: send "Huh?" warnings to stderr, not stdout
2026-04-28 18:05 ` Tian Yuchen
@ 2026-05-04 10:03 ` Erik Cervin Edin
0 siblings, 0 replies; 4+ messages in thread
From: Erik Cervin Edin @ 2026-05-04 10:03 UTC (permalink / raw)
To: Tian Yuchen; +Cc: git, gitster
On 26/04/29 02:05AM, Tian Yuchen wrote:
> 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.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2] Reintegrate: send "Huh?" warnings to stderr, not stdout
2026-04-27 10:47 [PATCH] Reintegrate: send "Huh?" warnings to stderr, not stdout Erik Cervin-Edin
2026-04-28 18:05 ` Tian Yuchen
@ 2026-05-04 10:28 ` erik
1 sibling, 0 replies; 4+ messages in thread
From: erik @ 2026-05-04 10:28 UTC (permalink / raw)
To: git; +Cc: gitster, cat, Erik Cervin-Edin
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(-)
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
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-05-04 10:28 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-27 10:47 [PATCH] Reintegrate: send "Huh?" warnings to stderr, not stdout Erik Cervin-Edin
2026-04-28 18:05 ` Tian Yuchen
2026-05-04 10:03 ` Erik Cervin Edin
2026-05-04 10:28 ` [PATCH v2] " erik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox