From: Junio C Hamano Date: Thu, 3 Apr 2014 20:39:06 +0000 (-0700) Subject: Merge branch 'jk/mv-submodules-fix' into maint X-Git-Tag: v1.9.2~11 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/3097b687bea8817b4b0afd84db8c4b1079cea92f Merge branch 'jk/mv-submodules-fix' into maint * jk/mv-submodules-fix: mv: prevent mismatched data when ignoring errors. builtin/mv: fix out of bounds write Conflicts: t/t7001-mv.sh --- 3097b687bea8817b4b0afd84db8c4b1079cea92f diff --cc t/t7001-mv.sh index e3c8c2c1b8,4023b6ec48..215d43d6a6 --- a/t/t7001-mv.sh +++ b/t/t7001-mv.sh @@@ -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