(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 remote-helper import and export commands' span_id: 15 ) ) } spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-gpg.sh)}) (command.ShFunction name: compare_refs body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [ {(git)} {(--git-dir) (Id.Lit_Equals '=') (DQ ($ Id.VSub_Number '$1') (/.git))} {(rev-parse)} {(--verify)} {($ Id.VSub_Number '$2')} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:53) fd: -1 arg_word: {(expect)} ) ] ) (command.Simple words: [ {(git)} {(--git-dir) (Id.Lit_Equals '=') (DQ ($ Id.VSub_Number '$3') (/.git))} {(rev-parse)} {(--verify)} {($ Id.VSub_Number '$4')} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:74) fd: -1 arg_word: {(actual)} ) ] ) (C {(test_cmp)} {(expect)} {(actual)}) ] ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup repository' span_id:92))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:96) (Token id:Id.Lit_Chars val:'\tgit init server &&\n' span_id:97) (Token id:Id.Lit_Chars val:'\t(cd server &&\n' span_id:98) (Token id:Id.Lit_Chars val:'\t echo content >file &&\n' span_id:99) (Token id:Id.Lit_Chars val:'\t git add file &&\n' span_id:100) (Token id:Id.Lit_Chars val:'\t git commit -m one)\n' span_id:101) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cloning from local repo' span_id:108))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:112) (Token id: Id.Lit_Chars val: '\tgit clone "testgit::${PWD}/server" local &&\n' span_id: 113 ) (Token id:Id.Lit_Chars val:'\ttest_cmp server/file local/file\n' span_id:114) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'create new commit on remote' span_id:121))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:125) (Token id:Id.Lit_Chars val:'\t(cd server &&\n' span_id:126) (Token id:Id.Lit_Chars val:'\t echo content >>file &&\n' span_id:127) (Token id:Id.Lit_Chars val:'\t git commit -a -m two)\n' span_id:128) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pulling from local repo' span_id:135))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:139) (Token id:Id.Lit_Chars val:'\t(cd local && git pull) &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\ttest_cmp server/file local/file\n' span_id:141) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pushing to local repo' span_id:148))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:152) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:153) (Token id:Id.Lit_Chars val:'\techo content >>file &&\n' span_id:154) (Token id:Id.Lit_Chars val:'\tgit commit -a -m three &&\n' span_id:155) (Token id:Id.Lit_Chars val:'\tgit push) &&\n' span_id:156) (Token id:Id.Lit_Chars val:'\tcompare_refs local HEAD server HEAD\n' span_id:157) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch new branch' span_id:164))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:168) (Token id:Id.Lit_Chars val:'\t(cd server &&\n' span_id:169) (Token id:Id.Lit_Chars val:'\t git reset --hard &&\n' span_id:170) (Token id:Id.Lit_Chars val:'\t git checkout -b new &&\n' span_id:171) (Token id:Id.Lit_Chars val:'\t echo content >>file &&\n' span_id:172) (Token id:Id.Lit_Chars val:'\t git commit -a -m five\n' span_id:173) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:174) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\t git fetch origin new\n' span_id:176) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:177) (Token id:Id.Lit_Chars val:'\tcompare_refs server HEAD local FETCH_HEAD\n' span_id:178) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch multiple branches' span_id:185))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:189) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:190) (Token id:Id.Lit_Chars val:'\t git fetch\n' span_id:191) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:192) (Token id: Id.Lit_Chars val: '\tcompare_refs server master local refs/remotes/origin/master &&\n' span_id: 193 ) (Token id:Id.Lit_Chars val:'\tcompare_refs server new local refs/remotes/origin/new\n' span_id:194) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push when remote has extra refs' span_id:201))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:205) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:206) (Token id:Id.Lit_Chars val:'\t git reset --hard origin/master &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\t echo content >>file &&\n' span_id:208) (Token id:Id.Lit_Chars val:'\t git commit -a -m six &&\n' span_id:209) (Token id:Id.Lit_Chars val:'\t git push\n' span_id:210) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:211) (Token id: Id.Lit_Chars val: '\tcompare_refs local master server master\n' span_id: 212 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push new branch by name' span_id:219))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:223) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:224) (Token id:Id.Lit_Chars val:'\t git checkout -b new-name &&\n' span_id:225) (Token id:Id.Lit_Chars val:'\t echo content >>file &&\n' span_id:226) (Token id:Id.Lit_Chars val:'\t git commit -a -m seven &&\n' span_id:227) (Token id:Id.Lit_Chars val:'\t git push origin new-name\n' span_id:228) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:229) (Token id: Id.Lit_Chars val: '\tcompare_refs local HEAD server refs/heads/new-name\n' span_id: 230 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push new branch with old:new refspec' span_id:237))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:241) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:242) (Token id:Id.Lit_Chars val:'\t git push origin new-name:new-refspec\n' span_id:243) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:244) (Token id:Id.Lit_Chars val:'\tcompare_refs local HEAD server refs/heads/new-refspec\n' span_id:245) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push new branch with HEAD:new refspec' span_id:252))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:256) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:257) (Token id:Id.Lit_Chars val:'\t git checkout new-name\n' span_id:258) (Token id:Id.Lit_Chars val:'\t git push origin HEAD:new-refspec-2\n' span_id:259) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:260) (Token id: Id.Lit_Chars val: '\tcompare_refs local HEAD server refs/heads/new-refspec-2\n' span_id: 261 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push delete branch' span_id:268))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:272) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:273) (Token id:Id.Lit_Chars val:'\t git push origin :new-name\n' span_id:274) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:275) (Token id:Id.Lit_Chars val:'\ttest_must_fail git --git-dir="server/.git" \\\n' span_id:276) (Token id: Id.Lit_Chars val: '\t rev-parse --verify refs/heads/new-name\n' span_id: 277 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'forced push' span_id:284))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:288) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:289) (Token id:Id.Lit_Chars val:'\tgit checkout -b force-test &&\n' span_id:290) (Token id:Id.Lit_Chars val:'\techo content >> file &&\n' span_id:291) (Token id:Id.Lit_Chars val:'\tgit commit -a -m eight &&\n' span_id:292) (Token id:Id.Lit_Chars val:'\tgit push origin force-test &&\n' span_id:293) (Token id:Id.Lit_Chars val:'\techo content >> file &&\n' span_id:294) (Token id: Id.Lit_Chars val: '\tgit commit -a --amend -m eight-modified &&\n' span_id: 295 ) (Token id:Id.Lit_Chars val:'\tgit push --force origin force-test\n' span_id:296) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:297) (Token id: Id.Lit_Chars val: '\tcompare_refs local refs/heads/force-test server refs/heads/force-test\n' span_id: 298 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cloning without refspec' span_id:305))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:309) (Token id:Id.Lit_Chars val:'\tGIT_REMOTE_TESTGIT_REFSPEC="" \\\n' span_id:310) (Token id:Id.Lit_Chars val:'\tgit clone "testgit::${PWD}/server" local2 2>error &&\n' span_id:311) (Token id: Id.Lit_Chars val: '\tgrep "This remote helper should implement refspec capability" error &&\n' span_id: 312 ) (Token id:Id.Lit_Chars val:'\tcompare_refs local2 HEAD server HEAD\n' span_id:313) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pulling without refspecs' span_id:320))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:324) (Token id:Id.Lit_Chars val:'\t(cd local2 &&\n' span_id:325) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:326) (Token id: Id.Lit_Chars val: '\tGIT_REMOTE_TESTGIT_REFSPEC="" git pull 2>../error) &&\n' span_id: 327 ) (Token id: Id.Lit_Chars val: '\tgrep "This remote helper should implement refspec capability" error &&\n' span_id: 328 ) (Token id:Id.Lit_Chars val:'\tcompare_refs local2 HEAD server HEAD\n' span_id:329) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pushing without refspecs' span_id:336))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:340) (Token id: Id.Lit_Chars val: '\ttest_when_finished "(cd local2 && git reset --hard origin)" &&\n' span_id: 341 ) (Token id:Id.Lit_Chars val:'\t(cd local2 &&\n' span_id:342) (Token id:Id.Lit_Chars val:'\techo content >>file &&\n' span_id:343) (Token id:Id.Lit_Chars val:'\tgit commit -a -m ten &&\n' span_id:344) (Token id:Id.Lit_Chars val:'\tGIT_REMOTE_TESTGIT_REFSPEC="" &&\n' span_id:345) (Token id:Id.Lit_Chars val:'\texport GIT_REMOTE_TESTGIT_REFSPEC &&\n' span_id:346) (Token id: Id.Lit_Chars val: '\ttest_must_fail git push 2>../error) &&\n' span_id: 347 ) (Token id: Id.Lit_Chars val: '\tgrep "remote-helper doesn.t support push; refspec needed" error\n' span_id: 348 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pulling without marks' span_id:355))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:359) (Token id:Id.Lit_Chars val:'\t(cd local2 &&\n' span_id:360) (Token id:Id.Lit_Chars val:'\tGIT_REMOTE_TESTGIT_NO_MARKS=1 git pull) &&\n' span_id:361) (Token id: Id.Lit_Chars val: '\tcompare_refs local2 HEAD server HEAD\n' span_id: 362 ) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'pushing without marks' span_id:369))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:373) (Token id: Id.Lit_Chars val: '\ttest_when_finished "(cd local2 && git reset --hard origin)" &&\n' span_id: 374 ) (Token id:Id.Lit_Chars val:'\t(cd local2 &&\n' span_id:375) (Token id:Id.Lit_Chars val:'\techo content >>file &&\n' span_id:376) (Token id:Id.Lit_Chars val:'\tgit commit -a -m twelve &&\n' span_id:377) (Token id: Id.Lit_Chars val: '\tGIT_REMOTE_TESTGIT_NO_MARKS=1 git push) &&\n' span_id: 378 ) (Token id:Id.Lit_Chars val:'\tcompare_refs local2 HEAD server HEAD\n' span_id:379) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push all with existing object' span_id:386))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:390) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:391) (Token id:Id.Lit_Chars val:'\tgit branch dup2 master &&\n' span_id:392) (Token id:Id.Lit_Chars val:'\tgit push origin --all\n' span_id:393) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:394) (Token id:Id.Lit_Chars val:'\tcompare_refs local dup2 server dup2\n' span_id:395) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push ref with existing object' span_id:402))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:406) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:407) (Token id:Id.Lit_Chars val:'\tgit branch dup master &&\n' span_id:408) (Token id:Id.Lit_Chars val:'\tgit push origin dup\n' span_id:409) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:410) (Token id:Id.Lit_Chars val:'\tcompare_refs local dup server dup\n' span_id:411) ) } ) (C {(test_expect_success)} {(GPG)} {(SQ (Token id:Id.Lit_Chars val:'push signed tag' span_id:420))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:424) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:425) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:426) (Token id: Id.Lit_Chars val: '\tgit tag -s -m signed-tag signed-tag &&\n' span_id: 427 ) (Token id:Id.Lit_Chars val:'\tgit push origin signed-tag\n' span_id:428) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:429) (Token id: Id.Lit_Chars val: '\tcompare_refs local signed-tag^{} server signed-tag^{} &&\n' span_id: 430 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail compare_refs local signed-tag server signed-tag\n' span_id: 431 ) ) } ) (C {(test_expect_success)} {(GPG)} {(SQ (Token id:Id.Lit_Chars val:'push signed tag with signed-tags capability' span_id:440))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:444) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:445) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:446) (Token id: Id.Lit_Chars val: '\tgit tag -s -m signed-tag signed-tag-2 &&\n' span_id: 447 ) (Token id: Id.Lit_Chars val: '\tGIT_REMOTE_TESTGIT_SIGNED_TAGS=1 git push origin signed-tag-2\n' span_id: 448 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:449) (Token id: Id.Lit_Chars val: '\tcompare_refs local signed-tag-2 server signed-tag-2\n' span_id: 450 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push update refs' span_id:457))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:461) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:462) (Token id:Id.Lit_Chars val:'\tgit checkout -b update master &&\n' span_id:463) (Token id:Id.Lit_Chars val:'\techo update >>file &&\n' span_id:464) (Token id:Id.Lit_Chars val:'\tgit commit -a -m update &&\n' span_id:465) (Token id:Id.Lit_Chars val:'\tgit push origin update &&\n' span_id:466) (Token id:Id.Lit_Chars val:'\tgit rev-parse --verify remotes/origin/update >expect &&\n' span_id:467) (Token id: Id.Lit_Chars val: '\tgit rev-parse --verify testgit/origin/heads/update >actual &&\n' span_id: 468 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:469) (Token id:Id.Lit_Chars val:'\t)\n' span_id:470) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push update refs disabled by no-private-update' span_id:477))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:481) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:482) (Token id:Id.Lit_Chars val:'\techo more-update >>file &&\n' span_id:483) (Token id:Id.Lit_Chars val:'\tgit commit -a -m more-update &&\n' span_id:484) (Token id: Id.Lit_Chars val: '\tgit rev-parse --verify testgit/origin/heads/update >expect &&\n' span_id: 485 ) (Token id: Id.Lit_Chars val: '\tGIT_REMOTE_TESTGIT_NO_PRIVATE_UPDATE=t git push origin update &&\n' span_id: 486 ) (Token id: Id.Lit_Chars val: '\tgit rev-parse --verify testgit/origin/heads/update >actual &&\n' span_id: 487 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:488) (Token id:Id.Lit_Chars val:'\t)\n' span_id:489) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push update refs failure' span_id:496))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:500) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:501) (Token id:Id.Lit_Chars val:'\tgit checkout update &&\n' span_id:502) (Token id:Id.Lit_Chars val:'\techo "update fail" >>file &&\n' span_id:503) (Token id:Id.Lit_Chars val:'\tgit commit -a -m "update fail" &&\n' span_id:504) (Token id: Id.Lit_Chars val: '\tgit rev-parse --verify testgit/origin/heads/update >expect &&\n' span_id: 505 ) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 env GIT_REMOTE_TESTGIT_FAILURE="non-fast forward" \\\n' span_id: 506 ) (Token id:Id.Lit_Chars val:'\t\tgit push origin update &&\n' span_id:507) (Token id: Id.Lit_Chars val: '\tgit rev-parse --verify testgit/origin/heads/update >actual &&\n' span_id: 508 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:509) (Token id:Id.Lit_Chars val:'\t)\n' span_id:510) ) } ) (command.ShFunction name: clean_mark body: (command.BraceGroup children: [ (command.Pipeline children: [ (C {(cut)} {(-f)} {(2)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:' ' span_id:531))} {(DQ ($ Id.VSub_Number '$1'))} ) (C {(git)} {(cat-file)} {(--batch-check)}) (C {(grep)} {(commit)}) (command.Simple words: [{(sort)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:559) fd: -1 arg_word: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:560) command_list: (command.CommandList children: [(C {(basename)} {(DQ ($ Id.VSub_Number '$1'))})] ) ) } ) ] ) ] negated: F ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'proper failure checks for fetching' span_id:574))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:578) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:579) (Token id: Id.Lit_Chars val: '\ttest_must_fail env GIT_REMOTE_TESTGIT_FAILURE=1 git fetch 2>error &&\n' span_id: 580 ) (Token id:Id.Lit_Chars val:'\tcat error &&\n' span_id:581) (Token id: Id.Lit_Chars val: '\tgrep -q "Error while running fast-import" error\n' span_id: 582 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:583) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'proper failure checks for pushing' span_id:590))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:594) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -rf local/git.marks local/testgit.marks" &&\n' span_id: 595 ) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:596) (Token id:Id.Lit_Chars val:'\tgit checkout -b crash master &&\n' span_id:597) (Token id:Id.Lit_Chars val:'\techo crash >>file &&\n' span_id:598) (Token id:Id.Lit_Chars val:'\tgit commit -a -m crash &&\n' span_id:599) (Token id: Id.Lit_Chars val: '\ttest_must_fail env GIT_REMOTE_TESTGIT_FAILURE=1 git push --all &&\n' span_id: 600 ) (Token id:Id.Lit_Chars val:'\tclean_mark ".git/testgit/origin/git.marks" &&\n' span_id:601) (Token id: Id.Lit_Chars val: '\tclean_mark ".git/testgit/origin/testgit.marks" &&\n' span_id: 602 ) (Token id:Id.Lit_Chars val:'\ttest_cmp git.marks testgit.marks\n' span_id:603) (Token id:Id.Lit_Chars val:'\t)\n' span_id:604) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push messages' span_id:611))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:615) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:616) (Token id:Id.Lit_Chars val:'\tgit checkout -b new_branch master &&\n' span_id:617) (Token id:Id.Lit_Chars val:'\techo new >>file &&\n' span_id:618) (Token id:Id.Lit_Chars val:'\tgit commit -a -m new &&\n' span_id:619) (Token id:Id.Lit_Chars val:'\tgit push origin new_branch &&\n' span_id:620) (Token id:Id.Lit_Chars val:'\tgit fetch origin &&\n' span_id:621) (Token id:Id.Lit_Chars val:'\techo new >>file &&\n' span_id:622) (Token id:Id.Lit_Chars val:'\tgit commit -a -m new &&\n' span_id:623) (Token id: Id.Lit_Chars val: '\tgit push origin new_branch 2> msg &&\n' span_id: 624 ) (Token id:Id.Lit_Chars val:'\t! grep "\\[new branch\\]" msg\n' span_id:625) (Token id:Id.Lit_Chars val:'\t)\n' span_id:626) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch HEAD' span_id:633))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:637) (Token id:Id.Lit_Chars val:'\t(cd server &&\n' span_id:638) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:639) (Token id:Id.Lit_Chars val:'\techo more >>file &&\n' span_id:640) (Token id:Id.Lit_Chars val:'\tgit commit -a -m more\n' span_id:641) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:642) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:643) (Token id:Id.Lit_Chars val:'\tgit fetch origin HEAD\n' span_id:644) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:645) (Token id: Id.Lit_Chars val: '\tcompare_refs server HEAD local FETCH_HEAD\n' span_id: 646 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch url' span_id:653))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:657) (Token id:Id.Lit_Chars val:'\t(cd server &&\n' span_id:658) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:659) (Token id:Id.Lit_Chars val:'\techo more >>file &&\n' span_id:660) (Token id:Id.Lit_Chars val:'\tgit commit -a -m more\n' span_id:661) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:662) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:663) (Token id: Id.Lit_Chars val: '\tgit fetch "testgit::${PWD}/../server"\n' span_id: 664 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:665) (Token id: Id.Lit_Chars val: '\tcompare_refs server HEAD local FETCH_HEAD\n' span_id: 666 ) ) } ) (C {(test_done)}) ] )