(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:'Testing multi_ack pack fetching' span_id:15))} spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.ShFunction name: add body: (command.BraceGroup children: [ (command.AndOr ops: [ Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp ] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:name) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [40] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:text) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_At '$@'))} spids: [46] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:branch) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:55) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_DollarName '$name')}) (C {(sed)} {(-e)} { (SQ (Token id: Id.Lit_Chars val: 's/^\\(.\\).*$/\\1/' span_id: 67 ) ) } ) ] negated: F ) ] ) ) } spids: [54] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:parents) op: assign_op.Equal rhs: {(DQ )} spids: [74] ) ] ) (C {(shift)}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:87) cond: [ (command.Sentence child: (C {(test)} {($ Id.VSub_Number '$1')}) terminator: (Token id:Id.Op_Semi val:';' span_id:92) ) ] body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:parents) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$parents') (' -p ') ($ Id.VSub_Number '$1') ) } spids: [97] ) ] ) (C {(shift)}) ] ) ] ) ) (command.Simple words: [{(echo)} {(DQ ($ Id.VSub_DollarName '$text'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:122) fd: -1 arg_word: {(test.txt)} ) ] ) (C {(git)} {(update-index)} {(--add)} {(test.txt)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tree) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:141) command_list: (command.CommandList children:[(C {(git)} {(write-tree)})]) ) } spids: [140] ) ] ) (C {(test_tick)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:commit) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:160) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(DQ ($ Id.VSub_DollarName '$text'))}) (C {(git)} {(commit-tree)} {($ Id.VSub_DollarName '$tree')} {($ Id.VSub_DollarName '$parents')} ) ] negated: F ) ] ) ) } spids: [159] ) ] ) (C {(eval)} { (DQ ($ Id.VSub_DollarName '$name') ('=') ($ Id.VSub_DollarName '$commit') ('; export ') ($ Id.VSub_DollarName '$name') ) } ) (command.Simple words: [{(echo)} {($ Id.VSub_DollarName '$commit')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:198) fd: -1 arg_word: {(.git/refs/heads/) ($ Id.VSub_DollarName '$branch')} ) ] ) (C {(eval)} {(${ Id.VSub_Name branch) (Id.Lit_VarLike 'TIP=') ($ Id.VSub_DollarName '$commit')} ) ] ) ] ) ) (command.ShFunction name: pull_to_client body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:number) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [225] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:heads) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [231] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:count) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [237] ) ] ) (C {(test_expect_success)} {(DQ ($ Id.VSub_DollarName '$number') (' pull'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:251) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:252) (Token id:Id.Lit_Chars val:'\t\t\tcd client &&\n' span_id:253) (Token id: Id.Lit_Chars val: '\t\t\tgit fetch-pack -k -v .. $heads &&\n' span_id: 254 ) (Token id:Id.Lit_Chars val:'\n' span_id:255) (Token id: Id.Lit_Chars val: '\t\t\tcase "$heads" in\n' span_id: 256 ) (Token id:Id.Lit_Chars val:'\t\t\t *A*)\n' span_id:257) (Token id: Id.Lit_Chars val: '\t\t\t\t echo $ATIP > .git/refs/heads/A;;\n' span_id: 258 ) (Token id:Id.Lit_Chars val:'\t\t\tesac &&\n' span_id:259) (Token id: Id.Lit_Chars val: '\t\t\tcase "$heads" in *B*)\n' span_id: 260 ) (Token id:Id.Lit_Chars val:'\t\t\t echo $BTIP > .git/refs/heads/B;;\n' span_id:261) (Token id:Id.Lit_Chars val:'\t\t\tesac &&\n' span_id:262) (Token id:Id.Lit_Chars val:'\t\t\tgit symbolic-ref HEAD refs/heads/$(echo $heads \\\n' span_id:263) (Token id: Id.Lit_Chars val: '\t\t\t\t| sed -e "s/^\\(.\\).*$/\\1/") &&\n' span_id: 264 ) (Token id:Id.Lit_Chars val:'\n' span_id:265) (Token id: Id.Lit_Chars val: '\t\t\tgit fsck --full &&\n' span_id: 266 ) (Token id:Id.Lit_Chars val:'\n' span_id:267) (Token id: Id.Lit_Chars val: '\t\t\tmv .git/objects/pack/pack-* . &&\n' span_id: 268 ) (Token id:Id.Lit_Chars val:'\t\t\tp=$(ls -1 pack-*.pack) &&\n' span_id:269) (Token id: Id.Lit_Chars val: '\t\t\tgit unpack-objects <$p &&\n' span_id: 270 ) (Token id:Id.Lit_Chars val:'\t\t\tgit fsck --full &&\n' span_id:271) (Token id:Id.Lit_Chars val:'\n' span_id:272) (Token id:Id.Lit_Chars val:'\t\t\tidx=$(echo pack-*.idx) &&\n' span_id:273) (Token id: Id.Lit_Chars val: '\t\t\tpack_count=$(git show-index <$idx | wc -l) &&\n' span_id: 274 ) (Token id:Id.Lit_Chars val:'\t\t\ttest $pack_count = $count &&\n' span_id:275) (Token id: Id.Lit_Chars val: '\t\t\trm -f pack-*\n' span_id: 276 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:277) (Token id:Id.Lit_Chars val:'\t' span_id:278) ) } ) ] ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:305))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:309) (Token id:Id.Lit_Chars val:'\tmkdir client &&\n' span_id:310) (Token id:Id.Lit_Chars val:'\t(\n' span_id:311) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:312) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:313) (Token id:Id.Lit_Chars val:'\t\tgit config transfer.unpacklimit 0\n' span_id:314) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:315) (Token id:Id.Lit_Chars val:'\tadd A1 &&\n' span_id:316) (Token id:Id.Lit_Chars val:'\tprev=1 &&\n' span_id:317) (Token id:Id.Lit_Chars val:'\tcur=2 &&\n' span_id:318) (Token id:Id.Lit_Chars val:'\twhile [ $cur -le 10 ]; do\n' span_id:319) (Token id: Id.Lit_Chars val: '\t\tadd A$cur $(eval echo \\$A$prev) &&\n' span_id: 320 ) (Token id:Id.Lit_Chars val:'\t\tprev=$cur &&\n' span_id:321) (Token id:Id.Lit_Chars val:'\t\tcur=$(($cur+1))\n' span_id:322) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:323) (Token id:Id.Lit_Chars val:'\tadd B1 $A1 &&\n' span_id:324) (Token id:Id.Lit_Chars val:'\techo $ATIP > .git/refs/heads/A &&\n' span_id:325) (Token id:Id.Lit_Chars val:'\techo $BTIP > .git/refs/heads/B &&\n' span_id:326) (Token id:Id.Lit_Chars val:'\tgit symbolic-ref HEAD refs/heads/B\n' span_id:327) ) } ) (C {(pull_to_client)} {(1st)} {(DQ ('refs/heads/B refs/heads/A'))} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: (arith_expr.ArithWord w:{(Id.Lit_Digits 11)}) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 3)}) ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'post 1st pull setup' span_id:350))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:354) (Token id:Id.Lit_Chars val:'\tadd A11 $A10 &&\n' span_id:355) (Token id:Id.Lit_Chars val:'\tprev=1 &&\n' span_id:356) (Token id:Id.Lit_Chars val:'\tcur=2 &&\n' span_id:357) (Token id:Id.Lit_Chars val:'\twhile [ $cur -le 65 ]; do\n' span_id:358) (Token id: Id.Lit_Chars val: '\t\tadd B$cur $(eval echo \\$B$prev) &&\n' span_id: 359 ) (Token id:Id.Lit_Chars val:'\t\tprev=$cur &&\n' span_id:360) (Token id:Id.Lit_Chars val:'\t\tcur=$(($cur+1))\n' span_id:361) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:362) ) } ) (C {(pull_to_client)} {(2nd)} {(DQ (refs/heads/B))} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: (arith_expr.ArithWord w:{(Id.Lit_Digits 64)}) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 3)}) ) ) } ) (C {(pull_to_client)} {(3rd)} {(DQ (refs/heads/A))} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 3)}) ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'single branch clone' span_id:401))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:405) (Token id: Id.Lit_Chars val: '\tgit clone --single-branch "file://$(pwd)/." singlebranch\n' span_id: 406 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'single branch object count' span_id:413))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:417) (Token id: Id.Lit_Chars val: '\tGIT_DIR=singlebranch/.git git count-objects -v |\n' span_id: 418 ) (Token id:Id.Lit_Chars val:'\t\tgrep "^in-pack:" > count.singlebranch &&\n' span_id:419) (Token id:Id.Lit_Chars val:'\techo "in-pack: 198" >expected &&\n' span_id:420) (Token id:Id.Lit_Chars val:'\ttest_cmp expected count.singlebranch\n' span_id:421) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'single given branch clone' span_id:428))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:432) (Token id: Id.Lit_Chars val: '\tgit clone --single-branch --branch A "file://$(pwd)/." branch-a &&\n' span_id: 433 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git --git-dir=branch-a/.git rev-parse origin/B\n' span_id: 434 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow depth 1' span_id:441))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:445) (Token id: Id.Lit_Chars val: '\tgit clone --no-single-branch --depth 1 "file://$(pwd)/." shallow0 &&\n' span_id: 446 ) (Token id: Id.Lit_Chars val: '\ttest "$(git --git-dir=shallow0/.git rev-list --count HEAD)" = 1\n' span_id: 447 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow depth 1 with fsck' span_id:454))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:458) (Token id: Id.Lit_Chars val: '\tgit config --global fetch.fsckobjects true &&\n' span_id: 459 ) (Token id: Id.Lit_Chars val: '\tgit clone --no-single-branch --depth 1 "file://$(pwd)/." shallow0fsck &&\n' span_id: 460 ) (Token id: Id.Lit_Chars val: '\ttest "$(git --git-dir=shallow0fsck/.git rev-list --count HEAD)" = 1 &&\n' span_id: 461 ) (Token id:Id.Lit_Chars val:'\tgit config --global --unset fetch.fsckobjects\n' span_id:462) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow' span_id:469))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:473) (Token id: Id.Lit_Chars val: '\tgit clone --no-single-branch --depth 2 "file://$(pwd)/." shallow\n' span_id: 474 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow depth count' span_id:481))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:485) (Token id: Id.Lit_Chars val: '\ttest "$(git --git-dir=shallow/.git rev-list --count HEAD)" = 2\n' span_id: 486 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count' span_id:493))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:497) (Token id:Id.Lit_Chars val:'\t(\n' span_id:498) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:499) (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:500) (Token id:Id.Lit_Chars val:'\t) > count.shallow &&\n' span_id:501) (Token id:Id.Lit_Chars val:'\tgrep "^in-pack: 12" count.shallow\n' span_id:502) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count (part 2)' span_id:509))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:513) (Token id: Id.Lit_Chars val: '\tsed -e "/^in-pack:/d" -e "/^packs:/d" -e "/^size-pack:/d" \\\n' span_id: 514 ) (Token id:Id.Lit_Chars val:'\t -e "/: 0$/d" count.shallow > count_output &&\n' span_id:515) (Token id:Id.Lit_Chars val:'\t! test -s count_output\n' span_id:516) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fsck in shallow repo' span_id:523))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:527) (Token id:Id.Lit_Chars val:'\t(\n' span_id:528) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:529) (Token id:Id.Lit_Chars val:'\t\tgit fsck --full\n' span_id:530) (Token id:Id.Lit_Chars val:'\t)\n' span_id:531) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'simple fetch in shallow repo' span_id:538))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:542) (Token id:Id.Lit_Chars val:'\t(\n' span_id:543) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:544) (Token id:Id.Lit_Chars val:'\t\tgit fetch\n' span_id:545) (Token id:Id.Lit_Chars val:'\t)\n' span_id:546) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no changes expected' span_id:553))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:557) (Token id:Id.Lit_Chars val:'\t(\n' span_id:558) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:559) (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:560) (Token id:Id.Lit_Chars val:'\t) > count.shallow.2 &&\n' span_id:561) (Token id:Id.Lit_Chars val:'\tcmp count.shallow count.shallow.2\n' span_id:562) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch same depth in shallow repo' span_id:569))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:573) (Token id:Id.Lit_Chars val:'\t(\n' span_id:574) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:575) (Token id:Id.Lit_Chars val:'\t\tgit fetch --depth=2\n' span_id:576) (Token id:Id.Lit_Chars val:'\t)\n' span_id:577) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no changes expected' span_id:584))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:588) (Token id:Id.Lit_Chars val:'\t(\n' span_id:589) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:590) (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:591) (Token id:Id.Lit_Chars val:'\t) > count.shallow.3 &&\n' span_id:592) (Token id:Id.Lit_Chars val:'\tcmp count.shallow count.shallow.3\n' span_id:593) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add two more' span_id:600))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:604) (Token id:Id.Lit_Chars val:'\tadd B66 $B65 &&\n' span_id:605) (Token id:Id.Lit_Chars val:'\tadd B67 $B66\n' span_id:606) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pull in shallow repo' span_id:613))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:617) (Token id:Id.Lit_Chars val:'\t(\n' span_id:618) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:619) (Token id:Id.Lit_Chars val:'\t\tgit pull .. B\n' span_id:620) (Token id:Id.Lit_Chars val:'\t)\n' span_id:621) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count' span_id:628))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:632) (Token id:Id.Lit_Chars val:'\t(\n' span_id:633) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:634) (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:635) (Token id:Id.Lit_Chars val:'\t) > count.shallow &&\n' span_id:636) (Token id:Id.Lit_Chars val:'\tgrep "^count: 6" count.shallow\n' span_id:637) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add two more (part 2)' span_id:644))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:648) (Token id:Id.Lit_Chars val:'\tadd B68 $B67 &&\n' span_id:649) (Token id:Id.Lit_Chars val:'\tadd B69 $B68\n' span_id:650) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'deepening pull in shallow repo' span_id:657))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:661) (Token id:Id.Lit_Chars val:'\t(\n' span_id:662) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:663) (Token id:Id.Lit_Chars val:'\t\tgit pull --depth 4 .. B\n' span_id:664) (Token id:Id.Lit_Chars val:'\t)\n' span_id:665) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count' span_id:672))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:676) (Token id:Id.Lit_Chars val:'\t(\n' span_id:677) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:678) (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:679) (Token id:Id.Lit_Chars val:'\t) > count.shallow &&\n' span_id:680) (Token id:Id.Lit_Chars val:'\tgrep "^count: 12" count.shallow\n' span_id:681) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'deepening fetch in shallow repo' span_id:688))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:692) (Token id:Id.Lit_Chars val:'\t(\n' span_id:693) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:694) (Token id:Id.Lit_Chars val:'\t\tgit fetch --depth 4 .. A:A\n' span_id:695) (Token id:Id.Lit_Chars val:'\t)\n' span_id:696) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count' span_id:703))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:707) (Token id:Id.Lit_Chars val:'\t(\n' span_id:708) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:709) (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:710) (Token id:Id.Lit_Chars val:'\t) > count.shallow &&\n' span_id:711) (Token id:Id.Lit_Chars val:'\tgrep "^count: 18" count.shallow\n' span_id:712) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pull in shallow repo with missing merge base' span_id:719))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:723) (Token id:Id.Lit_Chars val:'\t(\n' span_id:724) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:725) (Token id:Id.Lit_Chars val:'\t\tgit fetch --depth 4 .. A\n' span_id:726) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git merge --allow-unrelated-histories FETCH_HEAD\n' span_id: 727 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:728) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'additional simple shallow deepenings' span_id:735))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:739) (Token id:Id.Lit_Chars val:'\t(\n' span_id:740) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:741) (Token id:Id.Lit_Chars val:'\t\tgit fetch --depth=8 &&\n' span_id:742) (Token id:Id.Lit_Chars val:'\t\tgit fetch --depth=10 &&\n' span_id:743) (Token id:Id.Lit_Chars val:'\t\tgit fetch --depth=11\n' span_id:744) (Token id:Id.Lit_Chars val:'\t)\n' span_id:745) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow depth count' span_id:752))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:756) (Token id: Id.Lit_Chars val: '\ttest "$(git --git-dir=shallow/.git rev-list --count HEAD)" = 11\n' span_id: 757 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count' span_id:764))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:768) (Token id:Id.Lit_Chars val:'\t(\n' span_id:769) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:770) (Token id:Id.Lit_Chars val:'\t\tgit prune &&\n' span_id:771) (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:772) (Token id:Id.Lit_Chars val:'\t) > count.shallow &&\n' span_id:773) (Token id:Id.Lit_Chars val:'\tgrep "^count: 54" count.shallow\n' span_id:774) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch --no-shallow on full repo' span_id:781))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:785) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fetch --noshallow\n' span_id: 786 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch --depth --no-shallow' span_id:793))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:797) (Token id:Id.Lit_Chars val:'\t(\n' span_id:798) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:799) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git fetch --depth=1 --noshallow\n' span_id: 800 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:801) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'turn shallow to complete repository' span_id:808))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:812) (Token id:Id.Lit_Chars val:'\t(\n' span_id:813) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:814) (Token id:Id.Lit_Chars val:'\t\tgit fetch --unshallow &&\n' span_id:815) (Token id:Id.Lit_Chars val:'\t\t! test -f .git/shallow &&\n' span_id:816) (Token id:Id.Lit_Chars val:'\t\tgit fsck --full\n' span_id:817) (Token id:Id.Lit_Chars val:'\t)\n' span_id:818) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow without --no-single-branch' span_id:825))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:829) (Token id: Id.Lit_Chars val: '\tgit clone --depth 1 "file://$(pwd)/." shallow2\n' span_id: 830 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count' span_id:837))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:841) (Token id:Id.Lit_Chars val:'\t(\n' span_id:842) (Token id:Id.Lit_Chars val:'\t\tcd shallow2 &&\n' span_id:843) (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:844) (Token id:Id.Lit_Chars val:'\t) > count.shallow2 &&\n' span_id:845) (Token id:Id.Lit_Chars val:'\tgrep "^in-pack: 3" count.shallow2\n' span_id:846) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow with --branch' span_id:853))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:857) (Token id: Id.Lit_Chars val: '\tgit clone --depth 1 --branch A "file://$(pwd)/." shallow3\n' span_id: 858 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count' span_id:865))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:869) (Token id: Id.Lit_Chars val: '\techo "in-pack: 3" > count3.expected &&\n' span_id: 870 ) (Token id:Id.Lit_Chars val:'\tGIT_DIR=shallow3/.git git count-objects -v |\n' span_id:871) (Token id: Id.Lit_Chars val: '\t\tgrep "^in-pack" > count3.actual &&\n' span_id: 872 ) (Token id:Id.Lit_Chars val:'\ttest_cmp count3.expected count3.actual\n' span_id:873) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow with detached HEAD' span_id:880))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:884) (Token id:Id.Lit_Chars val:'\tgit checkout HEAD^ &&\n' span_id:885) (Token id:Id.Lit_Chars val:'\tgit clone --depth 1 "file://$(pwd)/." shallow5 &&\n' span_id:886) (Token id:Id.Lit_Chars val:'\tgit checkout - &&\n' span_id:887) (Token id:Id.Lit_Chars val:'\tGIT_DIR=shallow5/.git git rev-parse HEAD >actual &&\n' span_id:888) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD^ >expected &&\n' span_id:889) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:890) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'shallow clone pulling tags' span_id:897))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:901) (Token id:Id.Lit_Chars val:'\tgit tag -a -m A TAGA1 A &&\n' span_id:902) (Token id:Id.Lit_Chars val:'\tgit tag -a -m B TAGB1 B &&\n' span_id:903) (Token id:Id.Lit_Chars val:'\tgit tag TAGA2 A &&\n' span_id:904) (Token id:Id.Lit_Chars val:'\tgit tag TAGB2 B &&\n' span_id:905) (Token id: Id.Lit_Chars val: '\tgit clone --depth 1 "file://$(pwd)/." shallow6 &&\n' span_id: 906 ) (Token id:Id.Lit_Chars val:'\n' span_id:907) (Token id:Id.Lit_Chars val:'\tcat >taglist.expected <<\\EOF &&\n' span_id:908) (Token id:Id.Lit_Chars val:'TAGB1\n' span_id:909) (Token id:Id.Lit_Chars val:'TAGB2\n' span_id:910) (Token id:Id.Lit_Chars val:'EOF\n' span_id:911) (Token id:Id.Lit_Chars val:'\tGIT_DIR=shallow6/.git git tag -l >taglist.actual &&\n' span_id:912) (Token id: Id.Lit_Chars val: '\ttest_cmp taglist.expected taglist.actual &&\n' span_id: 913 ) (Token id:Id.Lit_Chars val:'\n' span_id:914) (Token id: Id.Lit_Chars val: '\techo "in-pack: 4" > count6.expected &&\n' span_id: 915 ) (Token id:Id.Lit_Chars val:'\tGIT_DIR=shallow6/.git git count-objects -v |\n' span_id:916) (Token id: Id.Lit_Chars val: '\t\tgrep "^in-pack" > count6.actual &&\n' span_id: 917 ) (Token id:Id.Lit_Chars val:'\ttest_cmp count6.expected count6.actual\n' span_id:918) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'shallow cloning single tag' span_id:925))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:929) (Token id: Id.Lit_Chars val: '\tgit clone --depth 1 --branch=TAGB1 "file://$(pwd)/." shallow7 &&\n' span_id: 930 ) (Token id:Id.Lit_Chars val:'\tcat >taglist.expected <<\\EOF &&\n' span_id:931) (Token id:Id.Lit_Chars val:'TAGB1\n' span_id:932) (Token id:Id.Lit_Chars val:'TAGB2\n' span_id:933) (Token id:Id.Lit_Chars val:'EOF\n' span_id:934) (Token id: Id.Lit_Chars val: '\tGIT_DIR=shallow7/.git git tag -l >taglist.actual &&\n' span_id: 935 ) (Token id:Id.Lit_Chars val:'\ttest_cmp taglist.expected taglist.actual &&\n' span_id:936) (Token id:Id.Lit_Chars val:'\n' span_id:937) (Token id:Id.Lit_Chars val:'\techo "in-pack: 4" > count7.expected &&\n' span_id:938) (Token id: Id.Lit_Chars val: '\tGIT_DIR=shallow7/.git git count-objects -v |\n' span_id: 939 ) (Token id:Id.Lit_Chars val:'\t\tgrep "^in-pack" > count7.actual &&\n' span_id:940) (Token id: Id.Lit_Chars val: '\ttest_cmp count7.expected count7.actual\n' span_id: 941 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow with packed refs' span_id:948))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:952) (Token id:Id.Lit_Chars val:'\tgit pack-refs --all &&\n' span_id:953) (Token id: Id.Lit_Chars val: '\tgit clone --depth 1 --branch A "file://$(pwd)/." shallow8 &&\n' span_id: 954 ) (Token id:Id.Lit_Chars val:'\techo "in-pack: 4" > count8.expected &&\n' span_id:955) (Token id: Id.Lit_Chars val: '\tGIT_DIR=shallow8/.git git count-objects -v |\n' span_id: 956 ) (Token id:Id.Lit_Chars val:'\t\tgrep "^in-pack" > count8.actual &&\n' span_id:957) (Token id: Id.Lit_Chars val: '\ttest_cmp count8.expected count8.actual\n' span_id: 958 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'fetch in shallow repo unreachable shallow objects' span_id: 965 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:969) (Token id:Id.Lit_Chars val:'\t(\n' span_id:970) (Token id: Id.Lit_Chars val: '\t\tgit clone --bare --branch B --single-branch "file://$(pwd)/." no-reflog &&\n' span_id: 971 ) (Token id: Id.Lit_Chars val: '\t\tgit clone --depth 1 "file://$(pwd)/no-reflog" shallow9 &&\n' span_id: 972 ) (Token id:Id.Lit_Chars val:'\t\tcd no-reflog &&\n' span_id:973) (Token id:Id.Lit_Chars val:'\t\tgit tag -d TAGB1 TAGB2 &&\n' span_id:974) (Token id:Id.Lit_Chars val:'\t\tgit update-ref refs/heads/B B~~ &&\n' span_id:975) (Token id:Id.Lit_Chars val:'\t\tgit gc --prune=now &&\n' span_id:976) (Token id:Id.Lit_Chars val:'\t\tcd ../shallow9 &&\n' span_id:977) (Token id:Id.Lit_Chars val:'\t\tgit fetch origin &&\n' span_id:978) (Token id:Id.Lit_Chars val:'\t\tgit fsck --no-dangling\n' span_id:979) (Token id:Id.Lit_Chars val:'\t)\n' span_id:980) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch creating new shallow root' span_id:986))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:990) (Token id:Id.Lit_Chars val:'\t(\n' span_id:991) (Token id:Id.Lit_Chars val:'\t\tgit clone "file://$(pwd)/." shallow10 &&\n' span_id:992) (Token id: Id.Lit_Chars val: '\t\tgit commit --allow-empty -m empty &&\n' span_id: 993 ) (Token id:Id.Lit_Chars val:'\t\tcd shallow10 &&\n' span_id:994) (Token id: Id.Lit_Chars val: '\t\tgit fetch --depth=1 --progress 2>actual &&\n' span_id: 995 ) (Token id:Id.Lit_Chars val:'\t\t# This should fetch only the empty commit, no tree or\n' span_id:996) (Token id:Id.Lit_Chars val:'\t\t# blob objects\n' span_id:997) (Token id:Id.Lit_Chars val:'\t\tgrep "remote: Total 1" actual\n' span_id:998) (Token id:Id.Lit_Chars val:'\t)\n' span_id:999) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup tests for the --stdin parameter' span_id:1006))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1010) (Token id:Id.Lit_Chars val:'\tfor head in C D E F\n' span_id:1011) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:1012) (Token id:Id.Lit_Chars val:'\t\tadd $head\n' span_id:1013) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:1014) (Token id:Id.Lit_Chars val:'\tfor head in A B C D E F\n' span_id:1015) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:1016) (Token id:Id.Lit_Chars val:'\t\tgit tag $head $head\n' span_id:1017) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:1018) (Token id:Id.Lit_Chars val:'\tcat >input <<-\\EOF &&\n' span_id:1019) (Token id:Id.Lit_Chars val:'\trefs/heads/C\n' span_id:1020) (Token id:Id.Lit_Chars val:'\trefs/heads/A\n' span_id:1021) (Token id:Id.Lit_Chars val:'\trefs/heads/D\n' span_id:1022) (Token id:Id.Lit_Chars val:'\trefs/tags/C\n' span_id:1023) (Token id:Id.Lit_Chars val:'\trefs/heads/B\n' span_id:1024) (Token id:Id.Lit_Chars val:'\trefs/tags/A\n' span_id:1025) (Token id:Id.Lit_Chars val:'\trefs/heads/E\n' span_id:1026) (Token id:Id.Lit_Chars val:'\trefs/tags/B\n' span_id:1027) (Token id:Id.Lit_Chars val:'\trefs/tags/E\n' span_id:1028) (Token id:Id.Lit_Chars val:'\trefs/tags/D\n' span_id:1029) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1030) (Token id:Id.Lit_Chars val:'\tsort <input >expect &&\n' span_id:1031) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1032) (Token id:Id.Lit_Chars val:'\t\techo refs/heads/E &&\n' span_id:1033) (Token id:Id.Lit_Chars val:'\t\techo refs/tags/E &&\n' span_id:1034) (Token id:Id.Lit_Chars val:'\t\tcat input\n' span_id:1035) (Token id:Id.Lit_Chars val:'\t) >input.dup\n' span_id:1036) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch refs from cmdline' span_id:1043))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1047) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1048) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1049) (Token id: Id.Lit_Chars val: '\t\tgit fetch-pack --no-progress .. $(cat ../input)\n' span_id: 1050 ) (Token id:Id.Lit_Chars val:'\t) >output &&\n' span_id:1051) (Token id: Id.Lit_Chars val: '\tcut -d " " -f 2 <output | sort >actual &&\n' span_id: 1052 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1053) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch refs from stdin' span_id:1060))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1064) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1065) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1066) (Token id: Id.Lit_Chars val: '\t\tgit fetch-pack --stdin --no-progress .. <../input\n' span_id: 1067 ) (Token id:Id.Lit_Chars val:'\t) >output &&\n' span_id:1068) (Token id: Id.Lit_Chars val: '\tcut -d " " -f 2 <output | sort >actual &&\n' span_id: 1069 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1070) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch mixed refs from cmdline and stdin' span_id:1077))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1081) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1082) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1083) (Token id:Id.Lit_Chars val:'\t\ttail -n +5 ../input |\n' span_id:1084) (Token id: Id.Lit_Chars val: '\t\tgit fetch-pack --stdin --no-progress .. $(head -n 4 ../input)\n' span_id: 1085 ) (Token id:Id.Lit_Chars val:'\t) >output &&\n' span_id:1086) (Token id: Id.Lit_Chars val: '\tcut -d " " -f 2 <output | sort >actual &&\n' span_id: 1087 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1088) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test duplicate refs from stdin' span_id:1095))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1099) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1100) (Token id:Id.Lit_Chars val:'\tcd client &&\n' span_id:1101) (Token id: Id.Lit_Chars val: '\tgit fetch-pack --stdin --no-progress .. <../input.dup\n' span_id: 1102 ) (Token id:Id.Lit_Chars val:'\t) >output &&\n' span_id:1103) (Token id: Id.Lit_Chars val: '\tcut -d " " -f 2 <output | sort >actual &&\n' span_id: 1104 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1105) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up tests of missing reference' span_id:1112))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1116) (Token id:Id.Lit_Chars val:'\tcat >expect-error <<-\\EOF\n' span_id:1117) (Token id:Id.Lit_Chars val:'\terror: no such remote ref refs/heads/xyzzy\n' span_id:1118) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1119) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test lonely missing ref' span_id:1126))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1130) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1131) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1132) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git fetch-pack --no-progress .. refs/heads/xyzzy\n' span_id: 1133 ) (Token id:Id.Lit_Chars val:'\t) >/dev/null 2>error-m &&\n' span_id:1134) (Token id:Id.Lit_Chars val:'\ttest_cmp expect-error error-m\n' span_id:1135) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test missing ref after existing' span_id:1142))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1146) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1147) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1148) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git fetch-pack --no-progress .. refs/heads/A refs/heads/xyzzy\n' span_id: 1149 ) (Token id:Id.Lit_Chars val:'\t) >/dev/null 2>error-em &&\n' span_id:1150) (Token id:Id.Lit_Chars val:'\ttest_cmp expect-error error-em\n' span_id:1151) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test missing ref before existing' span_id:1158))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1162) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1163) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1164) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git fetch-pack --no-progress .. refs/heads/xyzzy refs/heads/A\n' span_id: 1165 ) (Token id:Id.Lit_Chars val:'\t) >/dev/null 2>error-me &&\n' span_id:1166) (Token id:Id.Lit_Chars val:'\ttest_cmp expect-error error-me\n' span_id:1167) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test --all, --depth, and explicit head' span_id:1174))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1178) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1179) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1180) (Token id: Id.Lit_Chars val: '\t\tgit fetch-pack --no-progress --all --depth=1 .. refs/heads/A\n' span_id: 1181 ) (Token id:Id.Lit_Chars val:'\t) >out-adh 2>error-adh\n' span_id:1182) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test --all, --depth, and explicit tag' span_id:1189))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1193) (Token id:Id.Lit_Chars val:'\tgit tag OLDTAG refs/heads/B~5 &&\n' span_id:1194) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1195) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1196) (Token id: Id.Lit_Chars val: '\t\tgit fetch-pack --no-progress --all --depth=1 .. refs/tags/OLDTAG\n' span_id: 1197 ) (Token id:Id.Lit_Chars val:'\t) >out-adt 2>error-adt\n' span_id:1198) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'shallow fetch with tags does not break the repository' span_id: 1205 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1209) (Token id:Id.Lit_Chars val:'\tmkdir repo1 &&\n' span_id:1210) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1211) (Token id:Id.Lit_Chars val:'\t\tcd repo1 &&\n' span_id:1212) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:1213) (Token id:Id.Lit_Chars val:'\t\ttest_commit 1 &&\n' span_id:1214) (Token id:Id.Lit_Chars val:'\t\ttest_commit 2 &&\n' span_id:1215) (Token id:Id.Lit_Chars val:'\t\ttest_commit 3 &&\n' span_id:1216) (Token id:Id.Lit_Chars val:'\t\tmkdir repo2 &&\n' span_id:1217) (Token id:Id.Lit_Chars val:'\t\tcd repo2 &&\n' span_id:1218) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:1219) (Token id: Id.Lit_Chars val: '\t\tgit fetch --depth=2 ../.git master:branch &&\n' span_id: 1220 ) (Token id:Id.Lit_Chars val:'\t\tgit fsck\n' span_id:1221) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1222) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch-pack can fetch a raw sha1' span_id:1229))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1233) (Token id:Id.Lit_Chars val:'\tgit init hidden &&\n' span_id:1234) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1235) (Token id:Id.Lit_Chars val:'\t\tcd hidden &&\n' span_id:1236) (Token id:Id.Lit_Chars val:'\t\ttest_commit 1 &&\n' span_id:1237) (Token id:Id.Lit_Chars val:'\t\ttest_commit 2 &&\n' span_id:1238) (Token id:Id.Lit_Chars val:'\t\tgit update-ref refs/hidden/one HEAD^ &&\n' span_id:1239) (Token id: Id.Lit_Chars val: '\t\tgit config transfer.hiderefs refs/hidden &&\n' span_id: 1240 ) (Token id:Id.Lit_Chars val:'\t\tgit config uploadpack.allowtipsha1inwant true\n' span_id:1241) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1242) (Token id: Id.Lit_Chars val: '\tgit fetch-pack hidden $(git -C hidden rev-parse refs/hidden/one)\n' span_id: 1243 ) ) } ) (command.ShFunction name: check_prot_path body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1257) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:1260) fd: -1 here_begin: {(EOF)} here_end_span_id: 1275 stdin_parts: [ ('Diag: url=') ($ Id.VSub_Number '$1') ('\n') ('Diag: protocol=') ($ Id.VSub_Number '$2') ('\n') ('Diag: path=') ($ Id.VSub_Number '$3') ('\n') ] ) ] ) (command.Pipeline children: [ (C {(git)} {(fetch-pack)} {(--diag-url)} {(DQ ($ Id.VSub_Number '$1'))}) (command.Simple words: [{(grep)} {(-v)} {(Id.Lit_VarLike 'hostandport=')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1295) fd: -1 arg_word: {(actual)} ) ] ) ] negated: F ) (C {(test_cmp)} {(expected)} {(actual)}) ] ) ] ) ) (command.ShFunction name: check_prot_host_port_path body: (command.BraceGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_Number '$2'))} arms: [ (case_arm pat_list: [{(Id.Lit_Star '*') (ssh) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pp) op: assign_op.Equal rhs: {(ssh)} spids: [1333] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:uah) op: assign_op.Equal rhs: {(userandhost)} spids: [1337] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ehost) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1342) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_Number '$3')}) (C {(tr)} {(-d)} {(DQ ('[]'))}) ] negated: F ) ] ) ) } spids: [1341] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:diagport) op: assign_op.Equal rhs: {(DQ ('Diag: port=') ($ Id.VSub_Number '$4'))} spids: [1359] ) ] ) ] spids: [1327 1330 1366 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pp) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$p')} spids: [1373] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:uah) op: assign_op.Equal rhs: {(hostandport)} spids: [1377] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ehost) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1382) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_Number '$3') ($ Id.VSub_Number '$4')}) (C {(sed)} {(-e)} {(DQ (s/22) (Id.Lit_Other '$') ('/:22/'))} {(-e)} {(DQ (s/NONE//))} ) ] negated: F ) ] ) ) } spids: [1381] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:diagport) op: assign_op.Equal rhs: {(DQ )} spids: [1408] ) ] ) ] spids: [1369 1370 1413 -1] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1421) fd: -1 arg_word: {(exp)} ) (redir.HereDoc op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:1424) fd: -1 here_begin: {(EOF)} here_end_span_id: 1446 stdin_parts: [ ('Diag: url=') ($ Id.VSub_Number '$1') ('\n') ('Diag: protocol=') ($ Id.VSub_DollarName '$pp') ('\n') ('Diag: ') ($ Id.VSub_DollarName '$uah') ('=') ($ Id.VSub_DollarName '$ehost') ('\n') ($ Id.VSub_DollarName '$diagport') ('\n') ('Diag: path=') ($ Id.VSub_Number '$5') ('\n') ] ) ] ) (command.Simple words: [{(grep)} {(-v)} {(DQ ('^') (Id.Lit_Other '$'))} {(exp)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1459) fd: -1 arg_word: {(expected)} ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{(git)} {(fetch-pack)} {(--diag-url)} {(DQ ($ Id.VSub_Number '$1'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1473) fd: -1 arg_word: {(actual)} ) ] ) (C {(test_cmp)} {(expected)} {(actual)}) ] ) ] ) ) (command.ForEach iter_name: r iter_words: [{(repo)} {(re) (Id.Lit_Other ':') (po)} {(re/po)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: p iter_words: [{(DQ ('ssh+git'))} {(DQ ('git+ssh'))} {(git)} {(ssh)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: h iter_words: [ {(host)} {(user) (Id.Lit_Splice '@host')} {(user) (Id.Lit_Other '@') (Id.Lit_LBracket '[') (Id.Lit_Other ':') (Id.Lit_Other ':') (1) (Id.Lit_RBracket ']') } {(user) (Id.Lit_Other '@') (Id.Lit_Other ':') (Id.Lit_Other ':') (1)} ] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: c iter_words: [{(DQ )} {(Id.Lit_Other ':')}] do_arg_iter: F body: (command.DoGroup children: [ (C {(test_expect_success)} { (DQ ('fetch-pack --diag-url ') ($ Id.VSub_DollarName '$p') ('://') ($ Id.VSub_DollarName '$h') ($ Id.VSub_DollarName '$c') (/) ($ Id.VSub_DollarName '$r') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1588) (Token id: Id.Lit_Chars val: '\t\t\t\t\tcheck_prot_host_port_path $p://$h/$r $p "$h" NONE "/$r"\n' span_id: 1589 ) (Token id:Id.Lit_Chars val:'\t\t\t\t' span_id:1590) ) } ) (C {(test_expect_success)} { (DQ ('fetch-pack --diag-url ') ($ Id.VSub_DollarName '$p') ('://') ($ Id.VSub_DollarName '$h') ($ Id.VSub_DollarName '$c') ('/~') ($ Id.VSub_DollarName '$r') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1611) (Token id: Id.Lit_Chars val: '\t\t\t\t\tcheck_prot_host_port_path $p://$h/~$r $p "$h" NONE "~$r"\n' span_id: 1612 ) (Token id:Id.Lit_Chars val:'\t\t\t\t' span_id:1613) ) } ) ] ) ) ] ) ) (command.ForEach iter_name: h iter_words: [ {(host)} {(User) (Id.Lit_Splice '@host')} {(User) (Id.Lit_Other '@') (Id.Lit_LBracket '[') (Id.Lit_Other ':') (Id.Lit_Other ':') (1) (Id.Lit_RBracket ']') } ] do_arg_iter: F body: (command.DoGroup children: [ (C {(test_expect_success)} { (DQ ('fetch-pack --diag-url ') ($ Id.VSub_DollarName '$p') ('://') ($ Id.VSub_DollarName '$h') (':22/') ($ Id.VSub_DollarName '$r') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1658) (Token id: Id.Lit_Chars val: '\t\t\t\tcheck_prot_host_port_path $p://$h:22/$r $p "$h" 22 "/$r"\n' span_id: 1659 ) (Token id:Id.Lit_Chars val:'\t\t\t' span_id:1660) ) } ) ] ) ) ] ) ) (command.ForEach iter_name: p iter_words: [{(file)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(test_expect_success)} { (DQ ('fetch-pack --diag-url ') ($ Id.VSub_DollarName '$p') ('://') ($ Id.VSub_DollarName '$h') (/) ($ Id.VSub_DollarName '$r') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1698) (Token id: Id.Lit_Chars val: '\t\t\tcheck_prot_path $p://$h/$r $p "/$r"\n' span_id: 1699 ) (Token id:Id.Lit_Chars val:'\t\t' span_id:1700) ) } ) (C {(test_expect_success)} { (DQ ('fetch-pack --diag-url ') ($ Id.VSub_DollarName '$p') ('://') ($ Id.VSub_DollarName '$h') ('/~') ($ Id.VSub_DollarName '$r') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1720) (Token id: Id.Lit_Chars val: '\t\t\tcheck_prot_path $p://$h/~$r $p "/~$r"\n' span_id: 1721 ) (Token id:Id.Lit_Chars val:'\t\t' span_id:1722) ) } ) ] ) ) (command.ForEach iter_name: h iter_words: [ {(nohost)} {(nohost) (Id.Lit_Other ':') (12)} {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (Id.Lit_Other ':') (1) (Id.Lit_RBracket ']')} {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (Id.Lit_Other ':') (1) (Id.Lit_RBracket ']') (Id.Lit_Other ':') (23) } {(Id.Lit_LBracket '[')} {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (aa)} ] do_arg_iter: F body: (command.DoGroup children: [ (C {(test_expect_success)} { (DQ ('fetch-pack --diag-url ./') ($ Id.VSub_DollarName '$h') (':') ($ Id.VSub_DollarName '$r') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1779) (Token id: Id.Lit_Chars val: '\t\t\tcheck_prot_path ./$h:$r $p "./$h:$r"\n' span_id: 1780 ) (Token id:Id.Lit_Chars val:'\t\t' span_id:1781) ) } ) (C {(test_expect_success)} { (DQ ('fetch-pack --diag-url ./') ($ Id.VSub_DollarName '$p') (':') ($ Id.VSub_DollarName '$h') ('/~') ($ Id.VSub_DollarName '$r') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1801) (Token id: Id.Lit_Chars val: '\t\tcheck_prot_path ./$p:$h/~$r $p "./$p:$h/~$r"\n' span_id: 1802 ) (Token id:Id.Lit_Chars val:'\t\t' span_id:1803) ) } ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:p) op: assign_op.Equal rhs: {(ssh)} spids: [1814] ) ] ) (command.ForEach iter_name: h iter_words: [ {(host)} {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (Id.Lit_Other ':') (1) (Id.Lit_RBracket ']')} ] do_arg_iter: F body: (command.DoGroup children: [ (C {(test_expect_success)} { (DQ ('fetch-pack --diag-url ') ($ Id.VSub_DollarName '$h') (':') ($ Id.VSub_DollarName '$r') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1846) (Token id: Id.Lit_Chars val: '\t\t\tcheck_prot_host_port_path $h:$r $p "$h" NONE "$r"\n' span_id: 1847 ) (Token id:Id.Lit_Chars val:'\t\t' span_id:1848) ) } ) (C {(test_expect_success)} { (DQ ('fetch-pack --diag-url ') ($ Id.VSub_DollarName '$h') (':/~') ($ Id.VSub_DollarName '$r') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1866) (Token id: Id.Lit_Chars val: '\t\t\tcheck_prot_host_port_path $h:/~$r $p "$h" NONE "~$r"\n' span_id: 1867 ) (Token id:Id.Lit_Chars val:'\t\t' span_id:1868) ) } ) ] ) ) ] ) ) (C {(test_expect_success)} {(MINGW)} {(SQ (Token id:Id.Lit_Chars val:'fetch-pack --diag-url file://c:/repo' span_id:1882))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1886) (Token id: Id.Lit_Chars val: '\tcheck_prot_path file://c:/repo file c:/repo\n' span_id: 1887 ) ) } ) (C {(test_expect_success)} {(MINGW)} {(SQ (Token id:Id.Lit_Chars val:'fetch-pack --diag-url c:repo' span_id:1895))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1899) (Token id:Id.Lit_Chars val:'\tcheck_prot_path c:repo file c:repo\n' span_id:1900) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow since ...' span_id:1907))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1911) (Token id:Id.Lit_Chars val:'\ttest_create_repo shallow-since &&\n' span_id:1912) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1913) (Token id:Id.Lit_Chars val:'\tcd shallow-since &&\n' span_id:1914) (Token id: Id.Lit_Chars val: '\tGIT_COMMITTER_DATE="100000000 +0700" git commit --allow-empty -m one &&\n' span_id: 1915 ) (Token id: Id.Lit_Chars val: '\tGIT_COMMITTER_DATE="200000000 +0700" git commit --allow-empty -m two &&\n' span_id: 1916 ) (Token id: Id.Lit_Chars val: '\tGIT_COMMITTER_DATE="300000000 +0700" git commit --allow-empty -m three &&\n' span_id: 1917 ) (Token id: Id.Lit_Chars val: '\tgit clone --shallow-since "300000000 +0700" "file://$(pwd)/." ../shallow11 &&\n' span_id: 1918 ) (Token id: Id.Lit_Chars val: '\tgit -C ../shallow11 log --pretty=tformat:%s HEAD >actual &&\n' span_id: 1919 ) (Token id:Id.Lit_Chars val:'\techo three >expected &&\n' span_id:1920) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1921) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1922) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch shallow since ...' span_id:1929))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1933) (Token id: Id.Lit_Chars val: '\tgit -C shallow11 fetch --shallow-since "200000000 +0700" origin &&\n' span_id: 1934 ) (Token id: Id.Lit_Chars val: '\tgit -C shallow11 log --pretty=tformat:%s origin/master >actual &&\n' span_id: 1935 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:1936) (Token id:Id.Lit_Chars val:'\tthree\n' span_id:1937) (Token id:Id.Lit_Chars val:'\ttwo\n' span_id:1938) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1939) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1940) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'shallow clone exclude tag two' span_id:1947))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1951) (Token id: Id.Lit_Chars val: '\ttest_create_repo shallow-exclude &&\n' span_id: 1952 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1953) (Token id:Id.Lit_Chars val:'\tcd shallow-exclude &&\n' span_id:1954) (Token id:Id.Lit_Chars val:'\ttest_commit one &&\n' span_id:1955) (Token id:Id.Lit_Chars val:'\ttest_commit two &&\n' span_id:1956) (Token id:Id.Lit_Chars val:'\ttest_commit three &&\n' span_id:1957) (Token id: Id.Lit_Chars val: '\tgit clone --shallow-exclude two "file://$(pwd)/." ../shallow12 &&\n' span_id: 1958 ) (Token id: Id.Lit_Chars val: '\tgit -C ../shallow12 log --pretty=tformat:%s HEAD >actual &&\n' span_id: 1959 ) (Token id:Id.Lit_Chars val:'\techo three >expected &&\n' span_id:1960) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1961) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1962) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch exclude tag one' span_id:1969))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1973) (Token id: Id.Lit_Chars val: '\tgit -C shallow12 fetch --shallow-exclude one origin &&\n' span_id: 1974 ) (Token id: Id.Lit_Chars val: '\tgit -C shallow12 log --pretty=tformat:%s origin/master >actual &&\n' span_id: 1975 ) (Token id:Id.Lit_Chars val:'\ttest_write_lines three two >expected &&\n' span_id:1976) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1977) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetching deepen' span_id:1984))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1988) (Token id:Id.Lit_Chars val:'\ttest_create_repo shallow-deepen &&\n' span_id:1989) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1990) (Token id:Id.Lit_Chars val:'\tcd shallow-deepen &&\n' span_id:1991) (Token id:Id.Lit_Chars val:'\ttest_commit one &&\n' span_id:1992) (Token id:Id.Lit_Chars val:'\ttest_commit two &&\n' span_id:1993) (Token id:Id.Lit_Chars val:'\ttest_commit three &&\n' span_id:1994) (Token id: Id.Lit_Chars val: '\tgit clone --depth 1 "file://$(pwd)/." deepen &&\n' span_id: 1995 ) (Token id:Id.Lit_Chars val:'\ttest_commit four &&\n' span_id:1996) (Token id: Id.Lit_Chars val: '\tgit -C deepen log --pretty=tformat:%s master >actual &&\n' span_id: 1997 ) (Token id:Id.Lit_Chars val:'\techo three >expected &&\n' span_id:1998) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:1999) (Token id:Id.Lit_Chars val:'\tgit -C deepen fetch --deepen=1 &&\n' span_id:2000) (Token id: Id.Lit_Chars val: '\tgit -C deepen log --pretty=tformat:%s origin/master >actual &&\n' span_id: 2001 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:2002) (Token id:Id.Lit_Chars val:'\tfour\n' span_id:2003) (Token id:Id.Lit_Chars val:'\tthree\n' span_id:2004) (Token id:Id.Lit_Chars val:'\ttwo\n' span_id:2005) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2006) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2007) (Token id:Id.Lit_Chars val:'\t)\n' span_id:2008) ) } ) (C {(test_done)}) ] )