Merge branch 'mm/checkout-auto-track-fix' into maint
"git checkout topic", when there is not yet a local "topic" branch but there is a unique remote-tracking branch for a remote "topic" branch, pretended as if "git checkout -t -b topic remote/$r/topic" (for that unique remote $r) was run. This hack however was not implemented for "git checkout topic --". * mm/checkout-auto-track-fix: checkout: proper error message on 'git checkout foo bar --' checkout: allow dwim for branch creation for "git checkout $branch --"
This commit is contained in:
@@ -47,4 +47,10 @@ test_expect_success 'disambiguate checking out from a tree-ish' '
|
||||
git diff --exit-code --quiet
|
||||
'
|
||||
|
||||
test_expect_success 'accurate error message with more than one ref' '
|
||||
test_must_fail git checkout HEAD master -- 2>actual &&
|
||||
grep 2 actual &&
|
||||
test_i18ngrep "one reference expected, 2 given" actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -164,4 +164,25 @@ test_expect_success 'checkout of branch from a single remote succeeds #4' '
|
||||
test_branch_upstream eggs repo_d eggs
|
||||
'
|
||||
|
||||
test_expect_success 'checkout of branch with a file having the same name fails' '
|
||||
git checkout -B master &&
|
||||
test_might_fail git branch -D spam &&
|
||||
|
||||
>spam &&
|
||||
test_must_fail git checkout spam &&
|
||||
test_must_fail git rev-parse --verify refs/heads/spam &&
|
||||
test_branch master
|
||||
'
|
||||
|
||||
test_expect_success 'checkout <branch> -- succeeds, even if a file with the same name exists' '
|
||||
git checkout -B master &&
|
||||
test_might_fail git branch -D spam &&
|
||||
|
||||
>spam &&
|
||||
git checkout spam -- &&
|
||||
test_branch spam &&
|
||||
test_cmp_rev refs/remotes/extra_dir/repo_c/extra_dir/spam HEAD &&
|
||||
test_branch_upstream spam repo_c spam
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
Reference in New Issue
Block a user