Re: [PATCH] add-interactive: fix bogus diff header line ordering
- From
Jeff King <peff@peff.net>
- Date
- Feb 23, 2010, 00:56 UTC
- Message-ID
- <20100223005645.GB3254@coredump.intra.peff.net>
- In-Reply-To
- <7vbpfg6h80.fsf@alter.siamese.dyndns.org>
On Mon, Feb 22, 2010 at 02:25:19PM -0800, Junio C Hamano wrote:
Show 28 quoted lines
> Jeff King <peff@peff.net> 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?Nope, good catch. Maybe this should specifically be hoisting known git header lines back into the header? Or perhaps a better logic would be to treat each hunk individually, but just take all lines before the "@@" hunk header? Hmm. I am not sure we would even need to treat hunks individually...the misplaced header lines should always be part of the _first_ hunk.
-Peff