Merge branch 'mm/shortopt-detached'
[gitweb.git] / t / t2017-checkout-orphan.sh
index a8297c61bd7402423eec6af1ba92f46cd13dd1bd..2d2f63f22ee59d8dc24dafaa5224928ad62dea0c 100755 (executable)
@@ -49,6 +49,55 @@ 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_must_fail git rev-parse --verify delta@{0} &&
+       git commit -m Delta &&
+       git rev-parse --verify delta@{0}
+'
+
+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_must_fail git rev-parse --verify epsilon@{0} &&
+       git commit -m Epsilon &&
+       test_must_fail git rev-parse --verify epsilon@{0}
+'
+
+test_expect_success '--orphan with -l makes reflog when core.logAllRefUpdates = false' '
+       git checkout master &&
+       git checkout -l --orphan zeta &&
+       test_must_fail git rev-parse --verify zeta@{0} &&
+       git commit -m Zeta &&
+       git rev-parse --verify zeta@{0}
+'
+
+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_must_fail git rev-parse --verify eta@{0} &&
+       git checkout master &&
+       test_must_fail git rev-parse --verify eta@{0}
+'
+
 test_expect_success '--orphan is rejected with an existing name' '
        git checkout master &&
        test_must_fail git checkout --orphan master &&
@@ -60,31 +109,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