diff options
author | Junio C Hamano <gitster@pobox.com> | 2023-11-23 09:00:31 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-12-13 18:48:17 +0300 |
commit | b23285a921a84c3b83d9aaca31afedf290c59254 (patch) | |
tree | 9d60e7089e73328124c9b6603547e3dd6769ac3f /t/t2060-switch.sh | |
parent | 9263c40a0a0c299db59b8a64e87b95026a28812a (diff) |
checkout: forbid "-B <branch>" from touching a branch used elsewhere
"git checkout -B <branch> [<start-point>]", being a "forced" version
of "-b", switches to the <branch>, after optionally resetting its
tip to the <start-point>, even if the <branch> is in use in another
worktree, which is somewhat unexpected.
Protect the <branch> using the same logic that forbids "git checkout
<branch>" from touching a branch that is in use elsewhere.
This is a breaking change that may deserve backward compatibliity
warning in the Release Notes. The "--ignore-other-worktrees" option
can be used as an escape hatch if the finger memory of existing
users depend on the current behaviour of "-B".
Reported-by: Willem Verstraeten <willem.verstraeten@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t2060-switch.sh')
-rwxr-xr-x | t/t2060-switch.sh | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/t/t2060-switch.sh b/t/t2060-switch.sh index e247a4735b..c91c4db936 100755 --- a/t/t2060-switch.sh +++ b/t/t2060-switch.sh @@ -170,8 +170,10 @@ test_expect_success 'switch back when temporarily detached and checked out elsew # we test in both worktrees to ensure that works # as expected with "first" and "next" worktrees test_must_fail git -C wt1 switch shared && + test_must_fail git -C wt1 switch -C shared && git -C wt1 switch --ignore-other-worktrees shared && test_must_fail git -C wt2 switch shared && + test_must_fail git -C wt2 switch -C shared && git -C wt2 switch --ignore-other-worktrees shared ' |