git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH/RFC] git-am: Make it easier to see which patch failed
@ 2009-01-16 13:18 Jonas Flodén
  2009-01-16 14:14 ` Johannes Schindelin
  0 siblings, 1 reply; 15+ messages in thread
From: Jonas Flodén @ 2009-01-16 13:18 UTC (permalink / raw)
  To: git

When git-am fails it's not always easy to see which patch failed,
since it's often hidden by a lot of error messages.
Add an extra line which prints the name of the failed patch just
before the resolve message to make it easier to find.

Signed-off-by: Jonas Flodén <jonas@floden.nu>
---

This is something I have thought about for a long time.
I always wonder why git rebase couldn't print the patch
name when it failed... Finally I took the time to fix it.
Please feel free to comment. It's my first Git patch...

With regards,
Jonas

 git-am.sh |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/git-am.sh b/git-am.sh
index 4b157fe..5d72a66 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -502,6 +502,7 @@ do
 	if test $apply_status != 0
 	then
 		echo Patch failed at $msgnum.
+		printf '\nFailed to apply: %s\n' "$FIRSTLINE"
 		stop_here_user_resolve $this
 	fi

-- 
1.6.1.28.gc32f76

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH/RFC] git-am: Make it easier to see which patch failed
  2009-01-16 13:18 [PATCH/RFC] git-am: Make it easier to see which patch failed Jonas Flodén
@ 2009-01-16 14:14 ` Johannes Schindelin
  2009-01-16 14:34   ` Jonas Flodén
  0 siblings, 1 reply; 15+ messages in thread
From: Johannes Schindelin @ 2009-01-16 14:14 UTC (permalink / raw)
  To: Jonas Flodén; +Cc: git

[-- Attachment #1: Type: TEXT/PLAIN, Size: 286 bytes --]

Hi,

On Fri, 16 Jan 2009, Jonas Flodén wrote:

>  	then
>  		echo Patch failed at $msgnum.
> +		printf '\nFailed to apply: %s\n' "$FIRSTLINE"
>  		stop_here_user_resolve $this

Maybe

-  		echo Patch failed at $msgnum.
+  		echo Patch failed at $msgnum($FIRSTLINE).

Hmm?

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH/RFC] git-am: Make it easier to see which patch failed
  2009-01-16 14:14 ` Johannes Schindelin
@ 2009-01-16 14:34   ` Jonas Flodén
  2009-01-16 16:27     ` Johannes Schindelin
  2009-01-18  5:42     ` Junio C Hamano
  0 siblings, 2 replies; 15+ messages in thread
From: Jonas Flodén @ 2009-01-16 14:34 UTC (permalink / raw)
  To: git; +Cc: Johannes Schindelin

When git-am fails it's not always easy to see which patch failed,
since it's often hidden by a lot of error messages.
Add an extra line which prints the name of the failed patch just
before the resolve message to make it easier to find.

Signed-off-by: Jonas Flodén <jonas@floden.nu>
---
Johannes Schindelin wrote:
> Maybe
>
> -               echo Patch failed at $msgnum.
> +               echo Patch failed at $msgnum($FIRSTLINE).

How about this instead. Though the line could get very long.
This makes the line stand out a little more.

 git-am.sh |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/git-am.sh b/git-am.sh
index 4b157fe..09c2f9c 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -501,7 +501,7 @@ do
 	fi
 	if test $apply_status != 0
 	then
-		echo Patch failed at $msgnum.
+		printf '\nPatch failed at %s (%s)\n' "$msgnum" "$FIRSTLINE"
 		stop_here_user_resolve $this
 	fi

-- 
1.6.1.28.gc32f76

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH/RFC] git-am: Make it easier to see which patch failed
  2009-01-16 14:34   ` Jonas Flodén
@ 2009-01-16 16:27     ` Johannes Schindelin
  2009-01-18  5:42     ` Junio C Hamano
  1 sibling, 0 replies; 15+ messages in thread
From: Johannes Schindelin @ 2009-01-16 16:27 UTC (permalink / raw)
  To: Jonas Flodén; +Cc: git

[-- Attachment #1: Type: TEXT/PLAIN, Size: 341 bytes --]

Hi,

On Fri, 16 Jan 2009, Jonas Flodén wrote:

> Johannes Schindelin wrote:
> > Maybe
> >
> > -               echo Patch failed at $msgnum.
> > +               echo Patch failed at $msgnum($FIRSTLINE).
> 
> How about this instead. Though the line could get very long.
> This makes the line stand out a little more.

Fine by me!

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH/RFC] git-am: Make it easier to see which patch failed
  2009-01-16 14:34   ` Jonas Flodén
  2009-01-16 16:27     ` Johannes Schindelin
