(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'test git worktree add' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-rebase.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:26))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:30) (Token id:Id.Lit_Chars val:'\ttest_commit init\n' span_id:31) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" an existing worktree' span_id:38))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:42) (Token id:Id.Lit_Chars val:'\tmkdir -p existing/subtree &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\ttest_must_fail git worktree add --detach existing master\n' span_id:44) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" an existing empty worktree' span_id:51))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:55) (Token id:Id.Lit_Chars val:'\tmkdir existing_empty &&\n' span_id:56) (Token id:Id.Lit_Chars val:'\tgit worktree add --detach existing_empty master\n' span_id:57) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"add" using shorthand - fails when no previous branch' span_id: 64 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:68) (Token id: Id.Lit_Chars val: '\ttest_must_fail git worktree add existing_short -\n' span_id: 69 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" using - shorthand' span_id:76))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:80) (Token id:Id.Lit_Chars val:'\tgit checkout -b newbranch &&\n' span_id:81) (Token id:Id.Lit_Chars val:'\techo hello >myworld &&\n' span_id:82) (Token id:Id.Lit_Chars val:'\tgit add myworld &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\tgit commit -m myworld &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:85) (Token id:Id.Lit_Chars val:'\tgit worktree add short-hand - &&\n' span_id:86) (Token id:Id.Lit_Chars val:'\techo refs/heads/newbranch >expect &&\n' span_id:87) (Token id: Id.Lit_Chars val: '\tgit -C short-hand rev-parse --symbolic-full-name HEAD >actual &&\n' span_id: 88 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:89) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" refuses to checkout locked branch' span_id:96))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:100) (Token id: Id.Lit_Chars val: '\ttest_must_fail git worktree add zere master &&\n' span_id: 101 ) (Token id:Id.Lit_Chars val:'\t! test -d zere &&\n' span_id:102) (Token id:Id.Lit_Chars val:'\t! test -d .git/worktrees/zere\n' span_id:103) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'checking out paths not complaining about linked checkouts' span_id: 110 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:114) (Token id:Id.Lit_Chars val:'\t(\n' span_id:115) (Token id:Id.Lit_Chars val:'\tcd existing_empty &&\n' span_id:116) (Token id:Id.Lit_Chars val:'\techo dirty >>init.t &&\n' span_id:117) (Token id:Id.Lit_Chars val:'\tgit checkout master -- init.t\n' span_id:118) (Token id:Id.Lit_Chars val:'\t)\n' span_id:119) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" worktree' span_id:126))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:130) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD >expect &&\n' span_id:131) (Token id:Id.Lit_Chars val:'\tgit worktree add --detach here master &&\n' span_id:132) (Token id:Id.Lit_Chars val:'\t(\n' span_id:133) (Token id:Id.Lit_Chars val:'\t\tcd here &&\n' span_id:134) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../init.t init.t &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git symbolic-ref HEAD &&\n' span_id:136) (Token id:Id.Lit_Chars val:'\t\tgit rev-parse HEAD >actual &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../expect actual &&\n' span_id:138) (Token id:Id.Lit_Chars val:'\t\tgit fsck\n' span_id:139) (Token id:Id.Lit_Chars val:'\t)\n' span_id:140) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" worktree from a subdir' span_id:147))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:151) (Token id:Id.Lit_Chars val:'\t(\n' span_id:152) (Token id:Id.Lit_Chars val:'\t\tmkdir sub &&\n' span_id:153) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:154) (Token id:Id.Lit_Chars val:'\t\tgit worktree add --detach here master &&\n' span_id:155) (Token id:Id.Lit_Chars val:'\t\tcd here &&\n' span_id:156) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../../init.t init.t\n' span_id:157) (Token id:Id.Lit_Chars val:'\t)\n' span_id:158) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" from a linked checkout' span_id:165))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:169) (Token id:Id.Lit_Chars val:'\t(\n' span_id:170) (Token id:Id.Lit_Chars val:'\t\tcd here &&\n' span_id:171) (Token id: Id.Lit_Chars val: '\t\tgit worktree add --detach nested-here master &&\n' span_id: 172 ) (Token id:Id.Lit_Chars val:'\t\tcd nested-here &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\t\tgit fsck\n' span_id:174) (Token id:Id.Lit_Chars val:'\t)\n' span_id:175) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" worktree creating new branch' span_id:182))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:186) (Token id: Id.Lit_Chars val: '\tgit worktree add -b newmaster there master &&\n' span_id: 187 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:188) (Token id:Id.Lit_Chars val:'\t\tcd there &&\n' span_id:189) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../init.t init.t &&\n' span_id:190) (Token id:Id.Lit_Chars val:'\t\tgit symbolic-ref HEAD >actual &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\t\techo refs/heads/newmaster >expect &&\n' span_id:192) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\t\tgit fsck\n' span_id:194) (Token id:Id.Lit_Chars val:'\t)\n' span_id:195) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'die the same branch is already checked out' span_id:202))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:206) (Token id:Id.Lit_Chars val:'\t(\n' span_id:207) (Token id:Id.Lit_Chars val:'\t\tcd here &&\n' span_id:208) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git checkout newmaster\n' span_id: 209 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:210) ) } ) (C {(test_expect_success)} {(SYMLINKS)} { (SQ (Token id: Id.Lit_Chars val: 'die the same branch is already checked out (symlink)' span_id: 219 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:223) (Token id: Id.Lit_Chars val: '\thead=$(git -C there rev-parse --git-path HEAD) &&\n' span_id: 224 ) (Token id:Id.Lit_Chars val:'\tref=$(git -C there symbolic-ref HEAD) &&\n' span_id:225) (Token id:Id.Lit_Chars val:'\trm "$head" &&\n' span_id:226) (Token id:Id.Lit_Chars val:'\tln -s "$ref" "$head" &&\n' span_id:227) (Token id: Id.Lit_Chars val: '\ttest_must_fail git -C here checkout newmaster\n' span_id: 228 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'not die the same branch is already checked out' span_id:235))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:239) (Token id:Id.Lit_Chars val:'\t(\n' span_id:240) (Token id:Id.Lit_Chars val:'\t\tcd here &&\n' span_id:241) (Token id: Id.Lit_Chars val: '\t\tgit worktree add --force anothernewmaster newmaster\n' span_id: 242 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:243) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'not die on re-checking out current branch' span_id:250))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:254) (Token id:Id.Lit_Chars val:'\t(\n' span_id:255) (Token id:Id.Lit_Chars val:'\t\tcd there &&\n' span_id:256) (Token id:Id.Lit_Chars val:'\t\tgit checkout newmaster\n' span_id:257) (Token id:Id.Lit_Chars val:'\t)\n' span_id:258) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" from a bare repo' span_id:265))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:269) (Token id:Id.Lit_Chars val:'\t(\n' span_id:270) (Token id:Id.Lit_Chars val:'\t\tgit clone --bare . bare &&\n' span_id:271) (Token id:Id.Lit_Chars val:'\t\tcd bare &&\n' span_id:272) (Token id:Id.Lit_Chars val:'\t\tgit worktree add -b bare-master ../there2 master\n' span_id:273) (Token id:Id.Lit_Chars val:'\t)\n' span_id:274) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'checkout from a bare repo without "add"' span_id:281))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:285) (Token id:Id.Lit_Chars val:'\t(\n' span_id:286) (Token id:Id.Lit_Chars val:'\t\tcd bare &&\n' span_id:287) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git checkout master\n' span_id: 288 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:289) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" default branch of a bare repo' span_id:296))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:300) (Token id:Id.Lit_Chars val:'\t(\n' span_id:301) (Token id:Id.Lit_Chars val:'\t\tgit clone --bare . bare2 &&\n' span_id:302) (Token id:Id.Lit_Chars val:'\t\tcd bare2 &&\n' span_id:303) (Token id:Id.Lit_Chars val:'\t\tgit worktree add ../there3 master\n' span_id:304) (Token id:Id.Lit_Chars val:'\t)\n' span_id:305) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'checkout with grafts' span_id:312))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:316) (Token id: Id.Lit_Chars val: '\ttest_when_finished rm .git/info/grafts &&\n' span_id: 317 ) (Token id:Id.Lit_Chars val:'\ttest_commit abc &&\n' span_id:318) (Token id:Id.Lit_Chars val:'\tSHA1=$(git rev-parse HEAD) &&\n' span_id:319) (Token id:Id.Lit_Chars val:'\ttest_commit def &&\n' span_id:320) (Token id:Id.Lit_Chars val:'\ttest_commit xyz &&\n' span_id:321) (Token id:Id.Lit_Chars val:'\techo "$(git rev-parse HEAD) $SHA1" >.git/info/grafts &&\n' span_id:322) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:323) (Token id:Id.Lit_Chars val:'\txyz\n' span_id:324) (Token id:Id.Lit_Chars val:'\tabc\n' span_id:325) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:326) (Token id:Id.Lit_Chars val:'\tgit log --format=%s -2 >actual &&\n' span_id:327) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:328) (Token id:Id.Lit_Chars val:'\tgit worktree add --detach grafted master &&\n' span_id:329) (Token id: Id.Lit_Chars val: '\tgit --git-dir=grafted/.git log --format=%s -2 >actual &&\n' span_id: 330 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:331) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" from relative HEAD' span_id:338))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:342) (Token id:Id.Lit_Chars val:'\ttest_commit a &&\n' span_id:343) (Token id:Id.Lit_Chars val:'\ttest_commit b &&\n' span_id:344) (Token id:Id.Lit_Chars val:'\ttest_commit c &&\n' span_id:345) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD~1 >expected &&\n' span_id:346) (Token id:Id.Lit_Chars val:'\tgit worktree add relhead HEAD~1 &&\n' span_id:347) (Token id:Id.Lit_Chars val:'\tgit -C relhead rev-parse HEAD >actual &&\n' span_id:348) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:349) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add -b" with <branch> omitted' span_id:356))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:360) (Token id: Id.Lit_Chars val: '\tgit worktree add -b burble flornk &&\n' span_id: 361 ) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev HEAD burble\n' span_id:362) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add --detach" with <branch> omitted' span_id:369))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:373) (Token id: Id.Lit_Chars val: '\tgit worktree add --detach fishhook &&\n' span_id: 374 ) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD >expected &&\n' span_id:375) (Token id: Id.Lit_Chars val: '\tgit -C fishhook rev-parse HEAD >actual &&\n' span_id: 376 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:377) (Token id: Id.Lit_Chars val: '\ttest_must_fail git -C fishhook symbolic-ref HEAD\n' span_id: 378 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" with <branch> omitted' span_id:385))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:389) (Token id:Id.Lit_Chars val:'\tgit worktree add wiffle/bat &&\n' span_id:390) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev HEAD bat\n' span_id:391) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"add" auto-vivify does not clobber existing branch' span_id: 398 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:402) (Token id:Id.Lit_Chars val:'\ttest_commit c1 &&\n' span_id:403) (Token id:Id.Lit_Chars val:'\ttest_commit c2 &&\n' span_id:404) (Token id:Id.Lit_Chars val:'\tgit branch precious HEAD~1 &&\n' span_id:405) (Token id:Id.Lit_Chars val:'\ttest_must_fail git worktree add precious &&\n' span_id:406) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev HEAD~1 precious &&\n' span_id:407) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing precious\n' span_id:408) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"add" no auto-vivify with --detach and <branch> omitted' span_id: 415 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:419) (Token id: Id.Lit_Chars val: '\tgit worktree add --detach mish/mash &&\n' span_id: 420 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse mash -- &&\n' span_id:421) (Token id: Id.Lit_Chars val: '\ttest_must_fail git -C mish/mash symbolic-ref HEAD\n' span_id: 422 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" -b/-B mutually exclusive' span_id:429))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:433) (Token id: Id.Lit_Chars val: '\ttest_must_fail git worktree add -b poodle -B poodle bamboo master\n' span_id: 434 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" -b/--detach mutually exclusive' span_id:441))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:445) (Token id: Id.Lit_Chars val: '\ttest_must_fail git worktree add -b poodle --detach bamboo master\n' span_id: 446 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" -B/--detach mutually exclusive' span_id:453))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:457) (Token id: Id.Lit_Chars val: '\ttest_must_fail git worktree add -B poodle --detach bamboo master\n' span_id: 458 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add -B" fails if the branch is checked out' span_id:465))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:469) (Token id:Id.Lit_Chars val:'\tgit rev-parse newmaster >before &&\n' span_id:470) (Token id: Id.Lit_Chars val: '\ttest_must_fail git worktree add -B newmaster bamboo master &&\n' span_id: 471 ) (Token id:Id.Lit_Chars val:'\tgit rev-parse newmaster >after &&\n' span_id:472) (Token id:Id.Lit_Chars val:'\ttest_cmp before after\n' span_id:473) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add -B' span_id:480))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:484) (Token id: Id.Lit_Chars val: '\tgit worktree add -B poodle bamboo2 master^ &&\n' span_id: 485 ) (Token id:Id.Lit_Chars val:'\tgit -C bamboo2 symbolic-ref HEAD >actual &&\n' span_id:486) (Token id:Id.Lit_Chars val:'\techo refs/heads/poodle >expected &&\n' span_id:487) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:488) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev master^ poodle\n' span_id:489) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'local clone from linked checkout' span_id:496))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:500) (Token id: Id.Lit_Chars val: '\tgit clone --local here here-clone &&\n' span_id: 501 ) (Token id:Id.Lit_Chars val:'\t( cd here-clone && git fsck )\n' span_id:502) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" worktree with --no-checkout' span_id:509))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:513) (Token id: Id.Lit_Chars val: '\tgit worktree add --no-checkout -b swamp swamp &&\n' span_id: 514 ) (Token id:Id.Lit_Chars val:'\t! test -e swamp/init.t &&\n' span_id:515) (Token id:Id.Lit_Chars val:'\tgit -C swamp reset --hard &&\n' span_id:516) (Token id:Id.Lit_Chars val:'\ttest_cmp init.t swamp/init.t\n' span_id:517) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"add" worktree with --checkout' span_id:524))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:528) (Token id: Id.Lit_Chars val: '\tgit worktree add --checkout -b swmap2 swamp2 &&\n' span_id: 529 ) (Token id:Id.Lit_Chars val:'\ttest_cmp init.t swamp2/init.t\n' span_id:530) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'put a worktree under rebase' span_id:537))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:541) (Token id:Id.Lit_Chars val:'\tgit worktree add under-rebase &&\n' span_id:542) (Token id:Id.Lit_Chars val:'\t(\n' span_id:543) (Token id:Id.Lit_Chars val:'\t\tcd under-rebase &&\n' span_id:544) (Token id:Id.Lit_Chars val:'\t\tset_fake_editor &&\n' span_id:545) (Token id: Id.Lit_Chars val: '\t\tFAKE_LINES="edit 1" git rebase -i HEAD^ &&\n' span_id: 546 ) (Token id: Id.Lit_Chars val: '\t\tgit worktree list | grep "under-rebase.*detached HEAD"\n' span_id: 547 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:548) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add a worktree, checking out a rebased branch' span_id:555))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:559) (Token id: Id.Lit_Chars val: '\ttest_must_fail git worktree add new-rebase under-rebase &&\n' span_id: 560 ) (Token id:Id.Lit_Chars val:'\t! test -d new-rebase\n' span_id:561) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'checking out a rebased branch from another worktree' span_id: 568 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:572) (Token id:Id.Lit_Chars val:'\tgit worktree add new-place &&\n' span_id:573) (Token id:Id.Lit_Chars val:'\ttest_must_fail git -C new-place checkout under-rebase\n' span_id:574) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'not allow to delete a branch under rebase' span_id:581))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:585) (Token id:Id.Lit_Chars val:'\t(\n' span_id:586) (Token id:Id.Lit_Chars val:'\t\tcd under-rebase &&\n' span_id:587) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git branch -D under-rebase\n' span_id: 588 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:589) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rename a branch under rebase not allowed' span_id:596))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:600) (Token id: Id.Lit_Chars val: '\ttest_must_fail git branch -M under-rebase rebase-with-new-name\n' span_id: 601 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'check out from current worktree branch ok' span_id:608))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:612) (Token id:Id.Lit_Chars val:'\t(\n' span_id:613) (Token id:Id.Lit_Chars val:'\t\tcd under-rebase &&\n' span_id:614) (Token id:Id.Lit_Chars val:'\t\tgit checkout under-rebase &&\n' span_id:615) (Token id:Id.Lit_Chars val:'\t\tgit checkout - &&\n' span_id:616) (Token id:Id.Lit_Chars val:'\t\tgit rebase --abort\n' span_id:617) (Token id:Id.Lit_Chars val:'\t)\n' span_id:618) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'checkout a branch under bisect' span_id:625))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:629) (Token id:Id.Lit_Chars val:'\tgit worktree add under-bisect &&\n' span_id:630) (Token id:Id.Lit_Chars val:'\t(\n' span_id:631) (Token id:Id.Lit_Chars val:'\t\tcd under-bisect &&\n' span_id:632) (Token id:Id.Lit_Chars val:'\t\tgit bisect start &&\n' span_id:633) (Token id:Id.Lit_Chars val:'\t\tgit bisect bad &&\n' span_id:634) (Token id:Id.Lit_Chars val:'\t\tgit bisect good HEAD~2 &&\n' span_id:635) (Token id: Id.Lit_Chars val: '\t\tgit worktree list | grep "under-bisect.*detached HEAD" &&\n' span_id: 636 ) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git worktree add new-bisect under-bisect &&\n' span_id: 637 ) (Token id:Id.Lit_Chars val:'\t\t! test -d new-bisect\n' span_id:638) (Token id:Id.Lit_Chars val:'\t)\n' span_id:639) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rename a branch under bisect not allowed' span_id:646))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:650) (Token id: Id.Lit_Chars val: '\ttest_must_fail git branch -M under-bisect bisect-with-new-name\n' span_id: 651 ) ) } ) (C {(test_done)}) ] )