mirror of
https://github.com/git/git.git
synced 2024-11-24 18:33:43 +08:00
3bed291a3b
GIT_REFLOG_ACTION is an environment variable specifying the reflog message to write after an action is completed. Several other commands including merge, reset, and commit respect it. Fix the failing tests in t/checkout-last by making checkout respect it too. You can now expect $ git checkout - to work as expected after any operation that internally uses "checkout" as its implementation detail, e.g. "rebase". Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
154 lines
3.6 KiB
Bash
Executable File
154 lines
3.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='checkout can switch to last branch and merge base'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'setup' '
|
|
echo hello >world &&
|
|
git add world &&
|
|
git commit -m initial &&
|
|
git branch other &&
|
|
echo "hello again" >>world &&
|
|
git add world &&
|
|
git commit -m second
|
|
'
|
|
|
|
test_expect_success '"checkout -" does not work initially' '
|
|
test_must_fail git checkout -
|
|
'
|
|
|
|
test_expect_success 'first branch switch' '
|
|
git checkout other
|
|
'
|
|
|
|
test_expect_success '"checkout -" switches back' '
|
|
git checkout - &&
|
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/master"
|
|
'
|
|
|
|
test_expect_success '"checkout -" switches forth' '
|
|
git checkout - &&
|
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/other"
|
|
'
|
|
|
|
test_expect_success 'detach HEAD' '
|
|
git checkout $(git rev-parse HEAD)
|
|
'
|
|
|
|
test_expect_success '"checkout -" attaches again' '
|
|
git checkout - &&
|
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/other"
|
|
'
|
|
|
|
test_expect_success '"checkout -" detaches again' '
|
|
git checkout - &&
|
|
test "z$(git rev-parse HEAD)" = "z$(git rev-parse other)" &&
|
|
test_must_fail git symbolic-ref HEAD
|
|
'
|
|
|
|
test_expect_success 'more switches' '
|
|
for i in 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
|
|
do
|
|
git checkout -b branch$i
|
|
done
|
|
'
|
|
|
|
more_switches () {
|
|
for i in 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
|
|
do
|
|
git checkout branch$i
|
|
done
|
|
}
|
|
|
|
test_expect_success 'switch to the last' '
|
|
more_switches &&
|
|
git checkout @{-1} &&
|
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch2"
|
|
'
|
|
|
|
test_expect_success 'switch to second from the last' '
|
|
more_switches &&
|
|
git checkout @{-2} &&
|
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch3"
|
|
'
|
|
|
|
test_expect_success 'switch to third from the last' '
|
|
more_switches &&
|
|
git checkout @{-3} &&
|
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch4"
|
|
'
|
|
|
|
test_expect_success 'switch to fourth from the last' '
|
|
more_switches &&
|
|
git checkout @{-4} &&
|
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch5"
|
|
'
|
|
|
|
test_expect_success 'switch to twelfth from the last' '
|
|
more_switches &&
|
|
git checkout @{-12} &&
|
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch13"
|
|
'
|
|
|
|
test_expect_success 'merge base test setup' '
|
|
git checkout -b another other &&
|
|
echo "hello again" >>world &&
|
|
git add world &&
|
|
git commit -m third
|
|
'
|
|
|
|
test_expect_success 'another...master' '
|
|
git checkout another &&
|
|
git checkout another...master &&
|
|
test "z$(git rev-parse --verify HEAD)" = "z$(git rev-parse --verify master^)"
|
|
'
|
|
|
|
test_expect_success '...master' '
|
|
git checkout another &&
|
|
git checkout ...master &&
|
|
test "z$(git rev-parse --verify HEAD)" = "z$(git rev-parse --verify master^)"
|
|
'
|
|
|
|
test_expect_success 'master...' '
|
|
git checkout another &&
|
|
git checkout master... &&
|
|
test "z$(git rev-parse --verify HEAD)" = "z$(git rev-parse --verify master^)"
|
|
'
|
|
|
|
test_expect_success '"checkout -" works after a rebase A' '
|
|
git checkout master &&
|
|
git checkout other &&
|
|
git rebase master &&
|
|
git checkout - &&
|
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/master"
|
|
'
|
|
|
|
test_expect_success '"checkout -" works after a rebase A B' '
|
|
git branch moodle master~1 &&
|
|
git checkout master &&
|
|
git checkout other &&
|
|
git rebase master moodle &&
|
|
git checkout - &&
|
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/master"
|
|
'
|
|
|
|
test_expect_success '"checkout -" works after a rebase -i A' '
|
|
git checkout master &&
|
|
git checkout other &&
|
|
git rebase -i master &&
|
|
git checkout - &&
|
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/master"
|
|
'
|
|
|
|
test_expect_success '"checkout -" works after a rebase -i A B' '
|
|
git branch foodle master~1 &&
|
|
git checkout master &&
|
|
git checkout other &&
|
|
git rebase master foodle &&
|
|
git checkout - &&
|
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/master"
|
|
'
|
|
|
|
test_done
|