@ 2009-01-18  5:42     ` Junio C Hamano
  2009-01-18  9:41       ` Stephan Beyer
  1 sibling, 1 reply; 15+ messages in thread
From: Junio C Hamano @ 2009-01-18  5:42 UTC (permalink / raw)
  To: Jonas Flodén; +Cc: git, Johannes Schindelin

"Jonas Flodén" <jonas@floden.nu> writes:

> When git-am fails it's not always easy to see which patch failed,
> since it's often hidden by a lot of error messages.
> Add an extra line which prints the name of the failed patch just
> before the resolve message to make it easier to find.
>
> Signed-off-by: Jonas Flodén <jonas@floden.nu>
> ---
> Johannes Schindelin wrote:
>> Maybe
>>
>> -               echo Patch failed at $msgnum.
>> +               echo Patch failed at $msgnum($FIRSTLINE).
>
> How about this instead. Though the line could get very long.
> This makes the line stand out a little more.
>
>  git-am.sh |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/git-am.sh b/git-am.sh
> index 4b157fe..09c2f9c 100755
> --- a/git-am.sh
> +++ b/git-am.sh
> @@ -501,7 +501,7 @@ do
>  	fi
>  	if test $apply_status != 0
>  	then
> -		echo Patch failed at $msgnum.
> +		printf '\nPatch failed at %s (%s)\n' "$msgnum" "$FIRSTLINE"
>  		stop_here_user_resolve $this
>  	fi

Looks sane except that I do not think you need printf nor the leading
blank line, i.e.

	echo "Patch failed at $msgnum ($FIRSTLINE)"

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH/RFC] git-am: Make it easier to see which patch failed
  2009-01-18  5:42     ` Junio C Hamano
@ 2009-01-18  9:41       ` Stephan Beyer
  2009-01-18  9:53         ` Stephan Beyer
  2009-01-18 15:39         ` Jeff King
  0 siblings, 2 replies; 15+ messages in thread
From: Stephan Beyer @ 2009-01-18  9:41 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jonas Flodén, git, Johannes Schindelin

> > diff --git a/git-am.sh b/git-am.sh
> > index 4b157fe..09c2f9c 100755
> > --- a/git-am.sh
> > +++ b/git-am.sh
> > @@ -501,7 +501,7 @@ do
> >  	fi
> >  	if test $apply_status != 0
> >  	then
> > -		echo Patch failed at $msgnum.
> > +		printf '\nPatch failed at %s (%s)\n' "$msgnum" "$FIRSTLINE"
> >  		stop_here_user_resolve $this
> >  	fi
> 
> Looks sane except that I do not think you need printf nor the leading
> blank line, i.e.
> 
> 	echo "Patch failed at $msgnum ($FIRSTLINE)"

Hmm, IIRC if $FIRSTLINE contains \n or something like that, it will
interpret this as newline in some shell/echo implementations.

So printf "...%s..." "$FOO" is always sane for user input.

Regards,
  Stephan

-- 
Stephan Beyer <s-beyer@gmx.net>, PGP 0x6EDDD207FCC5040F

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH/RFC] git-am: Make it easier to see which patch failed
  2009-01-18  9:41       ` Stephan Beyer
@ 2009-01-18  9:53         ` Stephan Beyer
  2009-01-18 15:39         ` Jeff King
  1 sibling, 0 replies; 15+ messages in thread
From: Stephan Beyer @ 2009-01-18  9:53 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jonas Flodén, git, Johannes Schindelin

Stephan Beyer wrote:
> Hmm, IIRC if $FIRSTLINE contains \n or something like that, it will
> interpret this as newline in some shell/echo implementations.

Just in case someone wonders but doesn't dare ask:

bash as expected:
	$ echo 'foo\nbar'
	foo\nbar
	$ echo -e 'foo\nbar'
	foo
	bar

But dash:
	$ echo 'foo\nbar'
	foo
	bar
	$ echo -e 'foo\nbar'
	-e foo
	bar

(According to Debian Popularity Contest[1] "dash" is used in more than
10.000 Debian installations, although it doesn't say if it is used for
/bin/sh.)

 1. http://qa.debian.org/popcon.php?package=dash

Regards,
  Stephan

-- 
Stephan Beyer <s-beyer@gmx.net>, PGP 0x6EDDD207FCC5040F

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH/RFC] git-am: Make it easier to see which patch failed
  2009-01-18  9:41       ` Stephan Beyer
  2009-01-18  9:53         ` Stephan Beyer
@ 2009-01-18 15:39         ` Jeff King
  2009-01-18 16:17           ` Johannes Schindelin
  2009-01-19  3:38           ` Junio C Hamano
  1 sibling, 2 replies; 15+ messages in thread
