diff options
author | Junio C Hamano <gitster@pobox.com> | 2019-01-05 00:33:34 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-01-05 00:33:34 +0300 |
commit | 8d7f9dbf84fca7158dbbc69af1ac4002396a4d9a (patch) | |
tree | 35158bce87365f3c6e38faa7c0df54337b3fa637 /t | |
parent | 0a84724bf8ed1240b61e2401aec8a6cab93111b1 (diff) | |
parent | be4908f1038861892878db29441be5a4a024784d (diff) |
Merge branch 'nd/checkout-dwim-fix'
"git checkout frotz" (without any double-dash) avoids ambiguity by
making sure 'frotz' cannot be interpreted as a revision and as a
path at the same time. This safety has been updated to check also
a unique remote-tracking branch 'frotz' in a remote, when dwimming
to create a local branch 'frotz' out of a remote-tracking branch
'frotz' from a remote.
* nd/checkout-dwim-fix:
checkout: disambiguate dwim tracking branches and local files
Diffstat (limited to 't')
-rwxr-xr-x | t/t2024-checkout-dwim.sh | 31 | ||||
-rwxr-xr-x | t/t9902-completion.sh | 3 |
2 files changed, 33 insertions, 1 deletions
diff --git a/t/t2024-checkout-dwim.sh b/t/t2024-checkout-dwim.sh index 69b6774d10..fa0718c730 100755 --- a/t/t2024-checkout-dwim.sh +++ b/t/t2024-checkout-dwim.sh @@ -278,4 +278,35 @@ test_expect_success 'loosely defined local base branch is reported correctly' ' test_cmp expect actual ' +test_expect_success 'reject when arg could be part of dwim branch' ' + git remote add foo file://non-existent-place && + git update-ref refs/remotes/foo/dwim-arg HEAD && + echo foo >dwim-arg && + git add dwim-arg && + echo bar >dwim-arg && + test_must_fail git checkout dwim-arg && + test_must_fail git rev-parse refs/heads/dwim-arg -- && + grep bar dwim-arg +' + +test_expect_success 'disambiguate dwim branch and checkout path (1)' ' + git update-ref refs/remotes/foo/dwim-arg1 HEAD && + echo foo >dwim-arg1 && + git add dwim-arg1 && + echo bar >dwim-arg1 && + git checkout -- dwim-arg1 && + test_must_fail git rev-parse refs/heads/dwim-arg1 -- && + grep foo dwim-arg1 +' + +test_expect_success 'disambiguate dwim branch and checkout path (2)' ' + git update-ref refs/remotes/foo/dwim-arg2 HEAD && + echo foo >dwim-arg2 && + git add dwim-arg2 && + echo bar >dwim-arg2 && + git checkout dwim-arg2 -- && + git rev-parse refs/heads/dwim-arg2 -- && + grep bar dwim-arg2 +' + test_done diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index 137fdc9bd5..6558eee499 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -1434,7 +1434,8 @@ test_expect_success 'double dash "git checkout"' ' --ignore-other-worktrees Z --recurse-submodules Z --progress Z - --no-quiet Z + --guess Z + --no-guess Z --no-... Z EOF ' |