This shows that with the "--merge-dirty" option, changes that are both in the work tree and the index are kept in the work tree after the reset (but discarded in the index). As with the "--merge" option, changes that are in both the work tree and the index are discarded after the reset. Signed-off-by: Christian Couder <chriscool@xxxxxxxxxxxxx> --- t/t7110-reset-merge.sh | 54 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 49 insertions(+), 5 deletions(-) diff --git a/t/t7110-reset-merge.sh b/t/t7110-reset-merge.sh index 45714ae..1e6d634 100755 --- a/t/t7110-reset-merge.sh +++ b/t/t7110-reset-merge.sh @@ -3,7 +3,7 @@ # Copyright (c) 2009 Christian Couder # -test_description='Tests for "git reset --merge"' +test_description='Tests for "git reset" with --merge and --merge-dirty' exec </dev/null @@ -19,7 +19,7 @@ test_expect_success 'creating initial files' ' git commit -m "Initial commit" ' -test_expect_success 'ok with changes in file not changed by reset' ' +test_expect_success '--merge: ok if changes in file not touched by reset' ' echo "line 4" >> file1 && echo "line 4" >> file2 && test_tick && @@ -32,7 +32,21 @@ test_expect_success 'ok with changes in file not changed by reset' ' grep 4 file2 ' -test_expect_success 'discard changes added to index 1' ' +test_expect_success '--merge-dirty: ok if changes in file untouched by reset' ' + git reset --hard HEAD^ && + echo "line 4" >> file1 && + echo "line 4" >> file2 && + test_tick && + git commit -m "add line 4" file1 && + git reset --merge-dirty HEAD^ && + ! grep 4 file1 && + grep 4 file2 && + git reset --merge-dirty HEAD@{1} && + grep 4 file1 && + grep 4 file2 +' + +test_expect_success '--merge: discard changes added to index 1' ' echo "line 5" >> file1 && git add file1 && git reset --merge HEAD^ && @@ -47,7 +61,7 @@ test_expect_success 'discard changes added to index 1' ' grep 4 file1 ' -test_expect_success 'discard changes added to index 2' ' +test_expect_success '--merge: discard changes added to index 2' ' echo "line 4" >> file2 && git add file2 && git reset --merge HEAD^ && @@ -57,7 +71,37 @@ test_expect_success 'discard changes added to index 2' ' grep 4 file1 ' -test_expect_success 'not ok with changes in file changed by reset' ' +test_expect_success '--merge-dirty: not ok with touched changes in index' ' + echo "line 4" >> file2 && + echo "line 5" >> file1 && + git add file1 && + test_must_fail git reset --merge-dirty HEAD^ && + git reset --hard HEAD +' + +test_expect_success '--merge-dirty: keep untouched changes' ' + echo "line 4" >> file2 && + git add file2 && + git reset --merge-dirty HEAD^ && + grep 4 file2 && + git reset --merge HEAD@{1} && + grep 4 file2 && + grep 4 file1 && + git reset --hard HEAD +' + +test_expect_success '--merge: not ok with changes in file changed by reset' ' + echo "line 6" >> file1 && + test_tick && + git commit -m "add line 6" file1 && + sed -e "s/line 1/changed line 1/" <file1 >file3 && + mv file3 file1 && + test_must_fail git reset --merge HEAD^ 2>err.log && + grep file1 err.log | grep "not uptodate" +' + +test_expect_success '--merge-dirty: not ok with changes in file changed by reset' ' + git reset --hard HEAD^ && echo "line 6" >> file1 && test_tick && git commit -m "add line 6" file1 && -- 1.6.4.271.ge010d -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html