From: Jeff King @ 2009-01-18 15:39 UTC (permalink / raw)
  To: Stephan Beyer; +Cc: Junio C Hamano, Jonas Flodén, git, Johannes Schindelin

On Sun, Jan 18, 2009 at 10:41:13AM +0100, Stephan Beyer wrote:

> > Looks sane except that I do not think you need printf nor the leading
> > blank line, i.e.
> > 
> > 	echo "Patch failed at $msgnum ($FIRSTLINE)"
> 
> Hmm, IIRC if $FIRSTLINE contains \n or something like that, it will
> interpret this as newline in some shell/echo implementations.
> 
> So printf "...%s..." "$FOO" is always sane for user input.

Yes, I'm surprised Junio doesn't remember the mass conversions we already had
to do (4b7cc26a and 293623ed). But looking at the date, I guess it _has_
been a year and a half. :)

-Peff

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH/RFC] git-am: Make it easier to see which patch failed
  2009-01-18 15:39         ` Jeff King
@ 2009-01-18 16:17           ` Johannes Schindelin
  2009-01-18 16:49             ` Thomas Rast
                               ` (2 more replies)
  2009-01-19  3:38           ` Junio C Hamano
  1 sibling, 3 replies; 15+ messages in thread
From: Johannes Schindelin @ 2009-01-18 16:17 UTC (permalink / raw)
  To: Jeff King; +Cc: Stephan Beyer, Junio C Hamano, Jonas Flodén, git

Hi,

On Sun, 18 Jan 2009, Jeff King wrote:

> On Sun, Jan 18, 2009 at 10:41:13AM +0100, Stephan Beyer wrote:
> 
> > > Looks sane except that I do not think you need printf nor the leading
> > > blank line, i.e.
> > > 
> > > 	echo "Patch failed at $msgnum ($FIRSTLINE)"
> > 
> > Hmm, IIRC if $FIRSTLINE contains \n or something like that, it will
> > interpret this as newline in some shell/echo implementations.
> > 
> > So printf "...%s..." "$FOO" is always sane for user input.
> 
> Yes, I'm surprised Junio doesn't remember the mass conversions we 
> already had to do (4b7cc26a and 293623ed). But looking at the date, I 
> guess it _has_ been a year and a half. :)

Hey, be nice to Junio.  Have you seen the amount of mails on this list 
recently?  I think Junio's the only one really reading all of them; even 
if you were right, he would be entitled to a nicer reminder.

But you are wrong.  And Stephan is wrong, too.

The name "FIRSTLINE" suggests that it is indeed a first line, and 
consequently cannot contain a newline.

And indeed, it is defined as

	FIRSTLINE=$(sed 1q "$dotest/final-commit")

Just do the following in any of your favorite shells:

	$ FIRSTLINE=$(sed 1q README)
	$ echo "$FIRSTLINE."

You'll find that the "." is not in a new line.

And I know that we relied on that behavior for an eternity.

So there is certainly no need for a printf here.

'nuff said,
Dscho

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH/RFC] git-am: Make it easier to see which patch failed
  2009-01-18 16:17           ` Johannes Schindelin
