From bdecd9d41b3528e17aea2290344c584412e2424e Mon Sep 17 00:00:00 2001 From: Matthieu Moy Date: Fri, 13 Jul 2007 19:41:38 +0200 Subject: More permissive "git-rm --cached" behavior without -f. In the previous behavior, "git-rm --cached" (without -f) had the same restriction as "git-rm". This forced the user to use the -f flag in situations which weren't actually dangerous, like: $ git add foo # oops, I didn't want this $ git rm --cached foo # back to initial situation Previously, the index had to match the file *and* the HEAD. With --cached, the index must now match the file *or* the HEAD. The behavior without --cached is unchanged, but provides better error messages. Signed-off-by: Matthieu Moy Signed-off-by: Junio C Hamano --- t/t3600-rm.sh | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 't') diff --git a/t/t3600-rm.sh b/t/t3600-rm.sh index 13a461f31..5c001aa48 100755 --- a/t/t3600-rm.sh +++ b/t/t3600-rm.sh @@ -45,6 +45,40 @@ test_expect_success \ 'Test that git rm foo succeeds' \ 'git rm --cached foo' +test_expect_success \ + 'Test that git rm --cached foo succeeds if the index matches the file' \ + 'echo content > foo + git add foo + git rm --cached foo' + +test_expect_success \ + 'Test that git rm --cached foo succeeds if the index matches the file' \ + 'echo content > foo + git add foo + git commit -m foo + echo "other content" > foo + git rm --cached foo' + +test_expect_failure \ + 'Test that git rm --cached foo fails if the index matches neither the file nor HEAD' \ + 'echo content > foo + git add foo + git commit -m foo + echo "other content" > foo + git add foo + echo "yet another content" > foo + git rm --cached foo' + +test_expect_success \ + 'Test that git rm --cached -f foo works in case where --cached only did not' \ + 'echo content > foo + git add foo + git commit -m foo + echo "other content" > foo + git add foo + echo "yet another content" > foo + git rm --cached -f foo' + test_expect_success \ 'Post-check that foo exists but is not in index after git rm foo' \ '[ -f foo ] && ! git ls-files --error-unmatch foo' -- cgit v1.2.1