From: Junio C Hamano Date: Sat, 04 Nov 2006 10:00:04 GMT Subject: Re: Problem with git-apply? Message-ID: <7v4ptf4jmj.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <7v8xir4k3w.fsf@assigned-by-dhcp.cox.net> Junio C Hamano writes: > Kevin Shanahan writes: > >> #!/bin/sh >> >> mkdir a b repo >> echo foo > b/foo >> diff -urN a b > test.diff > > It is *very* surprising that this issue did not come up earlier, > given that we used to use GNU diff internally to generate our > own diff. > > If you cat the test.diff file, you will see "a/foo" and "b/foo", > not "/dev/null". > > The problem appears that GNU diff _never_ uses "--- /dev/null" > or "+++ /dev/null" to indicate creation or deletion of the file, > but the "traditional patch parser" builtin-apply has assumed > that is what the traditional diff output from day one. Where we > got that idea is mystery to me (this is Linus's code), but I > suspect it is what other SCMs did. *BLUSH* A prime example of "you should not speak before thinking". Please forget everything I said. The patch parsing is just fine with or without "/dev/null". This must be a recent breakage around write_out_one_result(). Will take a look.