@ 2009-01-18 16:49             ` Thomas Rast
  2009-01-18 16:53             ` Stephan Beyer
  2009-01-18 17:07             ` Jeff King
  2 siblings, 0 replies; 15+ messages in thread
From: Thomas Rast @ 2009-01-18 16:49 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Jeff King, Stephan Beyer, Junio C Hamano, Jonas Flodén, git

[-- Attachment #1: Type: text/plain, Size: 995 bytes --]

Johannes Schindelin wrote:
> On Sun, 18 Jan 2009, Jeff King wrote:
> > On Sun, Jan 18, 2009 at 10:41:13AM +0100, Stephan Beyer wrote:
> > > Hmm, IIRC if $FIRSTLINE contains \n or something like that, it will
> > > interpret this as newline in some shell/echo implementations.
> > > 
> > > So printf "...%s..." "$FOO" is always sane for user input.
> 
> But you are wrong.  And Stephan is wrong, too.
> 
> The name "FIRSTLINE" suggests that it is indeed a first line, and 
> consequently cannot contain a newline.

I think the point was that $FIRSTLINE can contain a backslash sequence
such as (literally) \n or \r.  Indeed 'man 1p echo' on my system says

  _string_  A string to be written to standard output. If the first
            operand is -n, or if any of the operands contain a
            backslash ( '\' ) character, the results are
            implementation- defined.

(Those POSIX manpages are really useful!)

-- 
Thomas Rast
trast@{inf,student}.ethz.ch

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH/RFC] git-am: Make it easier to see which patch failed
  2009-01-18 16:17           ` Johannes Schindelin
  2009-01-18 16:49             ` Thomas Rast
@ 2009-01-18 16:53             ` Stephan Beyer
  2009-01-18 17:07             ` Jeff King
  2 siblings, 0 replies; 15+ messages in thread
From: Stephan Beyer @ 2009-01-18 16:53 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Jeff King, Junio C Hamano, Jonas Flodén, git

Hi,

Johannes Schindelin wrote:
> On Sun, 18 Jan 2009, Jeff King wrote:
> 
> > On Sun, Jan 18, 2009 at 10:41:13AM +0100, Stephan Beyer wrote:
> > 
> > > > Looks sane except that I do not think you need printf nor the leading
> > > > blank line, i.e.
> > > > 
> > > > 	echo "Patch failed at $msgnum ($FIRSTLINE)"
> > > 
> > > Hmm, IIRC if $FIRSTLINE contains \n or something like that, it will
> > > interpret this as newline in some shell/echo implementations.
> > > 
> > > So printf "...%s..." "$FOO" is always sane for user input.
> > 
> > Yes, I'm surprised Junio doesn't remember the mass conversions we 
> > already had to do (4b7cc26a and 293623ed). But looking at the date, I 
> > guess it _has_ been a year and a half. :)
> 
> Hey, be nice to Junio.  Have you seen the amount of mails on this list 
> recently?  I think Junio's the only one really reading all of them; even 
> if you were right, he would be entitled to a nicer reminder.

I had almost written the same text but then I thought Jeff did not mean
it bad, he was just surprised.

> But you are wrong.  And Stephan is wrong, too.
> 
> The name "FIRSTLINE" suggests that it is indeed a first line, and 
> consequently cannot contain a newline.
> 
> And indeed, it is defined as
> 
> 	FIRSTLINE=$(sed 1q "$dotest/final-commit")
> 
> Just do the following in any of your favorite shells:
> 
> 	$ FIRSTLINE=$(sed 1q README)
> 	$ echo "$FIRSTLINE."
> 
> You'll find that the "." is not in a new line.

I have to disagree:

	$ cat newline
	foo\nbar
	$ FIRSTLINE=$(sed 1q newline)
	$ echo "$FIRSTLINE."
	foo
	bar.
	$ exit

> And I know that we relied on that behavior for an eternity.

Where?  We should perhaps fix it then.


Regards,
  Stephan

-- 
Stephan Beyer <s-beyer@gmx.net>, PGP 0x6EDDD207FCC5040F

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH/RFC] git-am: Make it easier to see which patch failed
  2009-01-18 16:17           ` Johannes Schindelin
  2009-01-18 16:49             ` Thomas Rast
  2009-01-18 16:53             ` Stephan Beyer
@ 2009-01-18 17:07             ` Jeff King
  2009-01-18 17:44               ` Johannes Schindelin
  2 siblings, 1 reply; 15+ messages in thread
From: Jeff King @ 2009-01-18 17:07 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Stephan Beyer, Junio C Hamano, Jonas Flodén, git

On Sun, Jan 18, 2009 at 05:17:43PM +0100, Johannes Schindelin wrote:

> > Yes, I'm surprised Junio doesn't remember the mass conversions we 
> > already had to do (4b7cc26a and 293623ed). But looking at the date, I 
> > guess it _has_ been a year and a half. :)
> 
> Hey, be nice to Junio.  Have you seen the amount of mails on this list 
> recently?  I think Junio's the only one really reading all of them; even 
> if you were right, he would be entitled to a nicer reminder.

I didn't mean to be mean. On the contrary, I was surprised because _he_
usually is the one reminding _me_ about such fixes. I guess Junio is
human, after all. :)

> But you are wrong.  And Stephan is wrong, too.
> 
> The name "FIRSTLINE" suggests that it is indeed a first line, and 
> consequently cannot contain a newline.

It is not "this is a problem because it might contain a newline" but "this
is a problem because it might contain an escape sequence, _an example_
of which is a \n newline." So the question is whether you can guarantee
that $FIRSTLINE does not contain a backslash. Which I don't think is the
case here.

