Merge branch 'jk/mv-submodules-fix' into maint
authorJunio C Hamano <gitster@pobox.com>
Thu, 3 Apr 2014 20:39:06 +0000 (13:39 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 3 Apr 2014 20:39:06 +0000 (13:39 -0700)
* jk/mv-submodules-fix:
mv: prevent mismatched data when ignoring errors.
builtin/mv: fix out of bounds write

Conflicts:
t/t7001-mv.sh

1  2 
t/t7001-mv.sh
diff --cc t/t7001-mv.sh
index e3c8c2c1b8817acd85866470c6f76c4a4f8d17d7,4023b6ec48729d1cd2c9e9809fd322852166d9f0..215d43d6a6c8ce7f2b30e32dce6dfe34adc98b15
@@@ -442,25 -443,14 +443,35 @@@ test_expect_success 'mv --dry-run does 
        git diff-files --quiet -- sub .gitmodules
  '
  
 +test_expect_success 'checking out a commit before submodule moved needs manual updates' '
 +      git mv sub sub2 &&
 +      git commit -m "moved sub to sub2" &&
 +      git checkout -q HEAD^ 2>actual &&
 +      echo "warning: unable to rmdir sub2: Directory not empty" >expected &&
 +      test_i18ncmp expected actual &&
 +      git status -s sub2 >actual &&
 +      echo "?? sub2/" >expected &&
 +      test_cmp expected actual &&
 +      ! test -f sub/.git &&
 +      test -f sub2/.git &&
 +      git submodule update &&
 +      test -f sub/.git &&
 +      rm -rf sub2 &&
 +      git diff-index --exit-code HEAD &&
 +      git update-index --refresh &&
 +      git diff-files --quiet -- sub .gitmodules &&
 +      git status -s sub2 >actual &&
 +      ! test -s actual
 +'
 +
+ test_expect_success 'mv -k does not accidentally destroy submodules' '
+       git checkout submodule &&
+       mkdir dummy dest &&
+       git mv -k dummy sub dest &&
+       git status --porcelain >actual &&
+       grep "^R  sub -> dest/sub" actual &&
+       git reset --hard &&
+       git checkout .
+ '
  test_done