Re: summaries in git add --patch[PATCH 1/2]
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 3, 2008, 23:22 UTC
- Message-ID
- <7vd4g8alp7.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <4936EE63.209@gmail.com>
William Pursell <bill.pursell@gmail.com> writes:
Show 11 quoted lines
> Junio C Hamano wrote: > >> One thing I will not do after such a discussion, unless I am really really >> interested in having the new feature personally myself, is to go back to >> the discussion thread and assemble the pieces together to make the final >> series of patches for inclusion. The responsibility for doing that lies >> on the original contributor. >> > > That is a perfectly reasonable policy, and I did not intend > to suggest that you should do that work.
Heh, that is not a policy but just the way I work (rather, "the way I don't work and push the work to others instead") with a limited amount of time.
Show 15 quoted lines
> diff --git a/git-add--interactive.perl b/git-add--interactive.perl
> index b0223c3..daf8d5d 100755
> --- a/git-add--interactive.perl
> +++ b/git-add--interactive.perl
> @@ -836,6 +836,45 @@ sub patch_update_cmd {
> }
> }
>
> +# Generate a one line summary of a hunk.
> +sub summarize_hunk {
> + my $rhunk = shift;
> + my $summary = $rhunk->{TEXT}[0];
> +
> + # Keep the line numbers, discard extra context.
> + $summary =~ s/(@@.*@@).*/$1 /s;You would need to make the first glob less eager, i.e. /(@@.*?@@).*/, otherwise you will be folled by a literal @@ in the contents that is tacked after "@@ -j,k +l,m @@".
Do you really want the surrounding @@ in the result, by the way?
> + # Add some user context. (Just take first changed line.)
> + for my $line (@{$rhunk->{TEXT}}) {
> + if ($line =~ m/^[+-]/) {Even if it is a blank line?
Show 6 quoted lines
> + $summary .= $line; > + last; > + } > + } > + > + return substr ($summary, 0, 80);
s/str /str/;
How well does substr() work with utf-8 and other multi-byte encodings these days, I have to wonder...
Show 9 quoted lines
> +}
> +
> +
> +# Print a one-line summary of each hunk in the array ref in
> +# the first argument, starting wih the index in the 2nd.
> +sub display_hunks {
> + my ($hunks, $i) = @_;
> + my $ctr = 0;
> + $i = 0 if not $i;I think "$i ||= 0" is more common.
> + $status, > + $i + 1, > + summarize_hunk ($hunks->[$i]);
s/_hunk /_hunk/;