-Peff

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH/RFC] git-am: Make it easier to see which patch failed
  2009-01-18 17:07             ` Jeff King
@ 2009-01-18 17:44               ` Johannes Schindelin
  2009-01-18 17:49                 ` Jeff King
  0 siblings, 1 reply; 15+ messages in thread
From: Johannes Schindelin @ 2009-01-18 17:44 UTC (permalink / raw)
  To: Jeff King; +Cc: Stephan Beyer, Junio C Hamano, Jonas Flodén, git

Hi.

On Sun, 18 Jan 2009, Jeff King wrote:

> On Sun, Jan 18, 2009 at 05:17:43PM +0100, Johannes Schindelin wrote:
> 
> > The name "FIRSTLINE" suggests that it is indeed a first line, and 
> > consequently cannot contain a newline.
> 
> It is not "this is a problem because it might contain a newline" but 
> "this is a problem because it might contain an escape sequence, _an 
> example_ of which is a \n newline." So the question is whether you can 
> guarantee that $FIRSTLINE does not contain a backslash. Which I don't 
> think is the case here.

Oh.  Okay, so I was wrong.  But only because dash's echo behaves in a 
strange way: it makes "-e" a noop?

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH/RFC] git-am: Make it easier to see which patch failed
  2009-01-18 17:44               ` Johannes Schindelin
@ 2009-01-18 17:49                 ` Jeff King
  0 siblings, 0 replies; 15+ messages in thread
From: Jeff King @ 2009-01-18 17:49 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Stephan Beyer, Junio C Hamano, Jonas Flodén, git

On Sun, Jan 18, 2009 at 06:44:01PM +0100, Johannes Schindelin wrote:

> Oh.  Okay, so I was wrong.  But only because dash's echo behaves in a 
> strange way: it makes "-e" a noop?

Right. "-e" isn't in POSIX at all, and it is a SysV-ism to allow escapes
in any argument (I don't know if "-e" was introduced by GNU people, or
came from elsewhere).

See here for the gory details:

  http://www.opengroup.org/onlinepubs/009695399/utilities/echo.html

-Peff

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH/RFC] git-am: Make it easier to see which patch failed
  2009-01-18 15:39         ` Jeff King
  2009-01-18 16:17           ` Johannes Schindelin
@ 2009-01-19  3:38           ` Junio C Hamano
  1 sibling, 0 replies; 15+ messages in thread
From: Junio C Hamano @ 2009-01-19  3:38 UTC (permalink / raw)
  To: Jeff King; +Cc: Stephan Beyer, Jonas Flodén, git, Johannes Schindelin

Jeff King <peff@peff.net> writes:

> Yes, I'm surprised Junio doesn't remember the mass conversions we already had
> to do (4b7cc26a and 293623ed). But looking at the date, I guess it _has_
> been a year and a half. :)

Ok, I forgot, sue me ;-).

Anyway, thanks for spotting.  I'll fix it up like this.

-- >8 --
Subject: git-am: re-fix the diag message printing

The $FIRSTLINE variable is from the user's commit and can contain
arbitrary backslash escapes that may be (mis)interpreted when given to
"echo", depending on the implementation.  Use "printf" to work around the
issue.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 git-am.sh |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/git-am.sh b/git-am.sh
index ae2fe56..cf3d4a7 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -501,7 +501,7 @@ do
 	fi
 	if test $apply_status != 0
 	then
-		echo "Patch failed at $msgnum $FIRSTLINE"
+		printf 'Patch failed at %s %s\n' "$msgnum" "$FIRSTLINE"
 		stop_here_user_resolve $this
 	fi
 
-- 
1.6.1.245.gdd9f9

^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2009-01-19  3:39 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-16 13:18 [PATCH/RFC] git-am: Make it easier to see which patch failed Jonas Flodén
2009-01-16 14:14 ` Johannes Schindelin
2009-01-16 14:34   ` Jonas Flodén
2009-01-16 16:27     ` Johannes Schindelin
2009-01-18  5:42     ` Junio C Hamano
2009-01-18  9:41       ` Stephan Beyer
2009-01-18  9:53         ` Stephan Beyer
2009-01-18 15:39         ` Jeff King
2009-01-18 16:17           ` Johannes Schindelin
2009-01-18 16:49             ` Thomas Rast
2009-01-18 16:53             ` Stephan Beyer
2009-01-18 17:07             ` Jeff King
2009-01-18 17:44               ` Johannes Schindelin
2009-01-18 17:49                 ` Jeff King
2009-01-19  3:38           ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).