Merge branch 'jk/maint-add-p-delete-fix' into maint
authorJunio C Hamano <gitster@pobox.com>
Wed, 9 Dec 2009 06:37:50 +0000 (22:37 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 9 Dec 2009 06:37:50 +0000 (22:37 -0800)
* jk/maint-add-p-delete-fix:
add-interactive: fix deletion of non-empty files

1  2 
git-add--interactive.perl
t/t3701-add-interactive.sh
index 8ce1ec92c2b04e1271b3ee1a41a2ac60d2f8aad4,02e97b90f116d9e3539b0a97c64ecd9064aafe81..75b71967a7c2f861c8e75e17c17e5cdce824e2e3
@@@ -259,7 -259,7 +259,7 @@@ sub list_modified 
                @tracked = map {
                        chomp $_;
                        unquote_path($_);
 -              } run_cmd_pipe(qw(git ls-files --exclude-standard --), @ARGV);
 +              } run_cmd_pipe(qw(git ls-files --), @ARGV);
                return if (!@tracked);
        }
  
@@@ -1217,7 -1217,11 +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);
        }
  
index d86bc81abfd954194c245e7e180a23f2b9b7c840,0926b91d5754fa2a311e05d38a99f10b98072e71..b6eba6a83904a00724b7b550a9bc3b1b35825bee
@@@ -138,20 -138,6 +138,20 @@@ test_expect_success 'real edit works' 
        test_cmp expected output
  '
  
 +test_expect_success 'skip files similarly as commit -a' '
 +      git reset &&
 +      echo file >.gitignore &&
 +      echo changed >file &&
 +      echo y | git add -p file &&
 +      git diff >output &&
 +      git reset &&
 +      git commit -am commit &&
 +      git diff >expected &&
 +      test_cmp expected output &&
 +      git reset --hard HEAD^
 +'
 +rm -f .gitignore
 +
  if test "$(git config --bool core.filemode)" = false
  then
        say 'skipping filemode tests (filesystem does not properly support modes)'
@@@ -228,6 -214,26 +228,26 @@@ test_expect_success 'add first line wor
        test_cmp expected diff
  '
  
+ cat >expected <<EOF
+ diff --git a/non-empty b/non-empty
+ deleted file mode 100644
+ index d95f3ad..0000000
+ --- a/non-empty
+ +++ /dev/null
+ @@ -1 +0,0 @@
+ -content
+ EOF
+ test_expect_success 'deleting a non-empty file' '
+       git reset --hard &&
+       echo content >non-empty &&
+       git add non-empty &&
+       git commit -m non-empty &&
+       rm non-empty &&
+       echo y | git add -p non-empty &&
+       git diff --cached >diff &&
+       test_cmp expected diff
+ '
  cat >expected <<EOF
  diff --git a/empty b/empty
  deleted file mode 100644