The failure case which occurs on teaching git is taught the '-' shorthand
is when there exists no branch pointed to by '@{-1}'.
The ambiguous cases occur when there exist files named '-' or '@{-1}' in
the work tree. These are also treated as failure cases but here the user
is given advice as to how he can proceed.
Add tests to check the handling of these cases.
Also add a test to verify that reset - behaves like reset @{-1} when none
of the above cases are true.
Helped-by: Junio C Hamano <[email protected]>
Helped-by: Torsten Bögershausen <[email protected]>
Helped-by: Eric Sunshine <[email protected]>
Helped-by: Matthieu Moy <[email protected]>
Signed-off-by: Sundararajan R <[email protected]>
---
Thank you for your feedback Torsten and Eric.
I have now made the modifications suggested by you.
I have also incorporated the suggestions given by Matthieu on the archive.
Please let me know if there is something else I should add.
t/t7102-reset.sh | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 90 insertions(+)
diff --git a/t/t7102-reset.sh b/t/t7102-reset.sh
index 98bcfe2..c05dab0 100755
--- a/t/t7102-reset.sh
+++ b/t/t7102-reset.sh
@@ -568,4 +568,94 @@ test_expect_success 'reset --mixed sets up work tree' '
test_cmp expect actual
'
+test_expect_success 'reset - with no @{-1} should fail' '
+ git init new &&
+ (
+ cd new &&
+ test_must_fail git reset - 2>actual
+ ) &&
+ test_i18ngrep "unknown revision" new/actual
+ test_when_finished rm -rf new
+'
+
+test_expect_success 'reset - with no @{-1} and file named - should fail' '
+ git init new &&
+ (
+ cd new &&
+ echo "Hello" >- &&
+ git add - &&
+ test_must_fail git reset - 2>actual
+ ) &&
+ test_i18ngrep "both revision and filename" new/actual
+ test_when_finished rm -rf new
+'
+
+test_expect_success 'reset - with @{-1} and file named @{-1} should fail' '
+ git init new &&
+ (
+ cd new &&
+ echo "Hello" >@{-1} &&
+ git add @{-1} &&
+ git commit -m "first_commit" &&
+ git checkout -b new_branch &&
+ >@{-1} &&
+ git add @{-1} &&
+ test_must_fail git reset - 2>actual
+ ) &&
+ test_i18ngrep "both revision and filename" new/actual
+ test_when_finished rm -rf new
+'
+
+test_expect_success 'reset - with @{-1} and file named - should fail' '
+ git init new &&
+ (
+ cd new &&
+ echo "Hello" >- &&
+ git add - &&
+ git commit -m "first_commit" &&
+ git checkout -b new_branch &&
+ >- &&
+ git add - &&
+ test_must_fail git reset - 2>actual
+ ) &&
+ test_i18ngrep "both revision and filename" new/actual
+ test_when_finished rm -rf new
+'
+
+test_expect_success 'reset - with @{-1} and file named @{-1} and - should
fail' '
+ git init new &&
+ (
+ cd new &&
+ >- &&
+ git add - &&
+ git commit -m "first_commit" &&
+ git checkout -b new_branch
+ >@{-1} &&
+ git add @{-1} &&
+ test_must_fail git reset - 2>actual
+ ) &&
+ test_i18ngrep "both revision and filename" new/actual
+ test_when_finished rm -rf new
+'
+
+test_expect_success 'reset - with @{-1} and no file named - or @{-1} should
succeed' '
+ git init new &&
+ (
+ cd new &&
+ echo "Hey" >new_file &&
+ git add new_file &&
+ git commit -m "first_commit" &&
+ git checkout -b new_branch &&
+ >new_file &&
+ git add new_file &&
+ git reset - &&
+ git status -uno >file1 &&
+ git add new_file &&
+ git reset @{-1} &&
+ git status -uno >file2
+ ) &&
+ test_cmp new/file1 new/file2
+ test_when_finished rm -rf new
+'
+
test_done
--
2.1.0
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html