git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* BUG?: git-apply sometimes says "corrupt patch" when adding single lines
@ 2010-08-17 23:27 Tor Arvid Lund
  2010-08-17 23:43 ` Jonathan Nieder
  2010-08-18  7:29 ` Johannes Sixt
  0 siblings, 2 replies; 5+ messages in thread
From: Tor Arvid Lund @ 2010-08-17 23:27 UTC (permalink / raw)
  To: git

Hi.

I often use git-gui when staging commits, and I noticed that if the
file I'm working with has a:

\ No newline at end of file

... as the last line of the diff, and I try to "Stage lines for
commit", then git-gui (or really git-apply, as I understand it) says
that I have a "corrupt patch at line <so-and-so>".

I don't really know the git-gui code or the git C code well, but it
seems that I got around the error with this small patch:

diff --git a/builtin/apply.c b/builtin/apply.c
index 12ef9ea..124791f 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -1335,6 +1335,8 @@ static int parse_fragment(char *line, unsigned long size,
 		 * l10n of "\ No newline..." is at least that long.
 		 */
 		case '\\':
+			if (newlines == oldlines == 1)
+				newlines = oldlines = 0;
 			if (len < 12 || memcmp(line, "\\ ", 2))
 				return -1;
 			break;




Is this a bug? Or is it maybe git-gui that sends something wrong to
git-apply? I don't know... :-/

(I'm using msysGit on Windows, if that matters)

-Tor Arvid-

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

* Re: BUG?: git-apply sometimes says "corrupt patch" when adding single lines
  2010-08-17 23:27 BUG?: git-apply sometimes says "corrupt patch" when adding single lines Tor Arvid Lund
@ 2010-08-17 23:43 ` Jonathan Nieder
  2010-08-18  1:37   ` Tor Arvid Lund
  2010-08-18  7:29 ` Johannes Sixt
  1 sibling, 1 reply; 5+ messages in thread
From: Jonathan Nieder @ 2010-08-17 23:43 UTC (permalink / raw)
  To: Tor Arvid Lund; +Cc: git

Tor Arvid Lund wrote:

> I don't really know the git-gui code or the git C code well, but it
> seems that I got around the error with this small patch:
> 
> diff --git a/builtin/apply.c b/builtin/apply.c
> index 12ef9ea..124791f 100644
> --- a/builtin/apply.c
> +++ b/builtin/apply.c
> @@ -1335,6 +1335,8 @@ static int parse_fragment(char *line, unsigned long size,
>  		 * l10n of "\ No newline..." is at least that long.
>  		 */
>  		case '\\':
> +			if (newlines == oldlines == 1)
[...]

Heh.  This code is a roundabout way to say "if (newlines == oldlines)",
rather than "if (newlines == 1 && oldlines == 1)" that might have been
intended.

Unfortunately I do not have any more insight than that.  If you can
give an example reproducing this with git apply from the command
line, that would be very helpful.

Thanks,
Jonathan

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

* Re: BUG?: git-apply sometimes says "corrupt patch" when adding single lines
  2010-08-17 23:43 ` Jonathan Nieder
@ 2010-08-18  1:37   ` Tor Arvid Lund
  0 siblings, 0 replies; 5+ messages in thread
From: Tor Arvid Lund @ 2010-08-18  1:37 UTC (permalink / raw)
  To: Jonathan Nieder; +Cc: git

On Wed, Aug 18, 2010 at 1:43 AM, Jonathan Nieder <jrnieder@gmail.com> wrote:
> Tor Arvid Lund wrote:
>
>> I don't really know the git-gui code or the git C code well, but it
>> seems that I got around the error with this small patch:
>>
>> diff --git a/builtin/apply.c b/builtin/apply.c
>> index 12ef9ea..124791f 100644
>> --- a/builtin/apply.c
>> +++ b/builtin/apply.c
>> @@ -1335,6 +1335,8 @@ static int parse_fragment(char *line, unsigned long size,
>>                * l10n of "\ No newline..." is at least that long.
>>                */
>>               case '\\':
>> +                     if (newlines == oldlines == 1)
> [...]
>
> Heh.  This code is a roundabout way to say "if (newlines == oldlines)",
> rather than "if (newlines == 1 && oldlines == 1)" that might have been
> intended.

Right you are, good sir ;-)

> Unfortunately I do not have any more insight than that.  If you can
> give an example reproducing this with git apply from the command
> line, that would be very helpful.

I'll try to do that tomorrow.. My brain needs sleep before it will function :)

-Tor Arvid-

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

* Re: BUG?: git-apply sometimes says "corrupt patch" when adding single lines
  2010-08-17 23:27 BUG?: git-apply sometimes says "corrupt patch" when adding single lines Tor Arvid Lund
  2010-08-17 23:43 ` Jonathan Nieder
@ 2010-08-18  7:29 ` Johannes Sixt
  2010-08-18  9:15   ` Tor Arvid Lund
  1 sibling, 1 reply; 5+ messages in thread
From: Johannes Sixt @ 2010-08-18  7:29 UTC (permalink / raw)
  To: Tor Arvid Lund; +Cc: git

Am 8/18/2010 1:27, schrieb Tor Arvid Lund:
> I often use git-gui when staging commits, and I noticed that if the
> file I'm working with has a:
> 
> \ No newline at end of file
> 
> ... as the last line of the diff, and I try to "Stage lines for
> commit", then git-gui (or really git-apply, as I understand it) says
> that I have a "corrupt patch at line <so-and-so>".
> 
> Is this a bug? Or is it maybe git-gui that sends something wrong to
> git-apply? I don't know... :-/

This is really a bug in git-gui, not in git-apply: The big while loop in
lib/diff.tcl, function apply_range_or_line, must be taught about "\ No
newline...".

-- Hannes

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

* Re: BUG?: git-apply sometimes says "corrupt patch" when adding single lines
  2010-08-18  7:29 ` Johannes Sixt
@ 2010-08-18  9:15   ` Tor Arvid Lund
  0 siblings, 0 replies; 5+ messages in thread
From: Tor Arvid Lund @ 2010-08-18  9:15 UTC (permalink / raw)
  To: Johannes Sixt; +Cc: git

On Wed, Aug 18, 2010 at 9:29 AM, Johannes Sixt <j.sixt@viscovery.net> wrote:
> Am 8/18/2010 1:27, schrieb Tor Arvid Lund:
>> I often use git-gui when staging commits, and I noticed that if the
>> file I'm working with has a:
>>
>> \ No newline at end of file
>>
>> ... as the last line of the diff, and I try to "Stage lines for
>> commit", then git-gui (or really git-apply, as I understand it) says
>> that I have a "corrupt patch at line <so-and-so>".
>>
>> Is this a bug? Or is it maybe git-gui that sends something wrong to
>> git-apply? I don't know... :-/
>
> This is really a bug in git-gui, not in git-apply: The big while loop in
> lib/diff.tcl, function apply_range_or_line, must be taught about "\ No
> newline...".

Ok, thanks for tracking it down. I suspected this, since the tests for
git-apply seemed to have example patches for "\ No newline...".
Ultimately, this doesn't scratch me enough that I want to learn (or
guess) how to fix the Tcl stuff...

-Tor Arvid-

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

end of thread, other threads:[~2010-08-18  9:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-17 23:27 BUG?: git-apply sometimes says "corrupt patch" when adding single lines Tor Arvid Lund
2010-08-17 23:43 ` Jonathan Nieder
2010-08-18  1:37   ` Tor Arvid Lund
2010-08-18  7:29 ` Johannes Sixt
2010-08-18  9:15   ` Tor Arvid Lund

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).