From: James Vega Date: Tue, 08 Dec 2009 06:49:44 GMT Subject: Re: git-apply fails on creating a new file, with both -p and --directory specified Message-ID: <20091208064944.GM14401@jamessan.com> In-Reply-To: <20091208060109.GB9951@coredump.intra.peff.net> On Tue, Dec 08, 2009 at 01:01:09AM -0500, Jeff King wrote: > On Tue, Dec 08, 2009 at 12:47:24AM -0500, Jeff King wrote: > > > There is a slightly different approach we could take, too: keep the > > "deletion" hunk as a first-class hunk, and just meld the content hunk's > > output into it. Then both cases would get the "Stage deletion" question > > instead of the "Stage this hunk" you get now for non-empty files (which > > just happens to trigger a deletion due to the headers). > > BTW, the code for this is the much smaller change below. If you prefer > that, I can squash in the test and write up an appropriate commit > message. > > diff --git a/git-add--interactive.perl b/git-add--interactive.perl > index 35f4ef1..02e97b9 100755 > --- a/git-add--interactive.perl > +++ b/git-add--interactive.perl > @@ -1217,7 +1217,11 @@ sub patch_update_file { > if (@{$mode->{TEXT}}) { > unshift @hunk, $mode; > } > - if (@{$deletion->{TEXT}} && !@hunk) { > + if (@{$deletion->{TEXT}}) { > + foreach my $hunk (@hunk) { > + push @{$deletion->{TEXT}}, @{$hunk->{TEXT}}; > + push @{$deletion->{DISPLAY}}, @{$hunk->{DISPLAY}}; > + } > @hunk = ($deletion); > } > Thanks for the quick patches. This was similar to what I was working on, but cleaner than what I had. Works well for me. -- James GPG Key: 1024D/61326D40 2003-09-02 James Vega