[PATCH v4 0/4] fix die_if_checked_out() when ignore_current_worktree
- From
Rubén Justo <rjusto@gmail.com>
- Date
- Feb 25, 2023, 14:14 UTC
- Message-ID
- <6fed3b1b-1c4e-9298-19b6-7ad9c04c87dd@gmail.com>
- In-Reply-To
- <f7f45f54-9261-45ea-3399-8ba8dee6832b@gmail.com>
Since v3, two errors in 4/4 have been fixed:
- "checkout -" must be done before "branch -d"
- "branch -D" instead of "branch -d" because "shared" is a non-merged
branch.Also, '||:' has been used to chain commands in the test_when_finished() block.
Rubén Justo (4): worktree: introduce is_shared_symref() branch: fix die_if_checked_out() when ignore_current_worktree rebase: refuse to switch to a branch already checked out elsewhere (test) switch: reject if the branch is already checked out elsewhere (test)
branch.c | 14 +++++++---- t/t2060-switch.sh | 29 ++++++++++++++++++++++ t/t3400-rebase.sh | 14 +++++++++++ worktree.c | 63 +++++++++++++++++++++++------------------------ worktree.h | 6 +++++ 5 files changed, 89 insertions(+), 37 deletions(-)
Range-diff against v3:
1: 40b5ea54d3 = 1: 22d0944aad worktree: introduce is_shared_symref()
2: 2f1479b354 = 2: e7ba7b6fdd branch: fix die_if_checked_out() when ignore_current_worktree
3: 81a5b619c3 = 3: 8de8319d0e rebase: refuse to switch to a branch already checked out elsewhere (test)
4: 6559e58344 ! 4: 27d6ae2755 switch: reject if the branch is already checked out elsewhere (test)
@@ t/t2060-switch.sh: test_expect_success 'tracking info copied with autoSetupMerge
+test_expect_success 'switch back when temporarily detached and checked out elsewhere ' '
+ test_when_finished "
-+ git worktree remove wt1 &&
-+ git worktree remove wt2 &&
-+ git branch -d shared
-+ git checkout -
++ git worktree remove wt1 ||:
++ git worktree remove wt2 ||:
++ git checkout - ||:
++ git branch -D shared ||:
+ " &&
+ git checkout -b shared &&
+ test_commit shared-first &&-- 2.39.2