In git-checkout.txt, it states
As a special case, you may use `"A...B"` as a shortcut for the
merge base of `A` and `B` if there is exactly one merge base. You can
leave out at most one of `A` and `B`, in which case it defaults to
`HEAD`.
However, there exists a bug where performing
$ git checkout -b test master...
fails with the message
fatal: Not a valid object name: 'master...'.
Demonstrate this failure so that it can be corrected later.
Signed-off-by: Denton Liu <[email protected]>
---
t/t2018-checkout-branch.sh | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/t/t2018-checkout-branch.sh b/t/t2018-checkout-branch.sh
index f1c7023e1a..3cd142657a 100755
--- a/t/t2018-checkout-branch.sh
+++ b/t/t2018-checkout-branch.sh
@@ -66,6 +66,13 @@ test_expect_success 'checkout -b to a new branch, set to
HEAD' '
do_checkout branch2
'
+test_expect_failure 'checkout -b to a merge base' '
+ test_when_finished "
+ git checkout branch1 &&
+ test_might_fail git branch -D branch2" &&
+ git checkout -b branch2 branch1...
+'
+
test_expect_success 'checkout -b to a new branch, set to an explicit ref' '
test_when_finished "
git checkout branch1 &&
@@ -126,6 +133,12 @@ test_expect_success 'checkout -B to an existing branch
resets branch to HEAD' '
do_checkout branch2 "" -B
'
+test_expect_failure 'checkout -B to a merge base' '
+ git checkout branch1 &&
+
+ git checkout -B branch2 branch1...
+'
+
test_expect_success 'checkout -B to an existing branch from detached HEAD
resets branch to HEAD' '
git checkout $(git rev-parse --verify HEAD) &&
--
2.21.0.1033.g0e8cc1100c