summaryrefslogtreecommitdiff
path: root/t/t2017-checkout-orphan.sh
diff options
context:
space:
mode:
authorErick Mattos <erick.mattos@gmail.com>2010-05-21 21:28:37 -0300
committerJunio C Hamano <gitster@pobox.com>2010-06-03 14:46:14 -0700
commit3631bf77f75bc34e810216f3ec6abc8203e2d16a (patch)
treeaf615038fc5de632a43ae8e3d51efb2ca50fa984 /t/t2017-checkout-orphan.sh
parent859c30175f7d8f64f61968cb3ece7aca9218b314 (diff)
downloadgit-3631bf77f75bc34e810216f3ec6abc8203e2d16a.tar.gz
checkout --orphan: respect -l option always
Added changes to satisfy a corner case: creating reflogs by using -l when core.logAllRefUpdates is set to false. Signed-off-by: Erick Mattos <erick.mattos@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t2017-checkout-orphan.sh')
-rwxr-xr-xt/t2017-checkout-orphan.sh78
1 files changed, 57 insertions, 21 deletions
diff --git a/t/t2017-checkout-orphan.sh b/t/t2017-checkout-orphan.sh
index a8297c61bd..be88d4b5ee 100755
--- a/t/t2017-checkout-orphan.sh
+++ b/t/t2017-checkout-orphan.sh
@@ -49,6 +49,62 @@ test_expect_success '--orphan must be rejected with -b' '
test refs/heads/master = "$(git symbolic-ref HEAD)"
'
+test_expect_success '--orphan must be rejected with -t' '
+ git checkout master &&
+ test_must_fail git checkout --orphan new -t master &&
+ test refs/heads/master = "$(git symbolic-ref HEAD)"
+'
+
+test_expect_success '--orphan ignores branch.autosetupmerge' '
+ git checkout master &&
+ git config branch.autosetupmerge always &&
+ git checkout --orphan gamma &&
+ test -z "$(git config branch.gamma.merge)" &&
+ test refs/heads/gamma = "$(git symbolic-ref HEAD)" &&
+ test_must_fail git rev-parse --verify HEAD^
+'
+
+test_expect_success '--orphan makes reflog by default' '
+ git checkout master &&
+ git config --unset core.logAllRefUpdates &&
+ git checkout --orphan delta &&
+ ! test -f .git/logs/refs/heads/delta &&
+ test_must_fail PAGER= git reflog show delta &&
+ git commit -m Delta &&
+ test -f .git/logs/refs/heads/delta &&
+ PAGER= git reflog show delta
+'
+
+test_expect_success '--orphan does not make reflog when core.logAllRefUpdates = false' '
+ git checkout master &&
+ git config core.logAllRefUpdates false &&
+ git checkout --orphan epsilon &&
+ ! test -f .git/logs/refs/heads/epsilon &&
+ test_must_fail PAGER= git reflog show epsilon &&
+ git commit -m Epsilon &&
+ ! test -f .git/logs/refs/heads/epsilon &&
+ test_must_fail PAGER= git reflog show epsilon
+'
+
+test_expect_success '--orphan with -l makes reflog when core.logAllRefUpdates = false' '
+ git checkout master &&
+ git checkout -l --orphan zeta &&
+ test -f .git/logs/refs/heads/zeta &&
+ test_must_fail PAGER= git reflog show zeta &&
+ git commit -m Zeta &&
+ PAGER= git reflog show zeta
+'
+
+test_expect_success 'giving up --orphan not committed when -l and core.logAllRefUpdates = false deletes reflog' '
+ git checkout master &&
+ git checkout -l --orphan eta &&
+ test -f .git/logs/refs/heads/eta &&
+ test_must_fail PAGER= git reflog show eta &&
+ git checkout master &&
+ ! test -f .git/logs/refs/heads/eta &&
+ test_must_fail PAGER= git reflog show eta
+'
+
test_expect_success '--orphan is rejected with an existing name' '
git checkout master &&
test_must_fail git checkout --orphan master &&
@@ -60,31 +116,11 @@ test_expect_success '--orphan refuses to switch if a merge is needed' '
git reset --hard &&
echo local >>"$TEST_FILE" &&
cat "$TEST_FILE" >"$TEST_FILE.saved" &&
- test_must_fail git checkout --orphan gamma master^ &&
+ test_must_fail git checkout --orphan new master^ &&
test refs/heads/master = "$(git symbolic-ref HEAD)" &&
test_cmp "$TEST_FILE" "$TEST_FILE.saved" &&
git diff-index --quiet --cached HEAD &&
git reset --hard
'
-test_expect_success '--orphan does not mix well with -t' '
- git checkout master &&
- test_must_fail git checkout -t master --orphan gamma &&
- test refs/heads/master = "$(git symbolic-ref HEAD)"
-'
-
-test_expect_success '--orphan ignores branch.autosetupmerge' '
- git checkout -f master &&
- git config branch.autosetupmerge always &&
- git checkout --orphan delta &&
- test -z "$(git config branch.delta.merge)" &&
- test refs/heads/delta = "$(git symbolic-ref HEAD)" &&
- test_must_fail git rev-parse --verify HEAD^
-'
-
-test_expect_success '--orphan does not mix well with -l' '
- git checkout -f master &&
- test_must_fail git checkout -l --orphan gamma
-'
-
test_done