diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-11-16 00:02:44 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-11-16 00:02:44 -0800 |
commit | 5e9cb8666bae6a5c8adcb26e3f46b8a5fe5be589 (patch) | |
tree | 469a68e905236e91ac77d470d37ef6ae63617278 /git-add--interactive.perl | |
parent | d404a3e1a5588fa075e4fae6679603a5add2e4df (diff) | |
parent | 24ab81ae4d12c81076da256b3f9cdde45277f126 (diff) | |
download | git-5e9cb8666bae6a5c8adcb26e3f46b8a5fe5be589.tar.gz |
Merge branch 'jk/maint-add-p-empty' into maint
* jk/maint-add-p-empty:
add-interactive: handle deletion of empty files
Diffstat (limited to 'git-add--interactive.perl')
-rwxr-xr-x | git-add--interactive.perl | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/git-add--interactive.perl b/git-add--interactive.perl index 69aeaf03ec..8ce1ec92c2 100755 --- a/git-add--interactive.perl +++ b/git-add--interactive.perl @@ -731,14 +731,17 @@ sub parse_diff_header { my $head = { TEXT => [], DISPLAY => [], TYPE => 'header' }; my $mode = { TEXT => [], DISPLAY => [], TYPE => 'mode' }; + my $deletion = { TEXT => [], DISPLAY => [], TYPE => 'deletion' }; for (my $i = 0; $i < @{$src->{TEXT}}; $i++) { - my $dest = $src->{TEXT}->[$i] =~ /^(old|new) mode (\d+)$/ ? - $mode : $head; + my $dest = + $src->{TEXT}->[$i] =~ /^(old|new) mode (\d+)$/ ? $mode : + $src->{TEXT}->[$i] =~ /^deleted file/ ? $deletion : + $head; push @{$dest->{TEXT}}, $src->{TEXT}->[$i]; push @{$dest->{DISPLAY}}, $src->{DISPLAY}->[$i]; } - return ($head, $mode); + return ($head, $mode, $deletion); } sub hunk_splittable { @@ -1206,7 +1209,7 @@ sub patch_update_file { my ($ix, $num); my $path = shift; my ($head, @hunk) = parse_diff($path); - ($head, my $mode) = parse_diff_header($head); + ($head, my $mode, my $deletion) = parse_diff_header($head); for (@{$head->{DISPLAY}}) { print; } @@ -1214,6 +1217,9 @@ sub patch_update_file { if (@{$mode->{TEXT}}) { unshift @hunk, $mode; } + if (@{$deletion->{TEXT}} && !@hunk) { + @hunk = ($deletion); + } $num = scalar @hunk; $ix = 0; @@ -1267,7 +1273,9 @@ sub patch_update_file { print; } print colored $prompt_color, $patch_mode_flavour{VERB}, - ($hunk[$ix]{TYPE} eq 'mode' ? ' mode change' : ' this hunk'), + ($hunk[$ix]{TYPE} eq 'mode' ? ' mode change' : + $hunk[$ix]{TYPE} eq 'deletion' ? ' deletion' : + ' this hunk'), $patch_mode_flavour{TARGET}, " [y,n,q,a,d,/$other,?]? "; my $line = prompt_single_character; |