From: Junio C Hamano Date: Mon, 22 Feb 2010 22:25:19 GMT Subject: Re: [PATCH] add-interactive: fix bogus diff header line ordering Message-ID: <7vbpfg6h80.fsf@alter.siamese.dyndns.org> In-Reply-To: <20100222103256.GA10557@coredump.intra.peff.net> Jeff King writes: > git-add--interactive.perl | 17 ++++++++++++++++- > t/t2016-checkout-patch.sh | 8 ++++++++ > 2 files changed, 24 insertions(+), 1 deletions(-) > > diff --git a/git-add--interactive.perl b/git-add--interactive.perl > index bfd1003..4173200 100755 > --- a/git-add--interactive.perl > +++ b/git-add--interactive.perl > @@ -979,6 +979,21 @@ sub coalesce_overlapping_hunks { > return @out; > } > > +sub reassemble_patch { > + my $head = shift; > + return ( > + # Include everything in the header except the beginning of the > + # diff. > + (grep { !/^[-+]{3}/ } @$head), > + # Then include any other non-diff header lines from the hunks. > + (grep { !/^[@ +-]/ } @_), > + # Then begin the diff. > + (grep { /^[-+]{3}/ } @$head), > + # And then the hunk diff lines. > + (grep { /^[@ +-]/ } @_) Hmm. Are you handling "\No newline at the end of the file" correctly?