Subject: Re: git apply behaves differently from patch(1)

From: Johannes Sixt <[email-masked]>
Date: Thu, 17 Jan 2008 09:11:44 +0100

Thomas Zander schrieb:
> In the following usecase git apply (git version 1.5.4.rc3.15.g785f9) 
> doesn't do what I expect it should do. I expect it to do the same as 
> patch does in the same situation.
> 
> To reproduce;

[... hand-edit a patch without context ...]

> What I expect (and what I get if I replace git apply with a 'patch -R -p1 
> < mypatch') is that the diff shows line "2" is still missing.
> 
> What I get instead is that "2" is missing but also that "10" moved 2 lines 
> up.
> I conclude that git somehow doesn't like the patch to be removed, while 
> patch(1) has no problem with that.
> 
> I hope you agree its a bug and fix it in an upcoming version, it would be 
> great if I can avoid using patch(1) or worse.

It's not exactly a bug. The behavior of zero-context patches is simply not
well-defined. You have just been lucky that patch worked in the way that
you expected. Don't use zero-context patches.

That said git-apply can certainly be modified to behave like patch in this
case. I tried, but gave up - it's too much code that is new to me. :(

-- Hannes