(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 fast-import utility' span_id:15))} spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.Sentence child: (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/diff-lib.sh)}) terminator: (Token id:Id.Op_Semi val:';' span_id:29) ) (command.ShFunction name: verify_packs body: (command.BraceGroup children: [ (command.ForEach iter_name: p iter_words: [{(.git/objects/pack/) (Id.Lit_Star '*') (.pack)}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(git)} {(verify-pack)} {(DQ ($ Id.VSub_At '$@'))} {(DQ ($ Id.VSub_DollarName '$p'))} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:70) ) ] ) ] ) ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:file2_data) op: assign_op.Equal rhs: { (SQ (Token id:Id.Lit_Chars val:'file2\n' span_id:80) (Token id:Id.Lit_Chars val:'second line of EOF' span_id:81) ) } spids: [78] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:file3_data) op: assign_op.Equal rhs: { (SQ (Token id:Id.Lit_Chars val:'EOF\n' span_id:87) (Token id:Id.Lit_Chars val:'in 3rd file\n' span_id:88) (Token id:Id.Lit_Chars val:' END' span_id:89) ) } spids: [85] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:file4_data) op: assign_op.Equal rhs: {(abcd)} spids: [93] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:file4_len) op: assign_op.Equal rhs: {(4)} spids: [96] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:file5_data) op: assign_op.Equal rhs: { (SQ (Token id:Id.Lit_Chars val:'an inline file.\n' span_id:102) (Token id:Id.Lit_Chars val:' we should see it later.' span_id:103) ) } spids: [100] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:file6_data) op: assign_op.Equal rhs: { (SQ (Token id:Id.Lit_Chars val:'#!/bin/sh\n' span_id:109) (Token id:Id.Lit_Chars val:'echo "$@"' span_id:110) ) } spids: [107] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'empty stream succeeds' span_id:127))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:131) (Token id: Id.Lit_Chars val: '\tgit config fastimport.unpackLimit 0 &&\n' span_id: 132 ) (Token id:Id.Lit_Chars val:'\tgit fast-import </dev/null\n' span_id:133) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'truncated stream complains' span_id:140))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:144) (Token id: Id.Lit_Chars val: '\techo "tag foo" | test_must_fail git fast-import\n' span_id: 145 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: create pack from stdin' span_id:152))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:156) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:157) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:158) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:159) (Token id:Id.Lit_Chars val:'\tmark :2\n' span_id:160) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:161) (Token id:Id.Lit_Chars val:'\t$file2_data\n' span_id:162) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:163) (Token id:Id.Lit_Chars val:'\n' span_id:164) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:165) (Token id:Id.Lit_Chars val:'\tmark :3\n' span_id:166) (Token id:Id.Lit_Chars val:'\tdata <<END\n' span_id:167) (Token id:Id.Lit_Chars val:'\t$file3_data\n' span_id:168) (Token id:Id.Lit_Chars val:'\tEND\n' span_id:169) (Token id:Id.Lit_Chars val:'\n' span_id:170) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:171) (Token id:Id.Lit_Chars val:'\tmark :4\n' span_id:172) (Token id:Id.Lit_Chars val:'\tdata $file4_len\n' span_id:173) (Token id:Id.Lit_Chars val:'\t$file4_data\n' span_id:174) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/master\n' span_id:175) (Token id:Id.Lit_Chars val:'\tmark :5\n' span_id:176) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 177 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:178) (Token id:Id.Lit_Chars val:'\tinitial\n' span_id:179) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:180) (Token id:Id.Lit_Chars val:'\n' span_id:181) (Token id:Id.Lit_Chars val:'\tM 644 :2 file2\n' span_id:182) (Token id:Id.Lit_Chars val:'\tM 644 :3 file3\n' span_id:183) (Token id:Id.Lit_Chars val:'\tM 755 :4 file4\n' span_id:184) (Token id:Id.Lit_Chars val:'\n' span_id:185) (Token id:Id.Lit_Chars val:'\ttag series-A\n' span_id:186) (Token id:Id.Lit_Chars val:'\tfrom :5\n' span_id:187) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:188) (Token id:Id.Lit_Chars val:'\tAn annotated tag without a tagger\n' span_id:189) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:190) (Token id:Id.Lit_Chars val:'\n' span_id:191) (Token id:Id.Lit_Chars val:'\ttag series-A-blob\n' span_id:192) (Token id:Id.Lit_Chars val:'\tfrom :3\n' span_id:193) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:194) (Token id:Id.Lit_Chars val:'\tAn annotated tag that annotates a blob.\n' span_id:195) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:196) (Token id:Id.Lit_Chars val:'\n' span_id:197) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:198) (Token id: Id.Lit_Chars val: '\tgit fast-import --export-marks=marks.out <input &&\n' span_id: 199 ) (Token id:Id.Lit_Chars val:'\tgit whatchanged master\n' span_id:200) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: verify pack' span_id:207))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:211) (Token id:Id.Lit_Chars val:'\tverify_packs\n' span_id:212) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: verify commit' span_id:219))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:223) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:224) (Token id: Id.Lit_Chars val: '\tauthor $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 225 ) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 226 ) (Token id:Id.Lit_Chars val:'\n' span_id:227) (Token id:Id.Lit_Chars val:'\tinitial\n' span_id:228) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:229) (Token id:Id.Lit_Chars val:'\tgit cat-file commit master | sed 1d >actual &&\n' span_id:230) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:231) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: verify tree' span_id:238))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:242) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:243) (Token id:Id.Lit_Chars val:'\t100644 blob file2\n' span_id:244) (Token id:Id.Lit_Chars val:'\t100644 blob file3\n' span_id:245) (Token id:Id.Lit_Chars val:'\t100755 blob file4\n' span_id:246) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:247) (Token id: Id.Lit_Chars val: '\tgit cat-file -p master^{tree} | sed "s/ [0-9a-f]*\t/ /" >actual &&\n' span_id: 248 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:249) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: verify file2' span_id:256))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:260) (Token id:Id.Lit_Chars val:'\techo "$file2_data" >expect &&\n' span_id:261) (Token id:Id.Lit_Chars val:'\tgit cat-file blob master:file2 >actual &&\n' span_id:262) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:263) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: verify file3' span_id:270))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:274) (Token id:Id.Lit_Chars val:'\techo "$file3_data" >expect &&\n' span_id:275) (Token id:Id.Lit_Chars val:'\tgit cat-file blob master:file3 >actual &&\n' span_id:276) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:277) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: verify file4' span_id:284))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:288) (Token id:Id.Lit_Chars val:'\tprintf "$file4_data" >expect &&\n' span_id:289) (Token id:Id.Lit_Chars val:'\tgit cat-file blob master:file4 >actual &&\n' span_id:290) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:291) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: verify tag/series-A' span_id:298))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:302) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:303) (Token id:Id.Lit_Chars val:'\tobject $(git rev-parse refs/heads/master)\n' span_id:304) (Token id:Id.Lit_Chars val:'\ttype commit\n' span_id:305) (Token id:Id.Lit_Chars val:'\ttag series-A\n' span_id:306) (Token id:Id.Lit_Chars val:'\n' span_id:307) (Token id:Id.Lit_Chars val:'\tAn annotated tag without a tagger\n' span_id:308) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:309) (Token id:Id.Lit_Chars val:'\tgit cat-file tag tags/series-A >actual &&\n' span_id:310) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:311) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: verify tag/series-A-blob' span_id:318))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:322) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:323) (Token id:Id.Lit_Chars val:'\tobject $(git rev-parse refs/heads/master:file3)\n' span_id:324) (Token id:Id.Lit_Chars val:'\ttype blob\n' span_id:325) (Token id:Id.Lit_Chars val:'\ttag series-A-blob\n' span_id:326) (Token id:Id.Lit_Chars val:'\n' span_id:327) (Token id:Id.Lit_Chars val:'\tAn annotated tag that annotates a blob.\n' span_id:328) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:329) (Token id:Id.Lit_Chars val:'\tgit cat-file tag tags/series-A-blob >actual &&\n' span_id:330) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:331) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: verify marks output' span_id:338))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:342) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:343) (Token id:Id.Lit_Chars val:'\t:2 $(git rev-parse --verify master:file2)\n' span_id:344) (Token id: Id.Lit_Chars val: '\t:3 $(git rev-parse --verify master:file3)\n' span_id: 345 ) (Token id:Id.Lit_Chars val:'\t:4 $(git rev-parse --verify master:file4)\n' span_id:346) (Token id: Id.Lit_Chars val: '\t:5 $(git rev-parse --verify master^0)\n' span_id: 347 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:348) (Token id:Id.Lit_Chars val:'\ttest_cmp expect marks.out\n' span_id:349) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: verify marks import' span_id:356))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:360) (Token id:Id.Lit_Chars val:'\tgit fast-import \\\n' span_id:361) (Token id:Id.Lit_Chars val:'\t\t--import-marks=marks.out \\\n' span_id:362) (Token id:Id.Lit_Chars val:'\t\t--export-marks=marks.new \\\n' span_id:363) (Token id:Id.Lit_Chars val:'\t\t</dev/null &&\n' span_id:364) (Token id:Id.Lit_Chars val:'\ttest_cmp expect marks.new\n' span_id:365) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: tag blob by sha1' span_id:372))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:376) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:377) (Token id:Id.Lit_Chars val:'\tnew_blob=$(echo testing | git hash-object --stdin) &&\n' span_id:378) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:379) (Token id:Id.Lit_Chars val:'\ttag series-A-blob-2\n' span_id:380) (Token id: Id.Lit_Chars val: '\tfrom $(git rev-parse refs/heads/master:file3)\n' span_id: 381 ) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:382) (Token id:Id.Lit_Chars val:'\tTag blob by sha1.\n' span_id:383) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:384) (Token id:Id.Lit_Chars val:'\n' span_id:385) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:386) (Token id:Id.Lit_Chars val:'\tmark :6\n' span_id:387) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:388) (Token id:Id.Lit_Chars val:'\ttesting\n' span_id:389) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:390) (Token id:Id.Lit_Chars val:'\n' span_id:391) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/new_blob\n' span_id:392) (Token id:Id.Lit_Chars val:'\tcommitter <> 0 +0000\n' span_id:393) (Token id:Id.Lit_Chars val:'\tdata 0\n' span_id:394) (Token id:Id.Lit_Chars val:'\tM 644 :6 new_blob\n' span_id:395) (Token id: Id.Lit_Chars val: '\t#pretend we got sha1 from fast-import\n' span_id: 396 ) (Token id:Id.Lit_Chars val:'\tls "new_blob"\n' span_id:397) (Token id:Id.Lit_Chars val:'\n' span_id:398) (Token id:Id.Lit_Chars val:'\ttag series-A-blob-3\n' span_id:399) (Token id:Id.Lit_Chars val:'\tfrom $new_blob\n' span_id:400) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:401) (Token id:Id.Lit_Chars val:'\tTag new_blob.\n' span_id:402) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:403) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:404) (Token id:Id.Lit_Chars val:'\n' span_id:405) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:406) (Token id:Id.Lit_Chars val:'\tobject $(git rev-parse refs/heads/master:file3)\n' span_id:407) (Token id:Id.Lit_Chars val:'\ttype blob\n' span_id:408) (Token id:Id.Lit_Chars val:'\ttag series-A-blob-2\n' span_id:409) (Token id:Id.Lit_Chars val:'\n' span_id:410) (Token id:Id.Lit_Chars val:'\tTag blob by sha1.\n' span_id:411) (Token id:Id.Lit_Chars val:'\tobject $new_blob\n' span_id:412) (Token id:Id.Lit_Chars val:'\ttype blob\n' span_id:413) (Token id:Id.Lit_Chars val:'\ttag series-A-blob-3\n' span_id:414) (Token id:Id.Lit_Chars val:'\n' span_id:415) (Token id:Id.Lit_Chars val:'\tTag new_blob.\n' span_id:416) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:417) (Token id:Id.Lit_Chars val:'\n' span_id:418) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:419) (Token id:Id.Lit_Chars val:'\tgit cat-file tag tags/series-A-blob-2 >actual &&\n' span_id:420) (Token id: Id.Lit_Chars val: '\tgit cat-file tag tags/series-A-blob-3 >>actual &&\n' span_id: 421 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:422) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: verify marks import does not crash' span_id:429))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:433) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:434) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:435) (Token id: Id.Lit_Chars val: '\tcommit refs/heads/verify--import-marks\n' span_id: 436 ) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 437 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:438) (Token id:Id.Lit_Chars val:'\trecreate from :5\n' span_id:439) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:440) (Token id:Id.Lit_Chars val:'\n' span_id:441) (Token id:Id.Lit_Chars val:'\tfrom :5\n' span_id:442) (Token id:Id.Lit_Chars val:'\tM 755 :2 copy-of-file2\n' span_id:443) (Token id:Id.Lit_Chars val:'\n' span_id:444) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:445) (Token id:Id.Lit_Chars val:'\n' span_id:446) (Token id: Id.Lit_Chars val: '\tgit fast-import --import-marks=marks.out <input &&\n' span_id: 447 ) (Token id:Id.Lit_Chars val:'\tgit whatchanged verify--import-marks\n' span_id:448) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: verify pack' span_id:455))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:459) (Token id:Id.Lit_Chars val:'\tverify_packs\n' span_id:460) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: verify diff' span_id:467))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:471) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:472) (Token id: Id.Lit_Chars val: '\t:000000 100755 0000000000000000000000000000000000000000 7123f7f44e39be127c5eb701e5968176ee9d78b1 A\tcopy-of-file2\n' span_id: 473 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:474) (Token id: Id.Lit_Chars val: '\tgit diff-tree -M -r master verify--import-marks >actual &&\n' span_id: 475 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual &&\n' span_id:476) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse --verify master:file2) \\\n' span_id: 477 ) (Token id: Id.Lit_Chars val: '\t = $(git rev-parse --verify verify--import-marks:copy-of-file2)\n' span_id: 478 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'A: export marks with large values' span_id:485))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:489) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:490) (Token id:Id.Lit_Chars val:'\tmt=$(git hash-object --stdin < /dev/null) &&\n' span_id:491) (Token id:Id.Lit_Chars val:'\t>input.blob &&\n' span_id:492) (Token id:Id.Lit_Chars val:'\t>marks.exp &&\n' span_id:493) (Token id:Id.Lit_Chars val:'\t>tree.exp &&\n' span_id:494) (Token id:Id.Lit_Chars val:'\n' span_id:495) (Token id:Id.Lit_Chars val:'\tcat >input.commit <<-EOF &&\n' span_id:496) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/verify--dump-marks\n' span_id:497) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 498 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:499) (Token id: Id.Lit_Chars val: '\ttest the sparse array dumping routines with exponentially growing marks\n' span_id: 500 ) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:501) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:502) (Token id:Id.Lit_Chars val:'\n' span_id:503) (Token id:Id.Lit_Chars val:'\ti=0 l=4 m=6 n=7 &&\n' span_id:504) (Token id:Id.Lit_Chars val:'\twhile test "$i" -lt 27\n' span_id:505) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:506) (Token id:Id.Lit_Chars val:'\t\tcat >>input.blob <<-EOF &&\n' span_id:507) (Token id:Id.Lit_Chars val:'\t\tblob\n' span_id:508) (Token id:Id.Lit_Chars val:'\t\tmark :$l\n' span_id:509) (Token id:Id.Lit_Chars val:'\t\tdata 0\n' span_id:510) (Token id:Id.Lit_Chars val:'\t\tblob\n' span_id:511) (Token id:Id.Lit_Chars val:'\t\tmark :$m\n' span_id:512) (Token id:Id.Lit_Chars val:'\t\tdata 0\n' span_id:513) (Token id:Id.Lit_Chars val:'\t\tblob\n' span_id:514) (Token id:Id.Lit_Chars val:'\t\tmark :$n\n' span_id:515) (Token id:Id.Lit_Chars val:'\t\tdata 0\n' span_id:516) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:517) (Token id:Id.Lit_Chars val:'\t\techo "M 100644 :$l l$i" >>input.commit &&\n' span_id:518) (Token id: Id.Lit_Chars val: '\t\techo "M 100644 :$m m$i" >>input.commit &&\n' span_id: 519 ) (Token id:Id.Lit_Chars val:'\t\techo "M 100644 :$n n$i" >>input.commit &&\n' span_id:520) (Token id:Id.Lit_Chars val:'\n' span_id:521) (Token id:Id.Lit_Chars val:'\t\techo ":$l $mt" >>marks.exp &&\n' span_id:522) (Token id:Id.Lit_Chars val:'\t\techo ":$m $mt" >>marks.exp &&\n' span_id:523) (Token id:Id.Lit_Chars val:'\t\techo ":$n $mt" >>marks.exp &&\n' span_id:524) (Token id:Id.Lit_Chars val:'\n' span_id:525) (Token id:Id.Lit_Chars val:'\t\tprintf "100644 blob $mt\\tl$i\\n" >>tree.exp &&\n' span_id:526) (Token id: Id.Lit_Chars val: '\t\tprintf "100644 blob $mt\\tm$i\\n" >>tree.exp &&\n' span_id: 527 ) (Token id:Id.Lit_Chars val:'\t\tprintf "100644 blob $mt\\tn$i\\n" >>tree.exp &&\n' span_id:528) (Token id:Id.Lit_Chars val:'\n' span_id:529) (Token id:Id.Lit_Chars val:'\t\tl=$(($l + $l)) &&\n' span_id:530) (Token id:Id.Lit_Chars val:'\t\tm=$(($m + $m)) &&\n' span_id:531) (Token id:Id.Lit_Chars val:'\t\tn=$(($l + $n)) &&\n' span_id:532) (Token id:Id.Lit_Chars val:'\n' span_id:533) (Token id:Id.Lit_Chars val:'\t\ti=$((1 + $i)) || return 1\n' span_id:534) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:535) (Token id:Id.Lit_Chars val:'\n' span_id:536) (Token id:Id.Lit_Chars val:'\tsort tree.exp > tree.exp_s &&\n' span_id:537) (Token id:Id.Lit_Chars val:'\n' span_id:538) (Token id: Id.Lit_Chars val: '\tcat input.blob input.commit | git fast-import --export-marks=marks.large &&\n' span_id: 539 ) (Token id:Id.Lit_Chars val:'\tgit ls-tree refs/heads/verify--dump-marks >tree.out &&\n' span_id:540) (Token id:Id.Lit_Chars val:'\ttest_cmp tree.exp_s tree.out &&\n' span_id:541) (Token id:Id.Lit_Chars val:'\ttest_cmp marks.exp marks.large\n' span_id:542) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'B: fail on invalid blob sha1' span_id:559))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:563) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:564) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:565) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/branch\n' span_id:566) (Token id:Id.Lit_Chars val:'\tmark :1\n' span_id:567) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 568 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:569) (Token id:Id.Lit_Chars val:'\tcorrupt\n' span_id:570) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:571) (Token id:Id.Lit_Chars val:'\n' span_id:572) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/master\n' span_id:573) (Token id:Id.Lit_Chars val:'\tM 755 0000000000000000000000000000000000000001 zero1\n' span_id:574) (Token id:Id.Lit_Chars val:'\n' span_id:575) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:576) (Token id:Id.Lit_Chars val:'\n' span_id:577) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/objects/pack_* .git/objects/index_*" &&\n' span_id: 578 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fast-import <input\n' span_id:579) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'B: accept branch name "TEMP_TAG"' span_id:586))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:590) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:591) (Token id:Id.Lit_Chars val:'\tcommit TEMP_TAG\n' span_id:592) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 593 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:594) (Token id:Id.Lit_Chars val:'\ttag base\n' span_id:595) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:596) (Token id:Id.Lit_Chars val:'\n' span_id:597) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/master\n' span_id:598) (Token id:Id.Lit_Chars val:'\n' span_id:599) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:600) (Token id:Id.Lit_Chars val:'\n' span_id:601) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm -f .git/TEMP_TAG\n' span_id:602) (Token id:Id.Lit_Chars val:'\t\tgit gc\n' span_id:603) (Token id:Id.Lit_Chars val:'\t\tgit prune" &&\n' span_id:604) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:605) (Token id:Id.Lit_Chars val:'\ttest -f .git/TEMP_TAG &&\n' span_id:606) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse master) = $(git rev-parse TEMP_TAG^)\n' span_id: 607 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'B: accept empty committer' span_id:614))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:618) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:619) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/empty-committer-1\n' span_id:620) (Token id:Id.Lit_Chars val:'\tcommitter <> $GIT_COMMITTER_DATE\n' span_id:621) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:622) (Token id:Id.Lit_Chars val:'\tempty commit\n' span_id:623) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:624) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:625) (Token id:Id.Lit_Chars val:'\n' span_id:626) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git update-ref -d refs/heads/empty-committer-1\n' span_id: 627 ) (Token id:Id.Lit_Chars val:'\t\tgit gc\n' span_id:628) (Token id:Id.Lit_Chars val:'\t\tgit prune" &&\n' span_id:629) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:630) (Token id:Id.Lit_Chars val:'\tout=$(git fsck) &&\n' span_id:631) (Token id:Id.Lit_Chars val:'\techo "$out" &&\n' span_id:632) (Token id:Id.Lit_Chars val:'\ttest -z "$out"\n' span_id:633) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'B: accept and fixup committer with no name' span_id:640))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:644) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:645) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/empty-committer-2\n' span_id:646) (Token id: Id.Lit_Chars val: '\tcommitter <a@b.com> $GIT_COMMITTER_DATE\n' span_id: 647 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:648) (Token id:Id.Lit_Chars val:'\tempty commit\n' span_id:649) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:650) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:651) (Token id:Id.Lit_Chars val:'\n' span_id:652) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git update-ref -d refs/heads/empty-committer-2\n' span_id: 653 ) (Token id:Id.Lit_Chars val:'\t\tgit gc\n' span_id:654) (Token id:Id.Lit_Chars val:'\t\tgit prune" &&\n' span_id:655) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:656) (Token id:Id.Lit_Chars val:'\tout=$(git fsck) &&\n' span_id:657) (Token id:Id.Lit_Chars val:'\techo "$out" &&\n' span_id:658) (Token id:Id.Lit_Chars val:'\ttest -z "$out"\n' span_id:659) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'B: fail on invalid committer (1)' span_id:666))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:670) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:671) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/invalid-committer\n' span_id:672) (Token id: Id.Lit_Chars val: '\tcommitter Name email> $GIT_COMMITTER_DATE\n' span_id: 673 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:674) (Token id:Id.Lit_Chars val:'\tempty commit\n' span_id:675) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:676) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:677) (Token id:Id.Lit_Chars val:'\n' span_id:678) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git update-ref -d refs/heads/invalid-committer" &&\n' span_id: 679 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fast-import <input\n' span_id:680) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'B: fail on invalid committer (2)' span_id:687))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:691) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:692) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/invalid-committer\n' span_id:693) (Token id: Id.Lit_Chars val: '\tcommitter Name <e<mail> $GIT_COMMITTER_DATE\n' span_id: 694 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:695) (Token id:Id.Lit_Chars val:'\tempty commit\n' span_id:696) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:697) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:698) (Token id:Id.Lit_Chars val:'\n' span_id:699) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git update-ref -d refs/heads/invalid-committer" &&\n' span_id: 700 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fast-import <input\n' span_id:701) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'B: fail on invalid committer (3)' span_id:708))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:712) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:713) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/invalid-committer\n' span_id:714) (Token id: Id.Lit_Chars val: '\tcommitter Name <email>> $GIT_COMMITTER_DATE\n' span_id: 715 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:716) (Token id:Id.Lit_Chars val:'\tempty commit\n' span_id:717) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:718) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:719) (Token id:Id.Lit_Chars val:'\n' span_id:720) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git update-ref -d refs/heads/invalid-committer" &&\n' span_id: 721 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fast-import <input\n' span_id:722) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'B: fail on invalid committer (4)' span_id:729))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:733) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:734) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/invalid-committer\n' span_id:735) (Token id: Id.Lit_Chars val: '\tcommitter Name <email $GIT_COMMITTER_DATE\n' span_id: 736 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:737) (Token id:Id.Lit_Chars val:'\tempty commit\n' span_id:738) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:739) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:740) (Token id:Id.Lit_Chars val:'\n' span_id:741) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git update-ref -d refs/heads/invalid-committer" &&\n' span_id: 742 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fast-import <input\n' span_id:743) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'B: fail on invalid committer (5)' span_id:750))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:754) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:755) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/invalid-committer\n' span_id:756) (Token id: Id.Lit_Chars val: '\tcommitter Name<email> $GIT_COMMITTER_DATE\n' span_id: 757 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:758) (Token id:Id.Lit_Chars val:'\tempty commit\n' span_id:759) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:760) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:761) (Token id:Id.Lit_Chars val:'\n' span_id:762) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git update-ref -d refs/heads/invalid-committer" &&\n' span_id: 763 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fast-import <input\n' span_id:764) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'C: incremental import create pack from stdin' span_id:781))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:785) (Token id: Id.Lit_Chars val: '\tnewf=$(echo hi newf | git hash-object -w --stdin) &&\n' span_id: 786 ) (Token id:Id.Lit_Chars val:'\toldf=$(git rev-parse --verify master:file2) &&\n' span_id:787) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:788) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:789) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/branch\n' span_id:790) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 791 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:792) (Token id:Id.Lit_Chars val:'\tsecond\n' span_id:793) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:794) (Token id:Id.Lit_Chars val:'\n' span_id:795) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/master\n' span_id:796) (Token id:Id.Lit_Chars val:'\tM 644 $oldf file2/oldf\n' span_id:797) (Token id:Id.Lit_Chars val:'\tM 755 $newf file2/newf\n' span_id:798) (Token id:Id.Lit_Chars val:'\tD file3\n' span_id:799) (Token id:Id.Lit_Chars val:'\n' span_id:800) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:801) (Token id:Id.Lit_Chars val:'\n' span_id:802) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:803) (Token id:Id.Lit_Chars val:'\tgit whatchanged branch\n' span_id:804) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'C: verify pack' span_id:811))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:815) (Token id:Id.Lit_Chars val:'\tverify_packs\n' span_id:816) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'C: validate reuse existing blob' span_id:823))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:827) (Token id: Id.Lit_Chars val: '\ttest $newf = $(git rev-parse --verify branch:file2/newf) &&\n' span_id: 828 ) (Token id: Id.Lit_Chars val: '\ttest $oldf = $(git rev-parse --verify branch:file2/oldf)\n' span_id: 829 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'C: verify commit' span_id:836))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:840) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:841) (Token id:Id.Lit_Chars val:'\tparent $(git rev-parse --verify master^0)\n' span_id:842) (Token id: Id.Lit_Chars val: '\tauthor $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 843 ) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 844 ) (Token id:Id.Lit_Chars val:'\n' span_id:845) (Token id:Id.Lit_Chars val:'\tsecond\n' span_id:846) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:847) (Token id:Id.Lit_Chars val:'\n' span_id:848) (Token id: Id.Lit_Chars val: '\tgit cat-file commit branch | sed 1d >actual &&\n' span_id: 849 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:850) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'C: validate rename result' span_id:857))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:861) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:862) (Token id: Id.Lit_Chars val: '\t:000000 100755 0000000000000000000000000000000000000000 f1fb5da718392694d0076d677d6d0e364c79b0bc A\tfile2/newf\n' span_id: 863 ) (Token id: Id.Lit_Chars val: '\t:100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 R100\tfile2\tfile2/oldf\n' span_id: 864 ) (Token id: Id.Lit_Chars val: '\t:100644 000000 0d92e9f3374ae2947c23aa477cbc68ce598135f1 0000000000000000000000000000000000000000 D\tfile3\n' span_id: 865 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:866) (Token id: Id.Lit_Chars val: '\tgit diff-tree -M -r master branch >actual &&\n' span_id: 867 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:868) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'D: inline data in commit' span_id:885))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:889) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:890) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:891) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/branch\n' span_id:892) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 893 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:894) (Token id:Id.Lit_Chars val:'\tthird\n' span_id:895) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:896) (Token id:Id.Lit_Chars val:'\n' span_id:897) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:898) (Token id:Id.Lit_Chars val:'\tM 644 inline newdir/interesting\n' span_id:899) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:900) (Token id:Id.Lit_Chars val:'\t$file5_data\n' span_id:901) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:902) (Token id:Id.Lit_Chars val:'\n' span_id:903) (Token id:Id.Lit_Chars val:'\tM 755 inline newdir/exec.sh\n' span_id:904) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:905) (Token id:Id.Lit_Chars val:'\t$file6_data\n' span_id:906) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:907) (Token id:Id.Lit_Chars val:'\n' span_id:908) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:909) (Token id:Id.Lit_Chars val:'\n' span_id:910) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:911) (Token id:Id.Lit_Chars val:'\tgit whatchanged branch\n' span_id:912) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'D: verify pack' span_id:919))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:923) (Token id:Id.Lit_Chars val:'\tverify_packs\n' span_id:924) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'D: validate new files added' span_id:931))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:935) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:936) (Token id: Id.Lit_Chars val: '\t:000000 100755 0000000000000000000000000000000000000000 e74b7d465e52746be2b4bae983670711e6e66657 A\tnewdir/exec.sh\n' span_id: 937 ) (Token id: Id.Lit_Chars val: '\t:000000 100644 0000000000000000000000000000000000000000 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 A\tnewdir/interesting\n' span_id: 938 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:939) (Token id: Id.Lit_Chars val: '\tgit diff-tree -M -r branch^ branch >actual &&\n' span_id: 940 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:941) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'D: verify file5' span_id:948))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:952) (Token id:Id.Lit_Chars val:'\techo "$file5_data" >expect &&\n' span_id:953) (Token id:Id.Lit_Chars val:'\tgit cat-file blob branch:newdir/interesting >actual &&\n' span_id:954) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:955) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'D: verify file6' span_id:962))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:966) (Token id:Id.Lit_Chars val:'\techo "$file6_data" >expect &&\n' span_id:967) (Token id:Id.Lit_Chars val:'\tgit cat-file blob branch:newdir/exec.sh >actual &&\n' span_id:968) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:969) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'E: rfc2822 date, --date-format=raw' span_id:986))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:990) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:991) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/branch\n' span_id:992) (Token id: Id.Lit_Chars val: '\tauthor $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> Tue Feb 6 11:22:18 2007 -0500\n' span_id: 993 ) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> Tue Feb 6 12:35:02 2007 -0500\n' span_id: 994 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:995) (Token id:Id.Lit_Chars val:'\tRFC 2822 type date\n' span_id:996) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:997) (Token id:Id.Lit_Chars val:'\n' span_id:998) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:999) (Token id:Id.Lit_Chars val:'\n' span_id:1000) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1001) (Token id:Id.Lit_Chars val:'\n' span_id:1002) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --date-format=raw <input\n' span_id: 1003 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'E: rfc2822 date, --date-format=rfc2822' span_id:1009))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1013) (Token id: Id.Lit_Chars val: '\tgit fast-import --date-format=rfc2822 <input\n' span_id: 1014 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'E: verify pack' span_id:1021))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1025) (Token id:Id.Lit_Chars val:'\tverify_packs\n' span_id:1026) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'E: verify commit' span_id:1033))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1037) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:1038) (Token id: Id.Lit_Chars val: '\tauthor $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> 1170778938 -0500\n' span_id: 1039 ) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1170783302 -0500\n' span_id: 1040 ) (Token id:Id.Lit_Chars val:'\n' span_id:1041) (Token id:Id.Lit_Chars val:'\tRFC 2822 type date\n' span_id:1042) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1043) (Token id: Id.Lit_Chars val: '\tgit cat-file commit branch | sed 1,2d >actual &&\n' span_id: 1044 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1045) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'F: non-fast-forward update skips' span_id:1062))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1066) (Token id: Id.Lit_Chars val: '\told_branch=$(git rev-parse --verify branch^0) &&\n' span_id: 1067 ) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1068) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1069) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/branch\n' span_id:1070) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1071 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1072) (Token id:Id.Lit_Chars val:'\tlosing things already?\n' span_id:1073) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1074) (Token id:Id.Lit_Chars val:'\n' span_id:1075) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch~1\n' span_id:1076) (Token id:Id.Lit_Chars val:'\n' span_id:1077) (Token id:Id.Lit_Chars val:'\treset refs/heads/other\n' span_id:1078) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch\n' span_id:1079) (Token id:Id.Lit_Chars val:'\n' span_id:1080) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1081) (Token id:Id.Lit_Chars val:'\n' span_id:1082) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import <input &&\n' span_id: 1083 ) (Token id:Id.Lit_Chars val:'\t# branch must remain unaffected\n' span_id:1084) (Token id: Id.Lit_Chars val: '\ttest $old_branch = $(git rev-parse --verify branch^0)\n' span_id: 1085 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'F: verify pack' span_id:1092))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1096) (Token id:Id.Lit_Chars val:'\tverify_packs\n' span_id:1097) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'F: verify other commit' span_id:1104))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1108) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:1109) (Token id:Id.Lit_Chars val:'\ttree $(git rev-parse branch~1^{tree})\n' span_id:1110) (Token id:Id.Lit_Chars val:'\tparent $(git rev-parse branch~1)\n' span_id:1111) (Token id: Id.Lit_Chars val: '\tauthor $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1112 ) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1113 ) (Token id:Id.Lit_Chars val:'\n' span_id:1114) (Token id:Id.Lit_Chars val:'\tlosing things already?\n' span_id:1115) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1116) (Token id: Id.Lit_Chars val: '\tgit cat-file commit other >actual &&\n' span_id: 1117 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1118) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'G: non-fast-forward update forced' span_id:1135))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1139) (Token id: Id.Lit_Chars val: '\told_branch=$(git rev-parse --verify branch^0) &&\n' span_id: 1140 ) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1141) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1142) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/branch\n' span_id:1143) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1144 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1145) (Token id:Id.Lit_Chars val:'\tlosing things already?\n' span_id:1146) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1147) (Token id:Id.Lit_Chars val:'\n' span_id:1148) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch~1\n' span_id:1149) (Token id:Id.Lit_Chars val:'\n' span_id:1150) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1151) (Token id:Id.Lit_Chars val:'\tgit fast-import --force <input\n' span_id:1152) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'G: verify pack' span_id:1159))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1163) (Token id:Id.Lit_Chars val:'\tverify_packs\n' span_id:1164) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'G: branch changed, but logged' span_id:1171))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1175) (Token id: Id.Lit_Chars val: '\ttest $old_branch != $(git rev-parse --verify branch^0) &&\n' span_id: 1176 ) (Token id: Id.Lit_Chars val: '\ttest $old_branch = $(git rev-parse --verify branch@{1})\n' span_id: 1177 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'H: deletall, add 1' span_id:1194))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1198) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1199) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1200) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/H\n' span_id:1201) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1202 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1203) (Token id:Id.Lit_Chars val:'\tthird\n' span_id:1204) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1205) (Token id:Id.Lit_Chars val:'\n' span_id:1206) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:1207) (Token id:Id.Lit_Chars val:'\tM 644 inline i-will-die\n' span_id:1208) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:1209) (Token id:Id.Lit_Chars val:'\tthis file will never exist.\n' span_id:1210) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1211) (Token id:Id.Lit_Chars val:'\n' span_id:1212) (Token id:Id.Lit_Chars val:'\tdeleteall\n' span_id:1213) (Token id:Id.Lit_Chars val:'\tM 644 inline h/e/l/lo\n' span_id:1214) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:1215) (Token id:Id.Lit_Chars val:'\t$file5_data\n' span_id:1216) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1217) (Token id:Id.Lit_Chars val:'\n' span_id:1218) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1219) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:1220) (Token id:Id.Lit_Chars val:'\tgit whatchanged H\n' span_id:1221) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'H: verify pack' span_id:1228))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1232) (Token id:Id.Lit_Chars val:'\tverify_packs\n' span_id:1233) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'H: validate old files removed, new files added' span_id:1240))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1244) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:1245) (Token id: Id.Lit_Chars val: '\t:100755 000000 f1fb5da718392694d0076d677d6d0e364c79b0bc 0000000000000000000000000000000000000000 D\tfile2/newf\n' span_id: 1246 ) (Token id: Id.Lit_Chars val: '\t:100644 000000 7123f7f44e39be127c5eb701e5968176ee9d78b1 0000000000000000000000000000000000000000 D\tfile2/oldf\n' span_id: 1247 ) (Token id: Id.Lit_Chars val: '\t:100755 000000 85df50785d62d3b05ab03d9cbf7e4a0b49449730 0000000000000000000000000000000000000000 D\tfile4\n' span_id: 1248 ) (Token id: Id.Lit_Chars val: '\t:100644 100644 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 R100\tnewdir/interesting\th/e/l/lo\n' span_id: 1249 ) (Token id: Id.Lit_Chars val: '\t:100755 000000 e74b7d465e52746be2b4bae983670711e6e66657 0000000000000000000000000000000000000000 D\tnewdir/exec.sh\n' span_id: 1250 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1251) (Token id: Id.Lit_Chars val: '\tgit diff-tree -M -r H^ H >actual &&\n' span_id: 1252 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:1253) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'H: verify file' span_id:1260))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1264) (Token id:Id.Lit_Chars val:'\techo "$file5_data" >expect &&\n' span_id:1265) (Token id:Id.Lit_Chars val:'\tgit cat-file blob H:h/e/l/lo >actual &&\n' span_id:1266) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1267) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'I: export-pack-edges' span_id:1284))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1288) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1289) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/export-boundary\n' span_id:1290) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1291 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1292) (Token id: Id.Lit_Chars val: '\twe have a border. its only 40 characters wide.\n' span_id: 1293 ) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1294) (Token id:Id.Lit_Chars val:'\n' span_id:1295) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch\n' span_id:1296) (Token id:Id.Lit_Chars val:'\n' span_id:1297) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1298) (Token id: Id.Lit_Chars val: '\tgit fast-import --export-pack-edges=edges.list <input\n' span_id: 1299 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'I: verify edge list' span_id:1306))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1310) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:1311) (Token id: Id.Lit_Chars val: '\t.git/objects/pack/pack-.pack: $(git rev-parse --verify export-boundary)\n' span_id: 1312 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1313) (Token id: Id.Lit_Chars val: '\tsed -e s/pack-.*pack/pack-.pack/ edges.list >actual &&\n' span_id: 1314 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1315) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'J: reset existing branch creates empty commit' span_id:1332))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1336) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1337) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/J\n' span_id:1338) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1339 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1340) (Token id:Id.Lit_Chars val:'\tcreate J\n' span_id:1341) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1342) (Token id:Id.Lit_Chars val:'\n' span_id:1343) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch\n' span_id:1344) (Token id:Id.Lit_Chars val:'\n' span_id:1345) (Token id:Id.Lit_Chars val:'\treset refs/heads/J\n' span_id:1346) (Token id:Id.Lit_Chars val:'\n' span_id:1347) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/J\n' span_id:1348) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1349 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1350) (Token id:Id.Lit_Chars val:'\tinitialize J\n' span_id:1351) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1352) (Token id:Id.Lit_Chars val:'\n' span_id:1353) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1354) (Token id:Id.Lit_Chars val:'\tgit fast-import <input\n' span_id:1355) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'J: branch has 1 commit, empty tree' span_id:1361))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1365) (Token id: Id.Lit_Chars val: '\ttest 1 = $(git rev-list J | wc -l) &&\n' span_id: 1366 ) (Token id:Id.Lit_Chars val:'\ttest 0 = $(git ls-tree J | wc -l)\n' span_id:1367) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'J: tag must fail on empty branch' span_id:1374))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1378) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1379) (Token id:Id.Lit_Chars val:'\treset refs/heads/J2\n' span_id:1380) (Token id:Id.Lit_Chars val:'\n' span_id:1381) (Token id:Id.Lit_Chars val:'\ttag wrong_tag\n' span_id:1382) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/J2\n' span_id:1383) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:1384) (Token id:Id.Lit_Chars val:'\tTag branch that was reset.\n' span_id:1385) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1386) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1387) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fast-import <input\n' span_id:1388) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'K: reinit branch with from' span_id:1405))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1409) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1410) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/K\n' span_id:1411) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1412 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1413) (Token id:Id.Lit_Chars val:'\tcreate K\n' span_id:1414) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1415) (Token id:Id.Lit_Chars val:'\n' span_id:1416) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch\n' span_id:1417) (Token id:Id.Lit_Chars val:'\n' span_id:1418) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/K\n' span_id:1419) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1420 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1421) (Token id:Id.Lit_Chars val:'\tredo K\n' span_id:1422) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1423) (Token id:Id.Lit_Chars val:'\n' span_id:1424) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^1\n' span_id:1425) (Token id:Id.Lit_Chars val:'\n' span_id:1426) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1427) (Token id:Id.Lit_Chars val:'\tgit fast-import <input\n' span_id:1428) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'K: verify K^1 = branch^1' span_id:1434))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1438) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse --verify branch^1) \\\n' span_id: 1439 ) (Token id:Id.Lit_Chars val:'\t\t= $(git rev-parse --verify K^1)\n' span_id:1440) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'L: verify internal tree sorting' span_id:1457))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1461) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1462) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:1463) (Token id:Id.Lit_Chars val:'\tmark :1\n' span_id:1464) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:1465) (Token id:Id.Lit_Chars val:'\tsome data\n' span_id:1466) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1467) (Token id:Id.Lit_Chars val:'\n' span_id:1468) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:1469) (Token id:Id.Lit_Chars val:'\tmark :2\n' span_id:1470) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:1471) (Token id:Id.Lit_Chars val:'\tother data\n' span_id:1472) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1473) (Token id:Id.Lit_Chars val:'\n' span_id:1474) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/L\n' span_id:1475) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1476 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1477) (Token id:Id.Lit_Chars val:'\tcreate L\n' span_id:1478) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1479) (Token id:Id.Lit_Chars val:'\n' span_id:1480) (Token id:Id.Lit_Chars val:'\tM 644 :1 b.\n' span_id:1481) (Token id:Id.Lit_Chars val:'\tM 644 :1 b/other\n' span_id:1482) (Token id:Id.Lit_Chars val:'\tM 644 :1 ba\n' span_id:1483) (Token id:Id.Lit_Chars val:'\n' span_id:1484) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/L\n' span_id:1485) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1486 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1487) (Token id:Id.Lit_Chars val:'\tupdate L\n' span_id:1488) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1489) (Token id:Id.Lit_Chars val:'\n' span_id:1490) (Token id:Id.Lit_Chars val:'\tM 644 :2 b.\n' span_id:1491) (Token id:Id.Lit_Chars val:'\tM 644 :2 b/other\n' span_id:1492) (Token id:Id.Lit_Chars val:'\tM 644 :2 ba\n' span_id:1493) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1494) (Token id:Id.Lit_Chars val:'\n' span_id:1495) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EXPECT_END &&\n' span_id:1496) (Token id:Id.Lit_Chars val:'\t:100644 100644 4268632... 55d3a52... M\tb.\n' span_id:1497) (Token id: Id.Lit_Chars val: '\t:040000 040000 0ae5cac... 443c768... M\tb\n' span_id: 1498 ) (Token id:Id.Lit_Chars val:'\t:100644 100644 4268632... 55d3a52... M\tba\n' span_id:1499) (Token id:Id.Lit_Chars val:'\tEXPECT_END\n' span_id:1500) (Token id:Id.Lit_Chars val:'\n' span_id:1501) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:1502) (Token id:Id.Lit_Chars val:'\tgit diff-tree --abbrev --raw L^ L >output &&\n' span_id:1503) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1504) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'L: nested tree copy does not corrupt deltas' span_id:1511))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1515) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1516) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:1517) (Token id:Id.Lit_Chars val:'\tmark :1\n' span_id:1518) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:1519) (Token id:Id.Lit_Chars val:'\tthe data\n' span_id:1520) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1521) (Token id:Id.Lit_Chars val:'\n' span_id:1522) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/L2\n' span_id:1523) (Token id: Id.Lit_Chars val: '\tcommitter C O Mitter <committer@example.com> 1112912473 -0700\n' span_id: 1524 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1525) (Token id:Id.Lit_Chars val:'\tinit L2\n' span_id:1526) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1527) (Token id:Id.Lit_Chars val:'\tM 644 :1 a/b/c\n' span_id:1528) (Token id:Id.Lit_Chars val:'\tM 644 :1 a/b/d\n' span_id:1529) (Token id:Id.Lit_Chars val:'\tM 644 :1 a/e/f\n' span_id:1530) (Token id:Id.Lit_Chars val:'\n' span_id:1531) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/L2\n' span_id:1532) (Token id: Id.Lit_Chars val: '\tcommitter C O Mitter <committer@example.com> 1112912473 -0700\n' span_id: 1533 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1534) (Token id:Id.Lit_Chars val:'\tupdate L2\n' span_id:1535) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1536) (Token id:Id.Lit_Chars val:'\tC a g\n' span_id:1537) (Token id:Id.Lit_Chars val:'\tC a/e g/b\n' span_id:1538) (Token id:Id.Lit_Chars val:'\tM 644 :1 g/b/h\n' span_id:1539) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1540) (Token id:Id.Lit_Chars val:'\n' span_id:1541) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:1542) (Token id:Id.Lit_Chars val:'\tg/b/f\n' span_id:1543) (Token id:Id.Lit_Chars val:'\tg/b/h\n' span_id:1544) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1545) (Token id:Id.Lit_Chars val:'\n' span_id:1546) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git update-ref -d refs/heads/L2" &&\n' span_id: 1547 ) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:1548) (Token id:Id.Lit_Chars val:'\tgit ls-tree L2 g/b/ >tmp &&\n' span_id:1549) (Token id:Id.Lit_Chars val:'\tcat tmp | cut -f 2 >actual &&\n' span_id:1550) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:1551) (Token id:Id.Lit_Chars val:'\tgit fsck $(git rev-parse L2)\n' span_id:1552) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'M: rename file in same subdirectory' span_id:1569))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1573) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1574) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1575) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/M1\n' span_id:1576) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1577 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1578) (Token id:Id.Lit_Chars val:'\tfile rename\n' span_id:1579) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1580) (Token id:Id.Lit_Chars val:'\n' span_id:1581) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:1582) (Token id:Id.Lit_Chars val:'\tR file2/newf file2/n.e.w.f\n' span_id:1583) (Token id:Id.Lit_Chars val:'\n' span_id:1584) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1585) (Token id:Id.Lit_Chars val:'\n' span_id:1586) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:1587) (Token id: Id.Lit_Chars val: '\t:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc R100\tfile2/newf\tfile2/n.e.w.f\n' span_id: 1588 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1589) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:1590) (Token id:Id.Lit_Chars val:'\tgit diff-tree -M -r M1^ M1 >actual &&\n' span_id:1591) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:1592) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'M: rename file to new subdirectory' span_id:1599))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1603) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1604) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/M2\n' span_id:1605) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1606 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1607) (Token id:Id.Lit_Chars val:'\tfile rename\n' span_id:1608) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1609) (Token id:Id.Lit_Chars val:'\n' span_id:1610) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:1611) (Token id:Id.Lit_Chars val:'\tR file2/newf i/am/new/to/you\n' span_id:1612) (Token id:Id.Lit_Chars val:'\n' span_id:1613) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1614) (Token id:Id.Lit_Chars val:'\n' span_id:1615) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:1616) (Token id: Id.Lit_Chars val: '\t:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc R100\tfile2/newf\ti/am/new/to/you\n' span_id: 1617 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1618) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:1619) (Token id:Id.Lit_Chars val:'\tgit diff-tree -M -r M2^ M2 >actual &&\n' span_id:1620) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:1621) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'M: rename subdirectory to new subdirectory' span_id:1628))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1632) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1633) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/M3\n' span_id:1634) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1635 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1636) (Token id:Id.Lit_Chars val:'\tfile rename\n' span_id:1637) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1638) (Token id:Id.Lit_Chars val:'\n' span_id:1639) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/M2^0\n' span_id:1640) (Token id:Id.Lit_Chars val:'\tR i other/sub\n' span_id:1641) (Token id:Id.Lit_Chars val:'\n' span_id:1642) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1643) (Token id:Id.Lit_Chars val:'\n' span_id:1644) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:1645) (Token id: Id.Lit_Chars val: '\t:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc R100\ti/am/new/to/you\tother/sub/am/new/to/you\n' span_id: 1646 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1647) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:1648) (Token id:Id.Lit_Chars val:'\tgit diff-tree -M -r M3^ M3 >actual &&\n' span_id:1649) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:1650) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'M: rename root to subdirectory' span_id:1657))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1661) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1662) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/M4\n' span_id:1663) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1664 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1665) (Token id:Id.Lit_Chars val:'\trename root\n' span_id:1666) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1667) (Token id:Id.Lit_Chars val:'\n' span_id:1668) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/M2^0\n' span_id:1669) (Token id:Id.Lit_Chars val:'\tR "" sub\n' span_id:1670) (Token id:Id.Lit_Chars val:'\n' span_id:1671) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1672) (Token id:Id.Lit_Chars val:'\n' span_id:1673) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:1674) (Token id: Id.Lit_Chars val: '\t:100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 R100\tfile2/oldf\tsub/file2/oldf\n' span_id: 1675 ) (Token id: Id.Lit_Chars val: '\t:100755 100755 85df50785d62d3b05ab03d9cbf7e4a0b49449730 85df50785d62d3b05ab03d9cbf7e4a0b49449730 R100\tfile4\tsub/file4\n' span_id: 1676 ) (Token id: Id.Lit_Chars val: '\t:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc R100\ti/am/new/to/you\tsub/i/am/new/to/you\n' span_id: 1677 ) (Token id: Id.Lit_Chars val: '\t:100755 100755 e74b7d465e52746be2b4bae983670711e6e66657 e74b7d465e52746be2b4bae983670711e6e66657 R100\tnewdir/exec.sh\tsub/newdir/exec.sh\n' span_id: 1678 ) (Token id: Id.Lit_Chars val: '\t:100644 100644 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 R100\tnewdir/interesting\tsub/newdir/interesting\n' span_id: 1679 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1680) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:1681) (Token id:Id.Lit_Chars val:'\tgit diff-tree -M -r M4^ M4 >actual &&\n' span_id:1682) (Token id:Id.Lit_Chars val:'\tcat actual &&\n' span_id:1683) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:1684) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'N: copy file in same subdirectory' span_id:1701))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1705) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1706) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1707) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N1\n' span_id:1708) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1709 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1710) (Token id:Id.Lit_Chars val:'\tfile copy\n' span_id:1711) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1712) (Token id:Id.Lit_Chars val:'\n' span_id:1713) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:1714) (Token id:Id.Lit_Chars val:'\tC file2/newf file2/n.e.w.f\n' span_id:1715) (Token id:Id.Lit_Chars val:'\n' span_id:1716) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1717) (Token id:Id.Lit_Chars val:'\n' span_id:1718) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:1719) (Token id: Id.Lit_Chars val: '\t:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100\tfile2/newf\tfile2/n.e.w.f\n' span_id: 1720 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1721) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:1722) (Token id: Id.Lit_Chars val: '\tgit diff-tree -C --find-copies-harder -r N1^ N1 >actual &&\n' span_id: 1723 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:1724) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'N: copy then modify subdirectory' span_id:1731))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1735) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1736) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N2\n' span_id:1737) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1738 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1739) (Token id:Id.Lit_Chars val:'\tclean directory copy\n' span_id:1740) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1741) (Token id:Id.Lit_Chars val:'\n' span_id:1742) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:1743) (Token id:Id.Lit_Chars val:'\tC file2 file3\n' span_id:1744) (Token id:Id.Lit_Chars val:'\n' span_id:1745) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N2\n' span_id:1746) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1747 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1748) (Token id:Id.Lit_Chars val:'\tmodify directory copy\n' span_id:1749) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1750) (Token id:Id.Lit_Chars val:'\n' span_id:1751) (Token id:Id.Lit_Chars val:'\tM 644 inline file3/file5\n' span_id:1752) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:1753) (Token id:Id.Lit_Chars val:'\t$file5_data\n' span_id:1754) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1755) (Token id:Id.Lit_Chars val:'\n' span_id:1756) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1757) (Token id:Id.Lit_Chars val:'\n' span_id:1758) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:1759) (Token id: Id.Lit_Chars val: '\t:100644 100644 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 C100\tnewdir/interesting\tfile3/file5\n' span_id: 1760 ) (Token id: Id.Lit_Chars val: '\t:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100\tfile2/newf\tfile3/newf\n' span_id: 1761 ) (Token id: Id.Lit_Chars val: '\t:100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 C100\tfile2/oldf\tfile3/oldf\n' span_id: 1762 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1763) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:1764) (Token id: Id.Lit_Chars val: '\tgit diff-tree -C --find-copies-harder -r N2^^ N2 >actual &&\n' span_id: 1765 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:1766) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'N: copy dirty subdirectory' span_id:1773))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1777) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1778) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N3\n' span_id:1779) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1780 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1781) (Token id:Id.Lit_Chars val:'\tdirty directory copy\n' span_id:1782) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1783) (Token id:Id.Lit_Chars val:'\n' span_id:1784) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:1785) (Token id:Id.Lit_Chars val:'\tM 644 inline file2/file5\n' span_id:1786) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:1787) (Token id:Id.Lit_Chars val:'\t$file5_data\n' span_id:1788) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1789) (Token id:Id.Lit_Chars val:'\n' span_id:1790) (Token id:Id.Lit_Chars val:'\tC file2 file3\n' span_id:1791) (Token id:Id.Lit_Chars val:'\tD file2/file5\n' span_id:1792) (Token id:Id.Lit_Chars val:'\n' span_id:1793) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1794) (Token id:Id.Lit_Chars val:'\n' span_id:1795) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:1796) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse N2^{tree}) = $(git rev-parse N3^{tree})\n' span_id: 1797 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'N: copy directory by id' span_id:1804))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1808) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:1809) (Token id: Id.Lit_Chars val: '\t:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100\tfile2/newf\tfile3/newf\n' span_id: 1810 ) (Token id: Id.Lit_Chars val: '\t:100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 C100\tfile2/oldf\tfile3/oldf\n' span_id: 1811 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1812) (Token id: Id.Lit_Chars val: '\tsubdir=$(git rev-parse refs/heads/branch^0:file2) &&\n' span_id: 1813 ) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1814) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N4\n' span_id:1815) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1816 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1817) (Token id:Id.Lit_Chars val:'\tcopy by tree hash\n' span_id:1818) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1819) (Token id:Id.Lit_Chars val:'\n' span_id:1820) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:1821) (Token id:Id.Lit_Chars val:'\tM 040000 $subdir file3\n' span_id:1822) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1823) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:1824) (Token id: Id.Lit_Chars val: '\tgit diff-tree -C --find-copies-harder -r N4^ N4 >actual &&\n' span_id: 1825 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:1826) ) } ) (C {(test_expect_success)} {(PIPE)} {(SQ (Token id:Id.Lit_Chars val:'N: read and copy directory' span_id:1835))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1839) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:1840) (Token id: Id.Lit_Chars val: '\t:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100\tfile2/newf\tfile3/newf\n' span_id: 1841 ) (Token id: Id.Lit_Chars val: '\t:100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 C100\tfile2/oldf\tfile3/oldf\n' span_id: 1842 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1843) (Token id:Id.Lit_Chars val:'\tgit update-ref -d refs/heads/N4 &&\n' span_id:1844) (Token id:Id.Lit_Chars val:'\trm -f backflow &&\n' span_id:1845) (Token id:Id.Lit_Chars val:'\tmkfifo backflow &&\n' span_id:1846) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1847) (Token id:Id.Lit_Chars val:'\t\texec <backflow &&\n' span_id:1848) (Token id:Id.Lit_Chars val:'\t\tcat <<-EOF &&\n' span_id:1849) (Token id:Id.Lit_Chars val:'\t\tcommit refs/heads/N4\n' span_id:1850) (Token id: Id.Lit_Chars val: '\t\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1851 ) (Token id:Id.Lit_Chars val:'\t\tdata <<COMMIT\n' span_id:1852) (Token id:Id.Lit_Chars val:'\t\tcopy by tree hash, part 2\n' span_id:1853) (Token id:Id.Lit_Chars val:'\t\tCOMMIT\n' span_id:1854) (Token id:Id.Lit_Chars val:'\n' span_id:1855) (Token id:Id.Lit_Chars val:'\t\tfrom refs/heads/branch^0\n' span_id:1856) (Token id:Id.Lit_Chars val:'\t\tls "file2"\n' span_id:1857) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1858) (Token id:Id.Lit_Chars val:'\t\tread mode type tree filename &&\n' span_id:1859) (Token id:Id.Lit_Chars val:'\t\techo "M 040000 $tree file3"\n' span_id:1860) (Token id:Id.Lit_Chars val:'\t) |\n' span_id:1861) (Token id: Id.Lit_Chars val: '\tgit fast-import --cat-blob-fd=3 3>backflow &&\n' span_id: 1862 ) (Token id: Id.Lit_Chars val: '\tgit diff-tree -C --find-copies-harder -r N4^ N4 >actual &&\n' span_id: 1863 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:1864) ) } ) (C {(test_expect_success)} {(PIPE)} {(SQ (Token id:Id.Lit_Chars val:'N: empty directory reads as missing' span_id:1873))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1877) (Token id:Id.Lit_Chars val:'\tcat <<-\\EOF >expect &&\n' span_id:1878) (Token id:Id.Lit_Chars val:'\tOBJNAME\n' span_id:1879) (Token id: Id.Lit_Chars val: '\t:000000 100644 OBJNAME OBJNAME A\tunrelated\n' span_id: 1880 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1881) (Token id: Id.Lit_Chars val: '\techo "missing src" >expect.response &&\n' span_id: 1882 ) (Token id:Id.Lit_Chars val:'\tgit update-ref -d refs/heads/read-empty &&\n' span_id:1883) (Token id:Id.Lit_Chars val:'\trm -f backflow &&\n' span_id:1884) (Token id:Id.Lit_Chars val:'\tmkfifo backflow &&\n' span_id:1885) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1886) (Token id:Id.Lit_Chars val:'\t\texec <backflow &&\n' span_id:1887) (Token id:Id.Lit_Chars val:'\t\tcat <<-EOF &&\n' span_id:1888) (Token id:Id.Lit_Chars val:'\t\tcommit refs/heads/read-empty\n' span_id:1889) (Token id: Id.Lit_Chars val: '\t\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1890 ) (Token id:Id.Lit_Chars val:'\t\tdata <<COMMIT\n' span_id:1891) (Token id:Id.Lit_Chars val:'\t\tread "empty" (missing) directory\n' span_id:1892) (Token id:Id.Lit_Chars val:'\t\tCOMMIT\n' span_id:1893) (Token id:Id.Lit_Chars val:'\n' span_id:1894) (Token id:Id.Lit_Chars val:'\t\tM 100644 inline src/greeting\n' span_id:1895) (Token id:Id.Lit_Chars val:'\t\tdata <<BLOB\n' span_id:1896) (Token id:Id.Lit_Chars val:'\t\thello\n' span_id:1897) (Token id:Id.Lit_Chars val:'\t\tBLOB\n' span_id:1898) (Token id:Id.Lit_Chars val:'\t\tC src/greeting dst1/non-greeting\n' span_id:1899) (Token id:Id.Lit_Chars val:'\t\tC src/greeting unrelated\n' span_id:1900) (Token id: Id.Lit_Chars val: '\t\t# leave behind "empty" src directory\n' span_id: 1901 ) (Token id:Id.Lit_Chars val:'\t\tD src/greeting\n' span_id:1902) (Token id:Id.Lit_Chars val:'\t\tls "src"\n' span_id:1903) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1904) (Token id:Id.Lit_Chars val:'\t\tread -r line &&\n' span_id:1905) (Token id:Id.Lit_Chars val:'\t\tprintf "%s\\n" "$line" >response &&\n' span_id:1906) (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF\n' span_id:1907) (Token id:Id.Lit_Chars val:'\t\tD dst1\n' span_id:1908) (Token id:Id.Lit_Chars val:'\t\tD dst2\n' span_id:1909) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1910) (Token id:Id.Lit_Chars val:'\t) |\n' span_id:1911) (Token id:Id.Lit_Chars val:'\tgit fast-import --cat-blob-fd=3 3>backflow &&\n' span_id:1912) (Token id: Id.Lit_Chars val: '\ttest_cmp expect.response response &&\n' span_id: 1913 ) (Token id:Id.Lit_Chars val:'\tgit rev-list read-empty |\n' span_id:1914) (Token id:Id.Lit_Chars val:'\tgit diff-tree -r --root --stdin |\n' span_id:1915) (Token id:Id.Lit_Chars val:'\tsed "s/$_x40/OBJNAME/g" >actual &&\n' span_id:1916) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1917) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'N: copy root directory by tree hash' span_id:1924))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1928) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:1929) (Token id: Id.Lit_Chars val: '\t:100755 000000 f1fb5da718392694d0076d677d6d0e364c79b0bc 0000000000000000000000000000000000000000 D\tfile3/newf\n' span_id: 1930 ) (Token id: Id.Lit_Chars val: '\t:100644 000000 7123f7f44e39be127c5eb701e5968176ee9d78b1 0000000000000000000000000000000000000000 D\tfile3/oldf\n' span_id: 1931 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1932) (Token id: Id.Lit_Chars val: '\troot=$(git rev-parse refs/heads/branch^0^{tree}) &&\n' span_id: 1933 ) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1934) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N6\n' span_id:1935) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1936 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1937) (Token id:Id.Lit_Chars val:'\tcopy root directory by tree hash\n' span_id:1938) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1939) (Token id:Id.Lit_Chars val:'\n' span_id:1940) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:1941) (Token id:Id.Lit_Chars val:'\tM 040000 $root ""\n' span_id:1942) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1943) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:1944) (Token id: Id.Lit_Chars val: '\tgit diff-tree -C --find-copies-harder -r N4 N6 >actual &&\n' span_id: 1945 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:1946) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'N: copy root by path' span_id:1953))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1957) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:1958) (Token id: Id.Lit_Chars val: '\t:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100\tfile2/newf\toldroot/file2/newf\n' span_id: 1959 ) (Token id: Id.Lit_Chars val: '\t:100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 C100\tfile2/oldf\toldroot/file2/oldf\n' span_id: 1960 ) (Token id: Id.Lit_Chars val: '\t:100755 100755 85df50785d62d3b05ab03d9cbf7e4a0b49449730 85df50785d62d3b05ab03d9cbf7e4a0b49449730 C100\tfile4\toldroot/file4\n' span_id: 1961 ) (Token id: Id.Lit_Chars val: '\t:100755 100755 e74b7d465e52746be2b4bae983670711e6e66657 e74b7d465e52746be2b4bae983670711e6e66657 C100\tnewdir/exec.sh\toldroot/newdir/exec.sh\n' span_id: 1962 ) (Token id: Id.Lit_Chars val: '\t:100644 100644 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 C100\tnewdir/interesting\toldroot/newdir/interesting\n' span_id: 1963 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1964) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1965) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N-copy-root-path\n' span_id:1966) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1967 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:1968) (Token id: Id.Lit_Chars val: '\tcopy root directory by (empty) path\n' span_id: 1969 ) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:1970) (Token id:Id.Lit_Chars val:'\n' span_id:1971) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:1972) (Token id:Id.Lit_Chars val:'\tC "" oldroot\n' span_id:1973) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1974) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:1975) (Token id: Id.Lit_Chars val: '\tgit diff-tree -C --find-copies-harder -r branch N-copy-root-path >actual &&\n' span_id: 1976 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:1977) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'N: delete directory by copying' span_id:1984))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1988) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:1989) (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1990) (Token id: Id.Lit_Chars val: '\t:100644 000000 OBJID OBJID D\tfoo/bar/qux\n' span_id: 1991 ) (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1992) (Token id: Id.Lit_Chars val: '\t:000000 100644 OBJID OBJID A\tfoo/bar/baz\n' span_id: 1993 ) (Token id:Id.Lit_Chars val:'\t:000000 100644 OBJID OBJID A\tfoo/bar/qux\n' span_id:1994) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1995) (Token id:Id.Lit_Chars val:'\tempty_tree=$(git mktree </dev/null) &&\n' span_id:1996) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:1997) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N-delete\n' span_id:1998) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 1999 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2000) (Token id:Id.Lit_Chars val:'\tcollect data to be deleted\n' span_id:2001) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2002) (Token id:Id.Lit_Chars val:'\n' span_id:2003) (Token id:Id.Lit_Chars val:'\tdeleteall\n' span_id:2004) (Token id:Id.Lit_Chars val:'\tM 100644 inline foo/bar/baz\n' span_id:2005) (Token id:Id.Lit_Chars val:'\tdata <<DATA_END\n' span_id:2006) (Token id:Id.Lit_Chars val:'\thello\n' span_id:2007) (Token id:Id.Lit_Chars val:'\tDATA_END\n' span_id:2008) (Token id:Id.Lit_Chars val:'\tC "foo/bar/baz" "foo/bar/qux"\n' span_id:2009) (Token id:Id.Lit_Chars val:'\tC "foo/bar/baz" "foo/bar/quux/1"\n' span_id:2010) (Token id:Id.Lit_Chars val:'\tC "foo/bar/baz" "foo/bar/quuux"\n' span_id:2011) (Token id:Id.Lit_Chars val:'\tM 040000 $empty_tree foo/bar/quux\n' span_id:2012) (Token id:Id.Lit_Chars val:'\tM 040000 $empty_tree foo/bar/quuux\n' span_id:2013) (Token id:Id.Lit_Chars val:'\n' span_id:2014) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N-delete\n' span_id:2015) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2016 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2017) (Token id:Id.Lit_Chars val:'\tdelete subdirectory\n' span_id:2018) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2019) (Token id:Id.Lit_Chars val:'\n' span_id:2020) (Token id:Id.Lit_Chars val:'\tM 040000 $empty_tree foo/bar/qux\n' span_id:2021) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2022) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:2023) (Token id:Id.Lit_Chars val:'\tgit rev-list N-delete |\n' span_id:2024) (Token id: Id.Lit_Chars val: '\t\tgit diff-tree -r --stdin --root --always |\n' span_id: 2025 ) (Token id:Id.Lit_Chars val:'\t\tsed -e "s/$_x40/OBJID/g" >actual &&\n' span_id:2026) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2027) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'N: modify copied tree' span_id:2034))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2038) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:2039) (Token id: Id.Lit_Chars val: '\t:100644 100644 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 C100\tnewdir/interesting\tfile3/file5\n' span_id: 2040 ) (Token id: Id.Lit_Chars val: '\t:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100\tfile2/newf\tfile3/newf\n' span_id: 2041 ) (Token id: Id.Lit_Chars val: '\t:100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 C100\tfile2/oldf\tfile3/oldf\n' span_id: 2042 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2043) (Token id: Id.Lit_Chars val: '\tsubdir=$(git rev-parse refs/heads/branch^0:file2) &&\n' span_id: 2044 ) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:2045) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N5\n' span_id:2046) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2047 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2048) (Token id:Id.Lit_Chars val:'\tcopy by tree hash\n' span_id:2049) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2050) (Token id:Id.Lit_Chars val:'\n' span_id:2051) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:2052) (Token id:Id.Lit_Chars val:'\tM 040000 $subdir file3\n' span_id:2053) (Token id:Id.Lit_Chars val:'\n' span_id:2054) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N5\n' span_id:2055) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2056 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2057) (Token id:Id.Lit_Chars val:'\tmodify directory copy\n' span_id:2058) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2059) (Token id:Id.Lit_Chars val:'\n' span_id:2060) (Token id:Id.Lit_Chars val:'\tM 644 inline file3/file5\n' span_id:2061) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2062) (Token id:Id.Lit_Chars val:'\t$file5_data\n' span_id:2063) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2064) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2065) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:2066) (Token id: Id.Lit_Chars val: '\tgit diff-tree -C --find-copies-harder -r N5^^ N5 >actual &&\n' span_id: 2067 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:2068) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'N: reject foo/ syntax' span_id:2075))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2079) (Token id: Id.Lit_Chars val: '\tsubdir=$(git rev-parse refs/heads/branch^0:file2) &&\n' span_id: 2080 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fast-import <<-INPUT_END\n' span_id:2081) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N5B\n' span_id:2082) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2083 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2084) (Token id:Id.Lit_Chars val:'\tcopy with invalid syntax\n' span_id:2085) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2086) (Token id:Id.Lit_Chars val:'\n' span_id:2087) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:2088) (Token id:Id.Lit_Chars val:'\tM 040000 $subdir file3/\n' span_id:2089) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2090) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'N: reject foo/ syntax in copy source' span_id:2097))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2101) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import <<-INPUT_END\n' span_id: 2102 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N5C\n' span_id:2103) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2104 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2105) (Token id:Id.Lit_Chars val:'\tcopy with invalid syntax\n' span_id:2106) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2107) (Token id:Id.Lit_Chars val:'\n' span_id:2108) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:2109) (Token id:Id.Lit_Chars val:'\tC file2/ file3\n' span_id:2110) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2111) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'N: reject foo/ syntax in rename source' span_id:2118))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2122) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import <<-INPUT_END\n' span_id: 2123 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N5D\n' span_id:2124) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2125 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2126) (Token id:Id.Lit_Chars val:'\trename with invalid syntax\n' span_id:2127) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2128) (Token id:Id.Lit_Chars val:'\n' span_id:2129) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:2130) (Token id:Id.Lit_Chars val:'\tR file2/ file3\n' span_id:2131) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2132) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'N: reject foo/ syntax in ls argument' span_id:2139))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2143) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import <<-INPUT_END\n' span_id: 2144 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N5E\n' span_id:2145) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2146 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2147) (Token id:Id.Lit_Chars val:'\tcopy with invalid syntax\n' span_id:2148) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2149) (Token id:Id.Lit_Chars val:'\n' span_id:2150) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:2151) (Token id:Id.Lit_Chars val:'\tls "file2/"\n' span_id:2152) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2153) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'N: copy to root by id and modify' span_id:2160))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2164) (Token id:Id.Lit_Chars val:'\techo "hello, world" >expect.foo &&\n' span_id:2165) (Token id:Id.Lit_Chars val:'\techo hello >expect.bar &&\n' span_id:2166) (Token id:Id.Lit_Chars val:'\tgit fast-import <<-SETUP_END &&\n' span_id:2167) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N7\n' span_id:2168) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2169 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2170) (Token id:Id.Lit_Chars val:'\thello, tree\n' span_id:2171) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2172) (Token id:Id.Lit_Chars val:'\n' span_id:2173) (Token id:Id.Lit_Chars val:'\tdeleteall\n' span_id:2174) (Token id:Id.Lit_Chars val:'\tM 644 inline foo/bar\n' span_id:2175) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2176) (Token id:Id.Lit_Chars val:'\thello\n' span_id:2177) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2178) (Token id:Id.Lit_Chars val:'\tSETUP_END\n' span_id:2179) (Token id:Id.Lit_Chars val:'\n' span_id:2180) (Token id: Id.Lit_Chars val: '\ttree=$(git rev-parse --verify N7:) &&\n' span_id: 2181 ) (Token id:Id.Lit_Chars val:'\tgit fast-import <<-INPUT_END &&\n' span_id:2182) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N8\n' span_id:2183) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2184 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2185) (Token id:Id.Lit_Chars val:'\tcopy to root by id and modify\n' span_id:2186) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2187) (Token id:Id.Lit_Chars val:'\n' span_id:2188) (Token id:Id.Lit_Chars val:'\tM 040000 $tree ""\n' span_id:2189) (Token id:Id.Lit_Chars val:'\tM 644 inline foo/foo\n' span_id:2190) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2191) (Token id:Id.Lit_Chars val:'\thello, world\n' span_id:2192) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2193) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2194) (Token id:Id.Lit_Chars val:'\tgit show N8:foo/foo >actual.foo &&\n' span_id:2195) (Token id:Id.Lit_Chars val:'\tgit show N8:foo/bar >actual.bar &&\n' span_id:2196) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.foo actual.foo &&\n' span_id:2197) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.bar actual.bar\n' span_id:2198) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'N: extract subtree' span_id:2205))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2209) (Token id: Id.Lit_Chars val: '\tbranch=$(git rev-parse --verify refs/heads/branch^{tree}) &&\n' span_id: 2210 ) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:2211) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N9\n' span_id:2212) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2213 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2214) (Token id:Id.Lit_Chars val:'\textract subtree branch:newdir\n' span_id:2215) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2216) (Token id:Id.Lit_Chars val:'\n' span_id:2217) (Token id:Id.Lit_Chars val:'\tM 040000 $branch ""\n' span_id:2218) (Token id:Id.Lit_Chars val:'\tC "newdir" ""\n' span_id:2219) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2220) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:2221) (Token id: Id.Lit_Chars val: '\tgit diff --exit-code branch:newdir N9\n' span_id: 2222 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'N: modify subtree, extract it, and modify again' span_id: 2229 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2233) (Token id:Id.Lit_Chars val:'\techo hello >expect.baz &&\n' span_id:2234) (Token id:Id.Lit_Chars val:'\techo hello, world >expect.qux &&\n' span_id:2235) (Token id:Id.Lit_Chars val:'\tgit fast-import <<-SETUP_END &&\n' span_id:2236) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N10\n' span_id:2237) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2238 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2239) (Token id:Id.Lit_Chars val:'\thello, tree\n' span_id:2240) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2241) (Token id:Id.Lit_Chars val:'\n' span_id:2242) (Token id:Id.Lit_Chars val:'\tdeleteall\n' span_id:2243) (Token id:Id.Lit_Chars val:'\tM 644 inline foo/bar/baz\n' span_id:2244) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2245) (Token id:Id.Lit_Chars val:'\thello\n' span_id:2246) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2247) (Token id:Id.Lit_Chars val:'\tSETUP_END\n' span_id:2248) (Token id:Id.Lit_Chars val:'\n' span_id:2249) (Token id: Id.Lit_Chars val: '\ttree=$(git rev-parse --verify N10:) &&\n' span_id: 2250 ) (Token id:Id.Lit_Chars val:'\tgit fast-import <<-INPUT_END &&\n' span_id:2251) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/N11\n' span_id:2252) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2253 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2254) (Token id:Id.Lit_Chars val:'\tcopy to root by id and modify\n' span_id:2255) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2256) (Token id:Id.Lit_Chars val:'\n' span_id:2257) (Token id:Id.Lit_Chars val:'\tM 040000 $tree ""\n' span_id:2258) (Token id:Id.Lit_Chars val:'\tM 100644 inline foo/bar/qux\n' span_id:2259) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2260) (Token id:Id.Lit_Chars val:'\thello, world\n' span_id:2261) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2262) (Token id:Id.Lit_Chars val:'\tR "foo" ""\n' span_id:2263) (Token id:Id.Lit_Chars val:'\tC "bar/qux" "bar/quux"\n' span_id:2264) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2265) (Token id: Id.Lit_Chars val: '\tgit show N11:bar/baz >actual.baz &&\n' span_id: 2266 ) (Token id:Id.Lit_Chars val:'\tgit show N11:bar/qux >actual.qux &&\n' span_id:2267) (Token id: Id.Lit_Chars val: '\tgit show N11:bar/quux >actual.quux &&\n' span_id: 2268 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.baz actual.baz &&\n' span_id:2269) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.qux actual.qux &&\n' span_id:2270) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.qux actual.quux' span_id:2271) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'O: comments are all skipped' span_id:2288))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2292) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:2293) (Token id:Id.Lit_Chars val:'\t#we will\n' span_id:2294) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/O1\n' span_id:2295) (Token id:Id.Lit_Chars val:'\t# -- ignore all of this text\n' span_id:2296) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2297 ) (Token id: Id.Lit_Chars val: '\t# $GIT_COMMITTER_NAME has inserted here for his benefit.\n' span_id: 2298 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2299) (Token id:Id.Lit_Chars val:'\tdirty directory copy\n' span_id:2300) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2301) (Token id:Id.Lit_Chars val:'\n' span_id:2302) (Token id: Id.Lit_Chars val: '\t# do not forget the import blank line!\n' span_id: 2303 ) (Token id:Id.Lit_Chars val:'\t#\n' span_id:2304) (Token id: Id.Lit_Chars val: '\t# yes, we started from our usual base of branch^0.\n' span_id: 2305 ) (Token id:Id.Lit_Chars val:'\t# i like branch^0.\n' span_id:2306) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:2307) (Token id:Id.Lit_Chars val:'\t# and we need to reuse file2/file5 from N3 above.\n' span_id:2308) (Token id:Id.Lit_Chars val:'\tM 644 inline file2/file5\n' span_id:2309) (Token id:Id.Lit_Chars val:'\t# otherwise the tree will be different\n' span_id:2310) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2311) (Token id:Id.Lit_Chars val:'\t$file5_data\n' span_id:2312) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2313) (Token id:Id.Lit_Chars val:'\n' span_id:2314) (Token id: Id.Lit_Chars val: '\t# do not forget to copy file2 to file3\n' span_id: 2315 ) (Token id:Id.Lit_Chars val:'\tC file2 file3\n' span_id:2316) (Token id:Id.Lit_Chars val:'\t#\n' span_id:2317) (Token id:Id.Lit_Chars val:'\t# or to delete file5 from file2.\n' span_id:2318) (Token id:Id.Lit_Chars val:'\tD file2/file5\n' span_id:2319) (Token id:Id.Lit_Chars val:'\t# are we done yet?\n' span_id:2320) (Token id:Id.Lit_Chars val:'\n' span_id:2321) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2322) (Token id:Id.Lit_Chars val:'\n' span_id:2323) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:2324) (Token id:Id.Lit_Chars val:'\ttest $(git rev-parse N3) = $(git rev-parse O1)\n' span_id:2325) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'O: blank lines not necessary after data commands' span_id: 2332 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2336) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:2337) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/O2\n' span_id:2338) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2339 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2340) (Token id:Id.Lit_Chars val:'\tdirty directory copy\n' span_id:2341) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2342) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/branch^0\n' span_id:2343) (Token id:Id.Lit_Chars val:'\tM 644 inline file2/file5\n' span_id:2344) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2345) (Token id:Id.Lit_Chars val:'\t$file5_data\n' span_id:2346) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2347) (Token id:Id.Lit_Chars val:'\tC file2 file3\n' span_id:2348) (Token id:Id.Lit_Chars val:'\tD file2/file5\n' span_id:2349) (Token id:Id.Lit_Chars val:'\n' span_id:2350) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2351) (Token id:Id.Lit_Chars val:'\n' span_id:2352) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:2353) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse N3) = $(git rev-parse O2)\n' span_id: 2354 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'O: repack before next test' span_id:2361))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2365) (Token id:Id.Lit_Chars val:'\tgit repack -a -d\n' span_id:2366) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'O: blank lines not necessary after other commands' span_id: 2373 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2377) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:2378) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/O3\n' span_id:2379) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2380 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2381) (Token id:Id.Lit_Chars val:'\tzstring\n' span_id:2382) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2383) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/O3\n' span_id:2384) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2385 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2386) (Token id:Id.Lit_Chars val:'\tzof\n' span_id:2387) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2388) (Token id:Id.Lit_Chars val:'\tcheckpoint\n' span_id:2389) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/O3\n' span_id:2390) (Token id:Id.Lit_Chars val:'\tmark :5\n' span_id:2391) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2392 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2393) (Token id:Id.Lit_Chars val:'\tzempty\n' span_id:2394) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2395) (Token id:Id.Lit_Chars val:'\tcheckpoint\n' span_id:2396) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/O3\n' span_id:2397) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2398 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2399) (Token id:Id.Lit_Chars val:'\tzcommits\n' span_id:2400) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2401) (Token id:Id.Lit_Chars val:'\treset refs/tags/O3-2nd\n' span_id:2402) (Token id:Id.Lit_Chars val:'\tfrom :5\n' span_id:2403) (Token id:Id.Lit_Chars val:'\treset refs/tags/O3-3rd\n' span_id:2404) (Token id:Id.Lit_Chars val:'\tfrom :5\n' span_id:2405) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2406) (Token id:Id.Lit_Chars val:'\n' span_id:2407) (Token id:Id.Lit_Chars val:'\tcat >expect <<-INPUT_END &&\n' span_id:2408) (Token id:Id.Lit_Chars val:'\tstring\n' span_id:2409) (Token id:Id.Lit_Chars val:'\tof\n' span_id:2410) (Token id:Id.Lit_Chars val:'\tempty\n' span_id:2411) (Token id:Id.Lit_Chars val:'\tcommits\n' span_id:2412) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2413) (Token id:Id.Lit_Chars val:'\n' span_id:2414) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:2415) (Token id:Id.Lit_Chars val:'\ttest 8 = $(find .git/objects/pack -type f | wc -l) &&\n' span_id:2416) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse refs/tags/O3-2nd) = $(git rev-parse O3^) &&\n' span_id: 2417 ) (Token id: Id.Lit_Chars val: '\tgit log --reverse --pretty=oneline O3 | sed s/^.*z// >actual &&\n' span_id: 2418 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2419) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'O: progress outputs as requested by input' span_id:2426))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2430) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:2431) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/O4\n' span_id:2432) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2433 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2434) (Token id:Id.Lit_Chars val:'\tzstring\n' span_id:2435) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2436) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/O4\n' span_id:2437) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2438 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2439) (Token id:Id.Lit_Chars val:'\tzof\n' span_id:2440) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2441) (Token id: Id.Lit_Chars val: '\tprogress Two commits down, 2 to go!\n' span_id: 2442 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/O4\n' span_id:2443) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2444 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2445) (Token id:Id.Lit_Chars val:'\tzempty\n' span_id:2446) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2447) (Token id: Id.Lit_Chars val: '\tprogress Three commits down, 1 to go!\n' span_id: 2448 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/O4\n' span_id:2449) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2450 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2451) (Token id:Id.Lit_Chars val:'\tzcommits\n' span_id:2452) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2453) (Token id:Id.Lit_Chars val:'\tprogress done!\n' span_id:2454) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2455) (Token id:Id.Lit_Chars val:'\tgit fast-import <input >actual &&\n' span_id:2456) (Token id:Id.Lit_Chars val:'\tgrep "progress " <input >expect &&\n' span_id:2457) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2458) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'P: superproject & submodule mix' span_id:2475))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2479) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:2480) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:2481) (Token id:Id.Lit_Chars val:'\tmark :1\n' span_id:2482) (Token id:Id.Lit_Chars val:'\tdata 10\n' span_id:2483) (Token id:Id.Lit_Chars val:'\ttest file\n' span_id:2484) (Token id:Id.Lit_Chars val:'\n' span_id:2485) (Token id:Id.Lit_Chars val:'\treset refs/heads/sub\n' span_id:2486) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/sub\n' span_id:2487) (Token id:Id.Lit_Chars val:'\tmark :2\n' span_id:2488) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2489 ) (Token id:Id.Lit_Chars val:'\tdata 12\n' span_id:2490) (Token id:Id.Lit_Chars val:'\tsub_initial\n' span_id:2491) (Token id:Id.Lit_Chars val:'\tM 100644 :1 file\n' span_id:2492) (Token id:Id.Lit_Chars val:'\n' span_id:2493) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:2494) (Token id:Id.Lit_Chars val:'\tmark :3\n' span_id:2495) (Token id:Id.Lit_Chars val:'\tdata <<DATAEND\n' span_id:2496) (Token id:Id.Lit_Chars val:'\t[submodule "sub"]\n' span_id:2497) (Token id:Id.Lit_Chars val:'\t\tpath = sub\n' span_id:2498) (Token id:Id.Lit_Chars val:'\t\turl = "$(pwd)/sub"\n' span_id:2499) (Token id:Id.Lit_Chars val:'\tDATAEND\n' span_id:2500) (Token id:Id.Lit_Chars val:'\n' span_id:2501) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/subuse1\n' span_id:2502) (Token id:Id.Lit_Chars val:'\tmark :4\n' span_id:2503) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2504 ) (Token id:Id.Lit_Chars val:'\tdata 8\n' span_id:2505) (Token id:Id.Lit_Chars val:'\tinitial\n' span_id:2506) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/master\n' span_id:2507) (Token id:Id.Lit_Chars val:'\tM 100644 :3 .gitmodules\n' span_id:2508) (Token id:Id.Lit_Chars val:'\tM 160000 :2 sub\n' span_id:2509) (Token id:Id.Lit_Chars val:'\n' span_id:2510) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:2511) (Token id:Id.Lit_Chars val:'\tmark :5\n' span_id:2512) (Token id:Id.Lit_Chars val:'\tdata 20\n' span_id:2513) (Token id:Id.Lit_Chars val:'\ttest file\n' span_id:2514) (Token id:Id.Lit_Chars val:'\tmore data\n' span_id:2515) (Token id:Id.Lit_Chars val:'\n' span_id:2516) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/sub\n' span_id:2517) (Token id:Id.Lit_Chars val:'\tmark :6\n' span_id:2518) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2519 ) (Token id:Id.Lit_Chars val:'\tdata 11\n' span_id:2520) (Token id:Id.Lit_Chars val:'\tsub_second\n' span_id:2521) (Token id:Id.Lit_Chars val:'\tfrom :2\n' span_id:2522) (Token id:Id.Lit_Chars val:'\tM 100644 :5 file\n' span_id:2523) (Token id:Id.Lit_Chars val:'\n' span_id:2524) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/subuse1\n' span_id:2525) (Token id:Id.Lit_Chars val:'\tmark :7\n' span_id:2526) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2527 ) (Token id:Id.Lit_Chars val:'\tdata 7\n' span_id:2528) (Token id:Id.Lit_Chars val:'\tsecond\n' span_id:2529) (Token id:Id.Lit_Chars val:'\tfrom :4\n' span_id:2530) (Token id:Id.Lit_Chars val:'\tM 160000 :6 sub\n' span_id:2531) (Token id:Id.Lit_Chars val:'\n' span_id:2532) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2533) (Token id:Id.Lit_Chars val:'\n' span_id:2534) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:2535) (Token id:Id.Lit_Chars val:'\tgit checkout subuse1 &&\n' span_id:2536) (Token id:Id.Lit_Chars val:'\trm -rf sub &&\n' span_id:2537) (Token id:Id.Lit_Chars val:'\tmkdir sub &&\n' span_id:2538) (Token id:Id.Lit_Chars val:'\t(\n' span_id:2539) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:2540) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:2541) (Token id: Id.Lit_Chars val: '\t\tgit fetch --update-head-ok .. refs/heads/sub:refs/heads/master &&\n' span_id: 2542 ) (Token id:Id.Lit_Chars val:'\t\tgit checkout master\n' span_id:2543) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:2544) (Token id:Id.Lit_Chars val:'\tgit submodule init &&\n' span_id:2545) (Token id:Id.Lit_Chars val:'\tgit submodule update\n' span_id:2546) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'P: verbatim SHA gitlinks' span_id:2553))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2557) (Token id: Id.Lit_Chars val: '\tSUBLAST=$(git rev-parse --verify sub) &&\n' span_id: 2558 ) (Token id:Id.Lit_Chars val:'\tSUBPREV=$(git rev-parse --verify sub^) &&\n' span_id:2559) (Token id:Id.Lit_Chars val:'\n' span_id:2560) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:2561) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:2562) (Token id:Id.Lit_Chars val:'\tmark :1\n' span_id:2563) (Token id:Id.Lit_Chars val:'\tdata <<DATAEND\n' span_id:2564) (Token id:Id.Lit_Chars val:'\t[submodule "sub"]\n' span_id:2565) (Token id:Id.Lit_Chars val:'\t\tpath = sub\n' span_id:2566) (Token id:Id.Lit_Chars val:'\t\turl = "$(pwd)/sub"\n' span_id:2567) (Token id:Id.Lit_Chars val:'\tDATAEND\n' span_id:2568) (Token id:Id.Lit_Chars val:'\n' span_id:2569) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/subuse2\n' span_id:2570) (Token id:Id.Lit_Chars val:'\tmark :2\n' span_id:2571) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2572 ) (Token id:Id.Lit_Chars val:'\tdata 8\n' span_id:2573) (Token id:Id.Lit_Chars val:'\tinitial\n' span_id:2574) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/master\n' span_id:2575) (Token id:Id.Lit_Chars val:'\tM 100644 :1 .gitmodules\n' span_id:2576) (Token id:Id.Lit_Chars val:'\tM 160000 $SUBPREV sub\n' span_id:2577) (Token id:Id.Lit_Chars val:'\n' span_id:2578) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/subuse2\n' span_id:2579) (Token id:Id.Lit_Chars val:'\tmark :3\n' span_id:2580) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2581 ) (Token id:Id.Lit_Chars val:'\tdata 7\n' span_id:2582) (Token id:Id.Lit_Chars val:'\tsecond\n' span_id:2583) (Token id:Id.Lit_Chars val:'\tfrom :2\n' span_id:2584) (Token id:Id.Lit_Chars val:'\tM 160000 $SUBLAST sub\n' span_id:2585) (Token id:Id.Lit_Chars val:'\n' span_id:2586) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2587) (Token id:Id.Lit_Chars val:'\n' span_id:2588) (Token id:Id.Lit_Chars val:'\tgit branch -D sub &&\n' span_id:2589) (Token id:Id.Lit_Chars val:'\tgit gc &&\n' span_id:2590) (Token id:Id.Lit_Chars val:'\tgit prune &&\n' span_id:2591) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:2592) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse --verify subuse2) = $(git rev-parse --verify subuse1)\n' span_id: 2593 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'P: fail on inline gitlink' span_id:2600))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2604) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:2605) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:2606) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/subuse3\n' span_id:2607) (Token id:Id.Lit_Chars val:'\tmark :1\n' span_id:2608) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2609 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2610) (Token id:Id.Lit_Chars val:'\tcorrupt\n' span_id:2611) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2612) (Token id:Id.Lit_Chars val:'\n' span_id:2613) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/subuse2\n' span_id:2614) (Token id:Id.Lit_Chars val:'\tM 160000 inline sub\n' span_id:2615) (Token id:Id.Lit_Chars val:'\tdata <<DATA\n' span_id:2616) (Token id:Id.Lit_Chars val:'\t$SUBPREV\n' span_id:2617) (Token id:Id.Lit_Chars val:'\tDATA\n' span_id:2618) (Token id:Id.Lit_Chars val:'\n' span_id:2619) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2620) (Token id:Id.Lit_Chars val:'\n' span_id:2621) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fast-import <input\n' span_id:2622) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'P: fail on blob mark in gitlink' span_id:2629))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2633) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:2634) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:2635) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:2636) (Token id:Id.Lit_Chars val:'\tmark :1\n' span_id:2637) (Token id:Id.Lit_Chars val:'\tdata <<DATA\n' span_id:2638) (Token id:Id.Lit_Chars val:'\t$SUBPREV\n' span_id:2639) (Token id:Id.Lit_Chars val:'\tDATA\n' span_id:2640) (Token id:Id.Lit_Chars val:'\n' span_id:2641) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/subuse3\n' span_id:2642) (Token id:Id.Lit_Chars val:'\tmark :2\n' span_id:2643) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2644 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2645) (Token id:Id.Lit_Chars val:'\tcorrupt\n' span_id:2646) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2647) (Token id:Id.Lit_Chars val:'\n' span_id:2648) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/subuse2\n' span_id:2649) (Token id:Id.Lit_Chars val:'\tM 160000 :1 sub\n' span_id:2650) (Token id:Id.Lit_Chars val:'\n' span_id:2651) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2652) (Token id:Id.Lit_Chars val:'\n' span_id:2653) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import <input\n' span_id: 2654 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: commit notes' span_id:2671))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2675) (Token id: Id.Lit_Chars val: '\tnote1_data="The first note for the first commit" &&\n' span_id: 2676 ) (Token id:Id.Lit_Chars val:'\tnote2_data="The first note for the second commit" &&\n' span_id:2677) (Token id: Id.Lit_Chars val: '\tnote3_data="The first note for the third commit" &&\n' span_id: 2678 ) (Token id:Id.Lit_Chars val:'\tnote1b_data="The second note for the first commit" &&\n' span_id:2679) (Token id: Id.Lit_Chars val: '\tnote1c_data="The third note for the first commit" &&\n' span_id: 2680 ) (Token id:Id.Lit_Chars val:'\tnote2b_data="The second note for the second commit" &&\n' span_id:2681) (Token id:Id.Lit_Chars val:'\n' span_id:2682) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:2683) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:2684) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:2685) (Token id:Id.Lit_Chars val:'\tmark :2\n' span_id:2686) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2687) (Token id:Id.Lit_Chars val:'\t$file2_data\n' span_id:2688) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2689) (Token id:Id.Lit_Chars val:'\n' span_id:2690) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/notes-test\n' span_id:2691) (Token id:Id.Lit_Chars val:'\tmark :3\n' span_id:2692) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2693 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2694) (Token id:Id.Lit_Chars val:'\tfirst (:3)\n' span_id:2695) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2696) (Token id:Id.Lit_Chars val:'\n' span_id:2697) (Token id:Id.Lit_Chars val:'\tM 644 :2 file2\n' span_id:2698) (Token id:Id.Lit_Chars val:'\n' span_id:2699) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:2700) (Token id:Id.Lit_Chars val:'\tmark :4\n' span_id:2701) (Token id:Id.Lit_Chars val:'\tdata $file4_len\n' span_id:2702) (Token id:Id.Lit_Chars val:'\t$file4_data\n' span_id:2703) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/notes-test\n' span_id:2704) (Token id:Id.Lit_Chars val:'\tmark :5\n' span_id:2705) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2706 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2707) (Token id:Id.Lit_Chars val:'\tsecond (:5)\n' span_id:2708) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2709) (Token id:Id.Lit_Chars val:'\n' span_id:2710) (Token id:Id.Lit_Chars val:'\tM 644 :4 file4\n' span_id:2711) (Token id:Id.Lit_Chars val:'\n' span_id:2712) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/notes-test\n' span_id:2713) (Token id:Id.Lit_Chars val:'\tmark :6\n' span_id:2714) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2715 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2716) (Token id:Id.Lit_Chars val:'\tthird (:6)\n' span_id:2717) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2718) (Token id:Id.Lit_Chars val:'\n' span_id:2719) (Token id:Id.Lit_Chars val:'\tM 644 inline file5\n' span_id:2720) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2721) (Token id:Id.Lit_Chars val:'\t$file5_data\n' span_id:2722) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2723) (Token id:Id.Lit_Chars val:'\n' span_id:2724) (Token id:Id.Lit_Chars val:'\tM 755 inline file6\n' span_id:2725) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2726) (Token id:Id.Lit_Chars val:'\t$file6_data\n' span_id:2727) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2728) (Token id:Id.Lit_Chars val:'\n' span_id:2729) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:2730) (Token id:Id.Lit_Chars val:'\tmark :7\n' span_id:2731) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2732) (Token id:Id.Lit_Chars val:'\t$note1_data\n' span_id:2733) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2734) (Token id:Id.Lit_Chars val:'\n' span_id:2735) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:2736) (Token id:Id.Lit_Chars val:'\tmark :8\n' span_id:2737) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2738) (Token id:Id.Lit_Chars val:'\t$note2_data\n' span_id:2739) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2740) (Token id:Id.Lit_Chars val:'\n' span_id:2741) (Token id:Id.Lit_Chars val:'\tcommit refs/notes/foobar\n' span_id:2742) (Token id:Id.Lit_Chars val:'\tmark :9\n' span_id:2743) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2744 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2745) (Token id:Id.Lit_Chars val:'\tnotes (:9)\n' span_id:2746) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2747) (Token id:Id.Lit_Chars val:'\n' span_id:2748) (Token id:Id.Lit_Chars val:'\tN :7 :3\n' span_id:2749) (Token id:Id.Lit_Chars val:'\tN :8 :5\n' span_id:2750) (Token id:Id.Lit_Chars val:'\tN inline :6\n' span_id:2751) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2752) (Token id:Id.Lit_Chars val:'\t$note3_data\n' span_id:2753) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2754) (Token id:Id.Lit_Chars val:'\n' span_id:2755) (Token id:Id.Lit_Chars val:'\tcommit refs/notes/foobar\n' span_id:2756) (Token id:Id.Lit_Chars val:'\tmark :10\n' span_id:2757) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2758 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2759) (Token id:Id.Lit_Chars val:'\tnotes (:10)\n' span_id:2760) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2761) (Token id:Id.Lit_Chars val:'\n' span_id:2762) (Token id:Id.Lit_Chars val:'\tN inline :3\n' span_id:2763) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2764) (Token id:Id.Lit_Chars val:'\t$note1b_data\n' span_id:2765) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2766) (Token id:Id.Lit_Chars val:'\n' span_id:2767) (Token id:Id.Lit_Chars val:'\tcommit refs/notes/foobar2\n' span_id:2768) (Token id:Id.Lit_Chars val:'\tmark :11\n' span_id:2769) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2770 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2771) (Token id:Id.Lit_Chars val:'\tnotes (:11)\n' span_id:2772) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2773) (Token id:Id.Lit_Chars val:'\n' span_id:2774) (Token id:Id.Lit_Chars val:'\tN inline :3\n' span_id:2775) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2776) (Token id:Id.Lit_Chars val:'\t$note1c_data\n' span_id:2777) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2778) (Token id:Id.Lit_Chars val:'\n' span_id:2779) (Token id:Id.Lit_Chars val:'\tcommit refs/notes/foobar\n' span_id:2780) (Token id:Id.Lit_Chars val:'\tmark :12\n' span_id:2781) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2782 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:2783) (Token id:Id.Lit_Chars val:'\tnotes (:12)\n' span_id:2784) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:2785) (Token id:Id.Lit_Chars val:'\n' span_id:2786) (Token id:Id.Lit_Chars val:'\tdeleteall\n' span_id:2787) (Token id:Id.Lit_Chars val:'\tN inline :5\n' span_id:2788) (Token id:Id.Lit_Chars val:'\tdata <<EOF\n' span_id:2789) (Token id:Id.Lit_Chars val:'\t$note2b_data\n' span_id:2790) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2791) (Token id:Id.Lit_Chars val:'\n' span_id:2792) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:2793) (Token id:Id.Lit_Chars val:'\n' span_id:2794) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:2795) (Token id:Id.Lit_Chars val:'\tgit whatchanged notes-test\n' span_id:2796) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify pack' span_id:2803))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2807) (Token id:Id.Lit_Chars val:'\tverify_packs\n' span_id:2808) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify first commit' span_id:2815))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2819) (Token id: Id.Lit_Chars val: '\tcommit1=$(git rev-parse notes-test~2) &&\n' span_id: 2820 ) (Token id:Id.Lit_Chars val:'\tcommit2=$(git rev-parse notes-test^) &&\n' span_id:2821) (Token id: Id.Lit_Chars val: '\tcommit3=$(git rev-parse notes-test) &&\n' span_id: 2822 ) (Token id:Id.Lit_Chars val:'\n' span_id:2823) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:2824) (Token id: Id.Lit_Chars val: '\tauthor $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2825 ) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2826 ) (Token id:Id.Lit_Chars val:'\n' span_id:2827) (Token id:Id.Lit_Chars val:'\tfirst (:3)\n' span_id:2828) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2829) (Token id: Id.Lit_Chars val: '\tgit cat-file commit notes-test~2 | sed 1d >actual &&\n' span_id: 2830 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2831) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify second commit' span_id:2838))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2842) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:2843) (Token id:Id.Lit_Chars val:'\tparent $commit1\n' span_id:2844) (Token id: Id.Lit_Chars val: '\tauthor $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2845 ) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2846 ) (Token id:Id.Lit_Chars val:'\n' span_id:2847) (Token id:Id.Lit_Chars val:'\tsecond (:5)\n' span_id:2848) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2849) (Token id: Id.Lit_Chars val: '\tgit cat-file commit notes-test^ | sed 1d >actual &&\n' span_id: 2850 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2851) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify third commit' span_id:2858))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2862) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:2863) (Token id:Id.Lit_Chars val:'\tparent $commit2\n' span_id:2864) (Token id: Id.Lit_Chars val: '\tauthor $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2865 ) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2866 ) (Token id:Id.Lit_Chars val:'\n' span_id:2867) (Token id:Id.Lit_Chars val:'\tthird (:6)\n' span_id:2868) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2869) (Token id: Id.Lit_Chars val: '\tgit cat-file commit notes-test | sed 1d >actual &&\n' span_id: 2870 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2871) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify first notes commit' span_id:2878))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2882) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:2883) (Token id: Id.Lit_Chars val: '\tauthor $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2884 ) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2885 ) (Token id:Id.Lit_Chars val:'\n' span_id:2886) (Token id:Id.Lit_Chars val:'\tnotes (:9)\n' span_id:2887) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2888) (Token id: Id.Lit_Chars val: '\tgit cat-file commit refs/notes/foobar~2 | sed 1d >actual &&\n' span_id: 2889 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2890) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify first notes tree' span_id:2897))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2901) (Token id:Id.Lit_Chars val:'\tcat >expect.unsorted <<-EOF &&\n' span_id:2902) (Token id:Id.Lit_Chars val:'\t100644 blob $commit1\n' span_id:2903) (Token id:Id.Lit_Chars val:'\t100644 blob $commit2\n' span_id:2904) (Token id:Id.Lit_Chars val:'\t100644 blob $commit3\n' span_id:2905) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2906) (Token id:Id.Lit_Chars val:'\tcat expect.unsorted | sort >expect &&\n' span_id:2907) (Token id: Id.Lit_Chars val: '\tgit cat-file -p refs/notes/foobar~2^{tree} | sed "s/ [0-9a-f]*\t/ /" >actual &&\n' span_id: 2908 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2909) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify first note for first commit' span_id:2916))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2920) (Token id:Id.Lit_Chars val:'\techo "$note1_data" >expect &&\n' span_id:2921) (Token id: Id.Lit_Chars val: '\tgit cat-file blob refs/notes/foobar~2:$commit1 >actual &&\n' span_id: 2922 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2923) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify first note for second commit' span_id:2930))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2934) (Token id:Id.Lit_Chars val:'\techo "$note2_data" >expect &&\n' span_id:2935) (Token id: Id.Lit_Chars val: '\tgit cat-file blob refs/notes/foobar~2:$commit2 >actual &&\n' span_id: 2936 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2937) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify first note for third commit' span_id:2944))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2948) (Token id:Id.Lit_Chars val:'\techo "$note3_data" >expect &&\n' span_id:2949) (Token id: Id.Lit_Chars val: '\tgit cat-file blob refs/notes/foobar~2:$commit3 >actual &&\n' span_id: 2950 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2951) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify second notes commit' span_id:2958))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2962) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:2963) (Token id:Id.Lit_Chars val:'\tparent $(git rev-parse --verify refs/notes/foobar~2)\n' span_id:2964) (Token id: Id.Lit_Chars val: '\tauthor $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2965 ) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 2966 ) (Token id:Id.Lit_Chars val:'\n' span_id:2967) (Token id:Id.Lit_Chars val:'\tnotes (:10)\n' span_id:2968) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2969) (Token id: Id.Lit_Chars val: '\tgit cat-file commit refs/notes/foobar^ | sed 1d >actual &&\n' span_id: 2970 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2971) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify second notes tree' span_id:2978))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2982) (Token id:Id.Lit_Chars val:'\tcat >expect.unsorted <<-EOF &&\n' span_id:2983) (Token id:Id.Lit_Chars val:'\t100644 blob $commit1\n' span_id:2984) (Token id:Id.Lit_Chars val:'\t100644 blob $commit2\n' span_id:2985) (Token id:Id.Lit_Chars val:'\t100644 blob $commit3\n' span_id:2986) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2987) (Token id:Id.Lit_Chars val:'\tcat expect.unsorted | sort >expect &&\n' span_id:2988) (Token id: Id.Lit_Chars val: '\tgit cat-file -p refs/notes/foobar^^{tree} | sed "s/ [0-9a-f]*\t/ /" >actual &&\n' span_id: 2989 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2990) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify second note for first commit' span_id:2997))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3001) (Token id:Id.Lit_Chars val:'\techo "$note1b_data" >expect &&\n' span_id:3002) (Token id: Id.Lit_Chars val: '\tgit cat-file blob refs/notes/foobar^:$commit1 >actual &&\n' span_id: 3003 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3004) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify first note for second commit' span_id:3011))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3015) (Token id:Id.Lit_Chars val:'\techo "$note2_data" >expect &&\n' span_id:3016) (Token id: Id.Lit_Chars val: '\tgit cat-file blob refs/notes/foobar^:$commit2 >actual &&\n' span_id: 3017 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3018) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify first note for third commit' span_id:3025))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3029) (Token id:Id.Lit_Chars val:'\techo "$note3_data" >expect &&\n' span_id:3030) (Token id: Id.Lit_Chars val: '\tgit cat-file blob refs/notes/foobar^:$commit3 >actual &&\n' span_id: 3031 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3032) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify third notes commit' span_id:3039))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3043) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:3044) (Token id: Id.Lit_Chars val: '\tauthor $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 3045 ) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 3046 ) (Token id:Id.Lit_Chars val:'\n' span_id:3047) (Token id:Id.Lit_Chars val:'\tnotes (:11)\n' span_id:3048) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3049) (Token id: Id.Lit_Chars val: '\tgit cat-file commit refs/notes/foobar2 | sed 1d >actual &&\n' span_id: 3050 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3051) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify third notes tree' span_id:3058))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3062) (Token id:Id.Lit_Chars val:'\tcat >expect.unsorted <<-EOF &&\n' span_id:3063) (Token id:Id.Lit_Chars val:'\t100644 blob $commit1\n' span_id:3064) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3065) (Token id:Id.Lit_Chars val:'\tcat expect.unsorted | sort >expect &&\n' span_id:3066) (Token id: Id.Lit_Chars val: '\tgit cat-file -p refs/notes/foobar2^{tree} | sed "s/ [0-9a-f]*\t/ /" >actual &&\n' span_id: 3067 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3068) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify third note for first commit' span_id:3075))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3079) (Token id:Id.Lit_Chars val:'\techo "$note1c_data" >expect &&\n' span_id:3080) (Token id: Id.Lit_Chars val: '\tgit cat-file blob refs/notes/foobar2:$commit1 >actual &&\n' span_id: 3081 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3082) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify fourth notes commit' span_id:3089))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3093) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:3094) (Token id:Id.Lit_Chars val:'\tparent $(git rev-parse --verify refs/notes/foobar^)\n' span_id:3095) (Token id: Id.Lit_Chars val: '\tauthor $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 3096 ) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 3097 ) (Token id:Id.Lit_Chars val:'\n' span_id:3098) (Token id:Id.Lit_Chars val:'\tnotes (:12)\n' span_id:3099) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3100) (Token id: Id.Lit_Chars val: '\tgit cat-file commit refs/notes/foobar | sed 1d >actual &&\n' span_id: 3101 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3102) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify fourth notes tree' span_id:3109))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3113) (Token id:Id.Lit_Chars val:'\tcat >expect.unsorted <<-EOF &&\n' span_id:3114) (Token id:Id.Lit_Chars val:'\t100644 blob $commit2\n' span_id:3115) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3116) (Token id:Id.Lit_Chars val:'\tcat expect.unsorted | sort >expect &&\n' span_id:3117) (Token id: Id.Lit_Chars val: '\tgit cat-file -p refs/notes/foobar^{tree} | sed "s/ [0-9a-f]*\t/ /" >actual &&\n' span_id: 3118 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3119) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: verify second note for second commit' span_id:3126))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3130) (Token id:Id.Lit_Chars val:'\techo "$note2b_data" >expect &&\n' span_id:3131) (Token id: Id.Lit_Chars val: '\tgit cat-file blob refs/notes/foobar:$commit2 >actual &&\n' span_id: 3132 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3133) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Q: deny note on empty branch' span_id:3140))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3144) (Token id:Id.Lit_Chars val:'\tcat >input <<-EOF &&\n' span_id:3145) (Token id:Id.Lit_Chars val:'\treset refs/heads/Q0\n' span_id:3146) (Token id:Id.Lit_Chars val:'\n' span_id:3147) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/note-Q0\n' span_id:3148) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 3149 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:3150) (Token id:Id.Lit_Chars val:'\tNote for an empty branch.\n' span_id:3151) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:3152) (Token id:Id.Lit_Chars val:'\n' span_id:3153) (Token id:Id.Lit_Chars val:'\tN inline refs/heads/Q0\n' span_id:3154) (Token id:Id.Lit_Chars val:'\tdata <<NOTE\n' span_id:3155) (Token id:Id.Lit_Chars val:'\tsome note\n' span_id:3156) (Token id:Id.Lit_Chars val:'\tNOTE\n' span_id:3157) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3158) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import <input\n' span_id: 3159 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: abort on unsupported feature' span_id:3175))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3179) (Token id:Id.Lit_Chars val:'\tcat >input <<-EOF &&\n' span_id:3180) (Token id:Id.Lit_Chars val:'\tfeature no-such-feature-exists\n' span_id:3181) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3182) (Token id:Id.Lit_Chars val:'\n' span_id:3183) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import <input\n' span_id: 3184 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: supported feature is accepted' span_id:3191))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3195) (Token id:Id.Lit_Chars val:'\tcat >input <<-EOF &&\n' span_id:3196) (Token id:Id.Lit_Chars val:'\tfeature date-format=now\n' span_id:3197) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3198) (Token id:Id.Lit_Chars val:'\n' span_id:3199) (Token id:Id.Lit_Chars val:'\tgit fast-import <input\n' span_id:3200) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'R: abort on receiving feature after data command' span_id: 3207 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3211) (Token id:Id.Lit_Chars val:'\tcat >input <<-EOF &&\n' span_id:3212) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:3213) (Token id:Id.Lit_Chars val:'\tdata 3\n' span_id:3214) (Token id:Id.Lit_Chars val:'\thi\n' span_id:3215) (Token id:Id.Lit_Chars val:'\tfeature date-format=now\n' span_id:3216) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3217) (Token id:Id.Lit_Chars val:'\n' span_id:3218) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import <input\n' span_id: 3219 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'R: only one import-marks feature allowed per stream' span_id: 3226 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3230) (Token id:Id.Lit_Chars val:'\tcat >input <<-EOF &&\n' span_id:3231) (Token id:Id.Lit_Chars val:'\tfeature import-marks=git.marks\n' span_id:3232) (Token id:Id.Lit_Chars val:'\tfeature import-marks=git2.marks\n' span_id:3233) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3234) (Token id:Id.Lit_Chars val:'\n' span_id:3235) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import <input\n' span_id: 3236 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'R: export-marks feature results in a marks file being created' span_id: 3243 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3247) (Token id:Id.Lit_Chars val:'\tcat >input <<-EOF &&\n' span_id:3248) (Token id:Id.Lit_Chars val:'\tfeature export-marks=git.marks\n' span_id:3249) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:3250) (Token id:Id.Lit_Chars val:'\tmark :1\n' span_id:3251) (Token id:Id.Lit_Chars val:'\tdata 3\n' span_id:3252) (Token id:Id.Lit_Chars val:'\thi\n' span_id:3253) (Token id:Id.Lit_Chars val:'\n' span_id:3254) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3255) (Token id:Id.Lit_Chars val:'\n' span_id:3256) (Token id:Id.Lit_Chars val:'\tcat input | git fast-import &&\n' span_id:3257) (Token id:Id.Lit_Chars val:'\tgrep :1 git.marks\n' span_id:3258) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'R: export-marks options can be overridden by commandline options' span_id: 3265 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3269) (Token id: Id.Lit_Chars val: '\tcat input | git fast-import --export-marks=other.marks &&\n' span_id: 3270 ) (Token id:Id.Lit_Chars val:'\tgrep :1 other.marks\n' span_id:3271) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: catch typo in marks file name' span_id:3278))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3282) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=nonexistent.marks </dev/null &&\n' span_id: 3283 ) (Token id:Id.Lit_Chars val:'\techo "feature import-marks=nonexistent.marks" |\n' span_id:3284) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fast-import\n' span_id:3285) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'R: import and output marks can be the same file' span_id: 3292 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3296) (Token id:Id.Lit_Chars val:'\trm -f io.marks &&\n' span_id:3297) (Token id:Id.Lit_Chars val:'\tblob=$(echo hi | git hash-object --stdin) &&\n' span_id:3298) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:3299) (Token id:Id.Lit_Chars val:'\t:1 $blob\n' span_id:3300) (Token id:Id.Lit_Chars val:'\t:2 $blob\n' span_id:3301) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3302) (Token id: Id.Lit_Chars val: '\tgit fast-import --export-marks=io.marks <<-\\EOF &&\n' span_id: 3303 ) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:3304) (Token id:Id.Lit_Chars val:'\tmark :1\n' span_id:3305) (Token id:Id.Lit_Chars val:'\tdata 3\n' span_id:3306) (Token id:Id.Lit_Chars val:'\thi\n' span_id:3307) (Token id:Id.Lit_Chars val:'\n' span_id:3308) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3309) (Token id: Id.Lit_Chars val: '\tgit fast-import --import-marks=io.marks --export-marks=io.marks <<-\\EOF &&\n' span_id: 3310 ) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:3311) (Token id:Id.Lit_Chars val:'\tmark :2\n' span_id:3312) (Token id:Id.Lit_Chars val:'\tdata 3\n' span_id:3313) (Token id:Id.Lit_Chars val:'\thi\n' span_id:3314) (Token id:Id.Lit_Chars val:'\n' span_id:3315) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3316) (Token id:Id.Lit_Chars val:'\ttest_cmp expect io.marks\n' span_id:3317) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'R: --import-marks=foo --output-marks=foo to create foo fails' span_id: 3324 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3328) (Token id:Id.Lit_Chars val:'\trm -f io.marks &&\n' span_id:3329) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=io.marks --export-marks=io.marks <<-\\EOF\n' span_id: 3330 ) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:3331) (Token id:Id.Lit_Chars val:'\tmark :1\n' span_id:3332) (Token id:Id.Lit_Chars val:'\tdata 3\n' span_id:3333) (Token id:Id.Lit_Chars val:'\thi\n' span_id:3334) (Token id:Id.Lit_Chars val:'\n' span_id:3335) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3336) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: --import-marks-if-exists' span_id:3343))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3347) (Token id:Id.Lit_Chars val:'\trm -f io.marks &&\n' span_id:3348) (Token id:Id.Lit_Chars val:'\tblob=$(echo hi | git hash-object --stdin) &&\n' span_id:3349) (Token id:Id.Lit_Chars val:'\techo ":1 $blob" >expect &&\n' span_id:3350) (Token id: Id.Lit_Chars val: '\tgit fast-import --import-marks-if-exists=io.marks --export-marks=io.marks <<-\\EOF &&\n' span_id: 3351 ) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:3352) (Token id:Id.Lit_Chars val:'\tmark :1\n' span_id:3353) (Token id:Id.Lit_Chars val:'\tdata 3\n' span_id:3354) (Token id:Id.Lit_Chars val:'\thi\n' span_id:3355) (Token id:Id.Lit_Chars val:'\n' span_id:3356) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3357) (Token id:Id.Lit_Chars val:'\ttest_cmp expect io.marks\n' span_id:3358) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: feature import-marks-if-exists' span_id:3365))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3369) (Token id:Id.Lit_Chars val:'\trm -f io.marks &&\n' span_id:3370) (Token id:Id.Lit_Chars val:'\t>expect &&\n' span_id:3371) (Token id:Id.Lit_Chars val:'\n' span_id:3372) (Token id:Id.Lit_Chars val:'\tgit fast-import --export-marks=io.marks <<-\\EOF &&\n' span_id:3373) (Token id: Id.Lit_Chars val: '\tfeature import-marks-if-exists=not_io.marks\n' span_id: 3374 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3375) (Token id:Id.Lit_Chars val:'\ttest_cmp expect io.marks &&\n' span_id:3376) (Token id:Id.Lit_Chars val:'\n' span_id:3377) (Token id: Id.Lit_Chars val: '\tblob=$(echo hi | git hash-object --stdin) &&\n' span_id: 3378 ) (Token id:Id.Lit_Chars val:'\n' span_id:3379) (Token id:Id.Lit_Chars val:'\techo ":1 $blob" >io.marks &&\n' span_id:3380) (Token id:Id.Lit_Chars val:'\techo ":1 $blob" >expect &&\n' span_id:3381) (Token id:Id.Lit_Chars val:'\techo ":2 $blob" >>expect &&\n' span_id:3382) (Token id:Id.Lit_Chars val:'\n' span_id:3383) (Token id: Id.Lit_Chars val: '\tgit fast-import --export-marks=io.marks <<-\\EOF &&\n' span_id: 3384 ) (Token id:Id.Lit_Chars val:'\tfeature import-marks-if-exists=io.marks\n' span_id:3385) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:3386) (Token id:Id.Lit_Chars val:'\tmark :2\n' span_id:3387) (Token id:Id.Lit_Chars val:'\tdata 3\n' span_id:3388) (Token id:Id.Lit_Chars val:'\thi\n' span_id:3389) (Token id:Id.Lit_Chars val:'\n' span_id:3390) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3391) (Token id:Id.Lit_Chars val:'\ttest_cmp expect io.marks &&\n' span_id:3392) (Token id:Id.Lit_Chars val:'\n' span_id:3393) (Token id:Id.Lit_Chars val:'\techo ":3 $blob" >>expect &&\n' span_id:3394) (Token id:Id.Lit_Chars val:'\n' span_id:3395) (Token id:Id.Lit_Chars val:'\tgit fast-import --import-marks=io.marks \\\n' span_id:3396) (Token id: Id.Lit_Chars val: '\t\t\t--export-marks=io.marks <<-\\EOF &&\n' span_id: 3397 ) (Token id:Id.Lit_Chars val:'\tfeature import-marks-if-exists=not_io.marks\n' span_id:3398) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:3399) (Token id:Id.Lit_Chars val:'\tmark :3\n' span_id:3400) (Token id:Id.Lit_Chars val:'\tdata 3\n' span_id:3401) (Token id:Id.Lit_Chars val:'\thi\n' span_id:3402) (Token id:Id.Lit_Chars val:'\n' span_id:3403) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3404) (Token id:Id.Lit_Chars val:'\ttest_cmp expect io.marks &&\n' span_id:3405) (Token id:Id.Lit_Chars val:'\n' span_id:3406) (Token id:Id.Lit_Chars val:'\t>expect &&\n' span_id:3407) (Token id:Id.Lit_Chars val:'\n' span_id:3408) (Token id: Id.Lit_Chars val: '\tgit fast-import --import-marks-if-exists=not_io.marks \\\n' span_id: 3409 ) (Token id:Id.Lit_Chars val:'\t\t\t--export-marks=io.marks <<-\\EOF &&\n' span_id:3410) (Token id: Id.Lit_Chars val: '\tfeature import-marks-if-exists=io.marks\n' span_id: 3411 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3412) (Token id:Id.Lit_Chars val:'\ttest_cmp expect io.marks\n' span_id:3413) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'R: import to output marks works without any content' span_id: 3420 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3424) (Token id:Id.Lit_Chars val:'\tcat >input <<-EOF &&\n' span_id:3425) (Token id:Id.Lit_Chars val:'\tfeature import-marks=marks.out\n' span_id:3426) (Token id:Id.Lit_Chars val:'\tfeature export-marks=marks.new\n' span_id:3427) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3428) (Token id:Id.Lit_Chars val:'\n' span_id:3429) (Token id:Id.Lit_Chars val:'\tcat input | git fast-import &&\n' span_id:3430) (Token id:Id.Lit_Chars val:'\ttest_cmp marks.out marks.new\n' span_id:3431) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'R: import marks prefers commandline marks file over the stream' span_id: 3438 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3442) (Token id:Id.Lit_Chars val:'\tcat >input <<-EOF &&\n' span_id:3443) (Token id:Id.Lit_Chars val:'\tfeature import-marks=nonexistent.marks\n' span_id:3444) (Token id:Id.Lit_Chars val:'\tfeature export-marks=marks.new\n' span_id:3445) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3446) (Token id:Id.Lit_Chars val:'\n' span_id:3447) (Token id: Id.Lit_Chars val: '\tcat input | git fast-import --import-marks=marks.out &&\n' span_id: 3448 ) (Token id:Id.Lit_Chars val:'\ttest_cmp marks.out marks.new\n' span_id:3449) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: multiple --import-marks= should be honoured' span_id:3457))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3461) (Token id:Id.Lit_Chars val:'\tcat >input <<-EOF &&\n' span_id:3462) (Token id:Id.Lit_Chars val:'\tfeature import-marks=nonexistent.marks\n' span_id:3463) (Token id: Id.Lit_Chars val: '\tfeature export-marks=combined.marks\n' span_id: 3464 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3465) (Token id:Id.Lit_Chars val:'\n' span_id:3466) (Token id:Id.Lit_Chars val:'\thead -n2 marks.out > one.marks &&\n' span_id:3467) (Token id:Id.Lit_Chars val:'\ttail -n +3 marks.out > two.marks &&\n' span_id:3468) (Token id: Id.Lit_Chars val: '\tgit fast-import --import-marks=one.marks --import-marks=two.marks <input &&\n' span_id: 3469 ) (Token id:Id.Lit_Chars val:'\ttest_cmp marks.out combined.marks\n' span_id:3470) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: feature relative-marks should be honoured' span_id:3477))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3481) (Token id:Id.Lit_Chars val:'\tcat >input <<-EOF &&\n' span_id:3482) (Token id:Id.Lit_Chars val:'\tfeature relative-marks\n' span_id:3483) (Token id:Id.Lit_Chars val:'\tfeature import-marks=relative.in\n' span_id:3484) (Token id:Id.Lit_Chars val:'\tfeature export-marks=relative.out\n' span_id:3485) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3486) (Token id:Id.Lit_Chars val:'\n' span_id:3487) (Token id:Id.Lit_Chars val:'\tmkdir -p .git/info/fast-import/ &&\n' span_id:3488) (Token id:Id.Lit_Chars val:'\tcp marks.new .git/info/fast-import/relative.in &&\n' span_id:3489) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:3490) (Token id:Id.Lit_Chars val:'\ttest_cmp marks.new .git/info/fast-import/relative.out\n' span_id:3491) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'R: feature no-relative-marks should be honoured' span_id: 3498 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3502) (Token id:Id.Lit_Chars val:'\tcat >input <<-EOF &&\n' span_id:3503) (Token id:Id.Lit_Chars val:'\tfeature relative-marks\n' span_id:3504) (Token id:Id.Lit_Chars val:'\tfeature import-marks=relative.in\n' span_id:3505) (Token id:Id.Lit_Chars val:'\tfeature no-relative-marks\n' span_id:3506) (Token id: Id.Lit_Chars val: '\tfeature export-marks=non-relative.out\n' span_id: 3507 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3508) (Token id:Id.Lit_Chars val:'\n' span_id:3509) (Token id:Id.Lit_Chars val:'\tgit fast-import <input &&\n' span_id:3510) (Token id:Id.Lit_Chars val:'\ttest_cmp marks.new non-relative.out\n' span_id:3511) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: feature ls supported' span_id:3518))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3522) (Token id:Id.Lit_Chars val:'\techo "feature ls" |\n' span_id:3523) (Token id:Id.Lit_Chars val:'\tgit fast-import\n' span_id:3524) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: feature cat-blob supported' span_id:3531))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3535) (Token id:Id.Lit_Chars val:'\techo "feature cat-blob" |\n' span_id:3536) (Token id:Id.Lit_Chars val:'\tgit fast-import\n' span_id:3537) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: cat-blob-fd must be a nonnegative integer' span_id:3544))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3548) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --cat-blob-fd=-1 </dev/null\n' span_id: 3549 ) ) } ) (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} {(SQ (Token id:Id.Lit_Chars val:'R: print old blob' span_id:3559))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3563) (Token id: Id.Lit_Chars val: '\tblob=$(echo "yes it can" | git hash-object -w --stdin) &&\n' span_id: 3564 ) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:3565) (Token id:Id.Lit_Chars val:'\t${blob} blob 11\n' span_id:3566) (Token id:Id.Lit_Chars val:'\tyes it can\n' span_id:3567) (Token id:Id.Lit_Chars val:'\n' span_id:3568) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3569) (Token id:Id.Lit_Chars val:'\techo "cat-blob $blob" |\n' span_id:3570) (Token id:Id.Lit_Chars val:'\tgit fast-import --cat-blob-fd=6 6>actual &&\n' span_id:3571) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3572) ) } ) (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} {(SQ (Token id:Id.Lit_Chars val:'R: in-stream cat-blob-fd not respected' span_id:3582))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3586) (Token id:Id.Lit_Chars val:'\techo hello >greeting &&\n' span_id:3587) (Token id:Id.Lit_Chars val:'\tblob=$(git hash-object -w greeting) &&\n' span_id:3588) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:3589) (Token id:Id.Lit_Chars val:'\t${blob} blob 6\n' span_id:3590) (Token id:Id.Lit_Chars val:'\thello\n' span_id:3591) (Token id:Id.Lit_Chars val:'\n' span_id:3592) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3593) (Token id: Id.Lit_Chars val: '\tgit fast-import --cat-blob-fd=3 3>actual.3 >actual.1 <<-EOF &&\n' span_id: 3594 ) (Token id:Id.Lit_Chars val:'\tcat-blob $blob\n' span_id:3595) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3596) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual.3 &&\n' span_id:3597) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty actual.1 &&\n' span_id:3598) (Token id:Id.Lit_Chars val:'\tgit fast-import 3>actual.3 >actual.1 <<-EOF &&\n' span_id:3599) (Token id:Id.Lit_Chars val:'\toption cat-blob-fd=3\n' span_id:3600) (Token id:Id.Lit_Chars val:'\tcat-blob $blob\n' span_id:3601) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3602) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty actual.3 &&\n' span_id:3603) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual.1\n' span_id:3604) ) } ) (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} {(SQ (Token id:Id.Lit_Chars val:'R: print mark for new blob' span_id:3614))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3618) (Token id: Id.Lit_Chars val: '\techo "effluentish" | git hash-object --stdin >expect &&\n' span_id: 3619 ) (Token id:Id.Lit_Chars val:'\tgit fast-import --cat-blob-fd=6 6>actual <<-\\EOF &&\n' span_id:3620) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:3621) (Token id:Id.Lit_Chars val:'\tmark :1\n' span_id:3622) (Token id:Id.Lit_Chars val:'\tdata <<BLOB_END\n' span_id:3623) (Token id:Id.Lit_Chars val:'\teffluentish\n' span_id:3624) (Token id:Id.Lit_Chars val:'\tBLOB_END\n' span_id:3625) (Token id:Id.Lit_Chars val:'\tget-mark :1\n' span_id:3626) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3627) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3628) ) } ) (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} {(SQ (Token id:Id.Lit_Chars val:'R: print new blob' span_id:3638))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3642) (Token id: Id.Lit_Chars val: '\tblob=$(echo "yep yep yep" | git hash-object --stdin) &&\n' span_id: 3643 ) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:3644) (Token id:Id.Lit_Chars val:'\t${blob} blob 12\n' span_id:3645) (Token id:Id.Lit_Chars val:'\tyep yep yep\n' span_id:3646) (Token id:Id.Lit_Chars val:'\n' span_id:3647) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3648) (Token id: Id.Lit_Chars val: '\tgit fast-import --cat-blob-fd=6 6>actual <<-\\EOF &&\n' span_id: 3649 ) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:3650) (Token id:Id.Lit_Chars val:'\tmark :1\n' span_id:3651) (Token id:Id.Lit_Chars val:'\tdata <<BLOB_END\n' span_id:3652) (Token id:Id.Lit_Chars val:'\tyep yep yep\n' span_id:3653) (Token id:Id.Lit_Chars val:'\tBLOB_END\n' span_id:3654) (Token id:Id.Lit_Chars val:'\tcat-blob :1\n' span_id:3655) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3656) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3657) ) } ) (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} {(SQ (Token id:Id.Lit_Chars val:'R: print new blob by sha1' span_id:3667))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3671) (Token id: Id.Lit_Chars val: '\tblob=$(echo "a new blob named by sha1" | git hash-object --stdin) &&\n' span_id: 3672 ) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:3673) (Token id:Id.Lit_Chars val:'\t${blob} blob 25\n' span_id:3674) (Token id:Id.Lit_Chars val:'\ta new blob named by sha1\n' span_id:3675) (Token id:Id.Lit_Chars val:'\n' span_id:3676) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3677) (Token id: Id.Lit_Chars val: '\tgit fast-import --cat-blob-fd=6 6>actual <<-EOF &&\n' span_id: 3678 ) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:3679) (Token id:Id.Lit_Chars val:'\tdata <<BLOB_END\n' span_id:3680) (Token id:Id.Lit_Chars val:'\ta new blob named by sha1\n' span_id:3681) (Token id:Id.Lit_Chars val:'\tBLOB_END\n' span_id:3682) (Token id:Id.Lit_Chars val:'\tcat-blob $blob\n' span_id:3683) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3684) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3685) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: big file' span_id:3692))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3696) (Token id:Id.Lit_Chars val:'\t(\n' span_id:3697) (Token id: Id.Lit_Chars val: '\t\techo "the quick brown fox jumps over the lazy dog" >big &&\n' span_id: 3698 ) (Token id:Id.Lit_Chars val:'\t\tfor i in 1 2 3\n' span_id:3699) (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:3700) (Token id:Id.Lit_Chars val:'\t\t\tcat big big big big >bigger &&\n' span_id:3701) (Token id: Id.Lit_Chars val: '\t\t\tcat bigger bigger bigger bigger >big ||\n' span_id: 3702 ) (Token id:Id.Lit_Chars val:'\t\t\texit\n' span_id:3703) (Token id:Id.Lit_Chars val:'\t\tdone\n' span_id:3704) (Token id:Id.Lit_Chars val:'\t)\n' span_id:3705) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: print two blobs to stdout' span_id:3712))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3716) (Token id:Id.Lit_Chars val:'\tblob1=$(git hash-object big) &&\n' span_id:3717) (Token id:Id.Lit_Chars val:'\tblob1_len=$(wc -c <big) &&\n' span_id:3718) (Token id: Id.Lit_Chars val: '\tblob2=$(echo hello | git hash-object --stdin) &&\n' span_id: 3719 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:3720) (Token id:Id.Lit_Chars val:'\t\techo ${blob1} blob $blob1_len &&\n' span_id:3721) (Token id:Id.Lit_Chars val:'\t\tcat big &&\n' span_id:3722) (Token id:Id.Lit_Chars val:'\t\tcat <<-EOF\n' span_id:3723) (Token id:Id.Lit_Chars val:'\n' span_id:3724) (Token id:Id.Lit_Chars val:'\t\t${blob2} blob 6\n' span_id:3725) (Token id:Id.Lit_Chars val:'\t\thello\n' span_id:3726) (Token id:Id.Lit_Chars val:'\n' span_id:3727) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:3728) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:3729) (Token id:Id.Lit_Chars val:'\t{\n' span_id:3730) (Token id:Id.Lit_Chars val:'\t\tcat <<-\\END_PART1 &&\n' span_id:3731) (Token id:Id.Lit_Chars val:'\t\t\tblob\n' span_id:3732) (Token id:Id.Lit_Chars val:'\t\t\tmark :1\n' span_id:3733) (Token id:Id.Lit_Chars val:'\t\t\tdata <<data_end\n' span_id:3734) (Token id:Id.Lit_Chars val:'\t\tEND_PART1\n' span_id:3735) (Token id:Id.Lit_Chars val:'\t\tcat big &&\n' span_id:3736) (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF\n' span_id:3737) (Token id:Id.Lit_Chars val:'\t\t\tdata_end\n' span_id:3738) (Token id:Id.Lit_Chars val:'\t\t\tblob\n' span_id:3739) (Token id:Id.Lit_Chars val:'\t\t\tmark :2\n' span_id:3740) (Token id:Id.Lit_Chars val:'\t\t\tdata <<data_end\n' span_id:3741) (Token id:Id.Lit_Chars val:'\t\t\thello\n' span_id:3742) (Token id:Id.Lit_Chars val:'\t\t\tdata_end\n' span_id:3743) (Token id:Id.Lit_Chars val:'\t\t\tcat-blob :1\n' span_id:3744) (Token id:Id.Lit_Chars val:'\t\t\tcat-blob :2\n' span_id:3745) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:3746) (Token id:Id.Lit_Chars val:'\t} |\n' span_id:3747) (Token id:Id.Lit_Chars val:'\tgit fast-import >actual &&\n' span_id:3748) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3749) ) } ) (C {(test_expect_success)} {(PIPE)} {(SQ (Token id:Id.Lit_Chars val:'R: copy using cat-file' span_id:3758))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3762) (Token id: Id.Lit_Chars val: '\texpect_id=$(git hash-object big) &&\n' span_id: 3763 ) (Token id:Id.Lit_Chars val:'\texpect_len=$(wc -c <big) &&\n' span_id:3764) (Token id: Id.Lit_Chars val: '\techo $expect_id blob $expect_len >expect.response &&\n' span_id: 3765 ) (Token id:Id.Lit_Chars val:'\n' span_id:3766) (Token id:Id.Lit_Chars val:'\trm -f blobs &&\n' span_id:3767) (Token id:Id.Lit_Chars val:'\tcat >frontend <<-\\FRONTEND_END &&\n' span_id:3768) (Token id:Id.Lit_Chars val:'\t#!/bin/sh\n' span_id:3769) (Token id:Id.Lit_Chars val:'\tFRONTEND_END\n' span_id:3770) (Token id:Id.Lit_Chars val:'\n' span_id:3771) (Token id:Id.Lit_Chars val:'\tmkfifo blobs &&\n' span_id:3772) (Token id:Id.Lit_Chars val:'\t(\n' span_id:3773) (Token id: Id.Lit_Chars val: '\t\texport GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL GIT_COMMITTER_DATE &&\n' span_id: 3774 ) (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:3775) (Token id:Id.Lit_Chars val:'\t\tfeature cat-blob\n' span_id:3776) (Token id:Id.Lit_Chars val:'\t\tblob\n' span_id:3777) (Token id:Id.Lit_Chars val:'\t\tmark :1\n' span_id:3778) (Token id:Id.Lit_Chars val:'\t\tdata <<BLOB\n' span_id:3779) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:3780) (Token id:Id.Lit_Chars val:'\t\tcat big &&\n' span_id:3781) (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:3782) (Token id:Id.Lit_Chars val:'\t\tBLOB\n' span_id:3783) (Token id:Id.Lit_Chars val:'\t\tcat-blob :1\n' span_id:3784) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:3785) (Token id:Id.Lit_Chars val:'\n' span_id:3786) (Token id:Id.Lit_Chars val:'\t\tread blob_id type size <&3 &&\n' span_id:3787) (Token id:Id.Lit_Chars val:'\t\techo "$blob_id $type $size" >response &&\n' span_id:3788) (Token id: Id.Lit_Chars val: '\t\ttest_copy_bytes $size >blob <&3 &&\n' span_id: 3789 ) (Token id:Id.Lit_Chars val:'\t\tread newline <&3 &&\n' span_id:3790) (Token id:Id.Lit_Chars val:'\n' span_id:3791) (Token id:Id.Lit_Chars val:'\t\tcat <<-EOF &&\n' span_id:3792) (Token id:Id.Lit_Chars val:'\t\tcommit refs/heads/copied\n' span_id:3793) (Token id: Id.Lit_Chars val: '\t\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 3794 ) (Token id:Id.Lit_Chars val:'\t\tdata <<COMMIT\n' span_id:3795) (Token id:Id.Lit_Chars val:'\t\tcopy big file as file3\n' span_id:3796) (Token id:Id.Lit_Chars val:'\t\tCOMMIT\n' span_id:3797) (Token id:Id.Lit_Chars val:'\t\tM 644 inline file3\n' span_id:3798) (Token id:Id.Lit_Chars val:'\t\tdata <<BLOB\n' span_id:3799) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:3800) (Token id:Id.Lit_Chars val:'\t\tcat blob &&\n' span_id:3801) (Token id:Id.Lit_Chars val:'\t\techo BLOB\n' span_id:3802) (Token id:Id.Lit_Chars val:'\t) 3<blobs |\n' span_id:3803) (Token id: Id.Lit_Chars val: '\tgit fast-import --cat-blob-fd=3 3>blobs &&\n' span_id: 3804 ) (Token id:Id.Lit_Chars val:'\tgit show copied:file3 >actual &&\n' span_id:3805) (Token id: Id.Lit_Chars val: '\ttest_cmp expect.response response &&\n' span_id: 3806 ) (Token id:Id.Lit_Chars val:'\ttest_cmp big actual\n' span_id:3807) ) } ) (C {(test_expect_success)} {(PIPE)} {(SQ (Token id:Id.Lit_Chars val:'R: print blob mid-commit' span_id:3816))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3820) (Token id:Id.Lit_Chars val:'\trm -f blobs &&\n' span_id:3821) (Token id:Id.Lit_Chars val:'\techo "A blob from _before_ the commit." >expect &&\n' span_id:3822) (Token id:Id.Lit_Chars val:'\tmkfifo blobs &&\n' span_id:3823) (Token id:Id.Lit_Chars val:'\t(\n' span_id:3824) (Token id:Id.Lit_Chars val:'\t\texec 3<blobs &&\n' span_id:3825) (Token id:Id.Lit_Chars val:'\t\tcat <<-EOF &&\n' span_id:3826) (Token id:Id.Lit_Chars val:'\t\tfeature cat-blob\n' span_id:3827) (Token id:Id.Lit_Chars val:'\t\tblob\n' span_id:3828) (Token id:Id.Lit_Chars val:'\t\tmark :1\n' span_id:3829) (Token id:Id.Lit_Chars val:'\t\tdata <<BLOB\n' span_id:3830) (Token id:Id.Lit_Chars val:'\t\tA blob from _before_ the commit.\n' span_id:3831) (Token id:Id.Lit_Chars val:'\t\tBLOB\n' span_id:3832) (Token id:Id.Lit_Chars val:'\t\tcommit refs/heads/temporary\n' span_id:3833) (Token id: Id.Lit_Chars val: '\t\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 3834 ) (Token id:Id.Lit_Chars val:'\t\tdata <<COMMIT\n' span_id:3835) (Token id:Id.Lit_Chars val:'\t\tEmpty commit\n' span_id:3836) (Token id:Id.Lit_Chars val:'\t\tCOMMIT\n' span_id:3837) (Token id:Id.Lit_Chars val:'\t\tcat-blob :1\n' span_id:3838) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:3839) (Token id:Id.Lit_Chars val:'\n' span_id:3840) (Token id:Id.Lit_Chars val:'\t\tread blob_id type size <&3 &&\n' span_id:3841) (Token id:Id.Lit_Chars val:'\t\ttest_copy_bytes $size >actual <&3 &&\n' span_id:3842) (Token id:Id.Lit_Chars val:'\t\tread newline <&3 &&\n' span_id:3843) (Token id:Id.Lit_Chars val:'\n' span_id:3844) (Token id:Id.Lit_Chars val:'\t\techo\n' span_id:3845) (Token id:Id.Lit_Chars val:'\t) |\n' span_id:3846) (Token id:Id.Lit_Chars val:'\tgit fast-import --cat-blob-fd=3 3>blobs &&\n' span_id:3847) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3848) ) } ) (C {(test_expect_success)} {(PIPE)} {(SQ (Token id:Id.Lit_Chars val:'R: print staged blob within commit' span_id:3857))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3861) (Token id:Id.Lit_Chars val:'\trm -f blobs &&\n' span_id:3862) (Token id:Id.Lit_Chars val:'\techo "A blob from _within_ the commit." >expect &&\n' span_id:3863) (Token id:Id.Lit_Chars val:'\tmkfifo blobs &&\n' span_id:3864) (Token id:Id.Lit_Chars val:'\t(\n' span_id:3865) (Token id:Id.Lit_Chars val:'\t\texec 3<blobs &&\n' span_id:3866) (Token id:Id.Lit_Chars val:'\t\tcat <<-EOF &&\n' span_id:3867) (Token id:Id.Lit_Chars val:'\t\tfeature cat-blob\n' span_id:3868) (Token id:Id.Lit_Chars val:'\t\tcommit refs/heads/within\n' span_id:3869) (Token id: Id.Lit_Chars val: '\t\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 3870 ) (Token id:Id.Lit_Chars val:'\t\tdata <<COMMIT\n' span_id:3871) (Token id:Id.Lit_Chars val:'\t\tEmpty commit\n' span_id:3872) (Token id:Id.Lit_Chars val:'\t\tCOMMIT\n' span_id:3873) (Token id:Id.Lit_Chars val:'\t\tM 644 inline within\n' span_id:3874) (Token id:Id.Lit_Chars val:'\t\tdata <<BLOB\n' span_id:3875) (Token id:Id.Lit_Chars val:'\t\tA blob from _within_ the commit.\n' span_id:3876) (Token id:Id.Lit_Chars val:'\t\tBLOB\n' span_id:3877) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:3878) (Token id:Id.Lit_Chars val:'\n' span_id:3879) (Token id:Id.Lit_Chars val:'\t\tto_get=$(\n' span_id:3880) (Token id:Id.Lit_Chars val:'\t\t\techo "A blob from _within_ the commit." |\n' span_id:3881) (Token id:Id.Lit_Chars val:'\t\t\tgit hash-object --stdin\n' span_id:3882) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:3883) (Token id:Id.Lit_Chars val:'\t\techo "cat-blob $to_get" &&\n' span_id:3884) (Token id:Id.Lit_Chars val:'\n' span_id:3885) (Token id:Id.Lit_Chars val:'\t\tread blob_id type size <&3 &&\n' span_id:3886) (Token id:Id.Lit_Chars val:'\t\ttest_copy_bytes $size >actual <&3 &&\n' span_id:3887) (Token id:Id.Lit_Chars val:'\t\tread newline <&3 &&\n' span_id:3888) (Token id:Id.Lit_Chars val:'\n' span_id:3889) (Token id:Id.Lit_Chars val:'\t\techo deleteall\n' span_id:3890) (Token id:Id.Lit_Chars val:'\t) |\n' span_id:3891) (Token id: Id.Lit_Chars val: '\tgit fast-import --cat-blob-fd=3 3>blobs &&\n' span_id: 3892 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3893) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'R: quiet option results in no stats being output' span_id: 3900 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3904) (Token id:Id.Lit_Chars val:'\tcat >input <<-EOF &&\n' span_id:3905) (Token id:Id.Lit_Chars val:'\toption git quiet\n' span_id:3906) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:3907) (Token id:Id.Lit_Chars val:'\tdata 3\n' span_id:3908) (Token id:Id.Lit_Chars val:'\thi\n' span_id:3909) (Token id:Id.Lit_Chars val:'\n' span_id:3910) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3911) (Token id:Id.Lit_Chars val:'\n' span_id:3912) (Token id:Id.Lit_Chars val:'\tcat input | git fast-import 2> output &&\n' span_id:3913) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty output\n' span_id:3914) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'R: feature done means terminating "done" is mandatory' span_id: 3921 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3925) (Token id: Id.Lit_Chars val: '\techo feature done | test_must_fail git fast-import &&\n' span_id: 3926 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fast-import --done </dev/null\n' span_id:3927) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'R: terminating "done" with trailing gibberish is ok' span_id: 3934 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3938) (Token id:Id.Lit_Chars val:'\tgit fast-import <<-\\EOF &&\n' span_id:3939) (Token id:Id.Lit_Chars val:'\tfeature done\n' span_id:3940) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:3941) (Token id:Id.Lit_Chars val:'\ttrailing gibberish\n' span_id:3942) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3943) (Token id:Id.Lit_Chars val:'\tgit fast-import <<-\\EOF\n' span_id:3944) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:3945) (Token id:Id.Lit_Chars val:'\tmore trailing gibberish\n' span_id:3946) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3947) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: terminating "done" within commit' span_id:3954))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3958) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:3959) (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:3960) (Token id: Id.Lit_Chars val: '\t:000000 100644 OBJID OBJID A\thello.c\n' span_id: 3961 ) (Token id:Id.Lit_Chars val:'\t:000000 100644 OBJID OBJID A\thello2.c\n' span_id:3962) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3963) (Token id:Id.Lit_Chars val:'\tgit fast-import <<-EOF &&\n' span_id:3964) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/done-ends\n' span_id:3965) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 3966 ) (Token id:Id.Lit_Chars val:'\tdata <<EOT\n' span_id:3967) (Token id: Id.Lit_Chars val: '\tCommit terminated by "done" command\n' span_id: 3968 ) (Token id:Id.Lit_Chars val:'\tEOT\n' span_id:3969) (Token id:Id.Lit_Chars val:'\tM 100644 inline hello.c\n' span_id:3970) (Token id:Id.Lit_Chars val:'\tdata <<EOT\n' span_id:3971) (Token id:Id.Lit_Chars val:'\tHello, world.\n' span_id:3972) (Token id:Id.Lit_Chars val:'\tEOT\n' span_id:3973) (Token id:Id.Lit_Chars val:'\tC hello.c hello2.c\n' span_id:3974) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:3975) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3976) (Token id:Id.Lit_Chars val:'\tgit rev-list done-ends |\n' span_id:3977) (Token id:Id.Lit_Chars val:'\tgit diff-tree -r --stdin --root --always |\n' span_id:3978) (Token id: Id.Lit_Chars val: '\tsed -e "s/$_x40/OBJID/g" >actual &&\n' span_id: 3979 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:3980) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: die on unknown option' span_id:3987))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3991) (Token id:Id.Lit_Chars val:'\tcat >input <<-EOF &&\n' span_id:3992) (Token id:Id.Lit_Chars val:'\toption git non-existing-option\n' span_id:3993) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3994) (Token id:Id.Lit_Chars val:'\n' span_id:3995) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import <input\n' span_id: 3996 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: unknown commandline options are rejected' span_id:4003))} { (SQ (Token id:Id.Lit_Chars val:'\\\n' span_id:4007) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --non-existing-option < /dev/null\n' span_id: 4008 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: die on invalid option argument' span_id:4015))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4019) (Token id: Id.Lit_Chars val: '\techo "option git active-branches=-5" |\n' span_id: 4020 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fast-import &&\n' span_id:4021) (Token id:Id.Lit_Chars val:'\techo "option git depth=" |\n' span_id:4022) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fast-import &&\n' span_id:4023) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --depth="5 elephants" </dev/null\n' span_id: 4024 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: ignore non-git options' span_id:4031))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4035) (Token id:Id.Lit_Chars val:'\tcat >input <<-EOF &&\n' span_id:4036) (Token id:Id.Lit_Chars val:'\toption non-existing-vcs non-existing-option\n' span_id:4037) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4038) (Token id:Id.Lit_Chars val:'\n' span_id:4039) (Token id:Id.Lit_Chars val:'\tgit fast-import <input\n' span_id:4040) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: corrupt lines do not mess marks file' span_id:4047))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4051) (Token id:Id.Lit_Chars val:'\trm -f io.marks &&\n' span_id:4052) (Token id:Id.Lit_Chars val:'\tblob=$(echo hi | git hash-object --stdin) &&\n' span_id:4053) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:4054) (Token id:Id.Lit_Chars val:'\t:3 0000000000000000000000000000000000000000\n' span_id:4055) (Token id:Id.Lit_Chars val:'\t:1 $blob\n' span_id:4056) (Token id:Id.Lit_Chars val:'\t:2 $blob\n' span_id:4057) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4058) (Token id:Id.Lit_Chars val:'\tcp expect io.marks &&\n' span_id:4059) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=io.marks --export-marks=io.marks <<-\\EOF &&\n' span_id: 4060 ) (Token id:Id.Lit_Chars val:'\n' span_id:4061) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4062) (Token id:Id.Lit_Chars val:'\ttest_cmp expect io.marks\n' span_id:4063) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: blob bigger than threshold' span_id:4079))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4083) (Token id:Id.Lit_Chars val:'\tblobsize=$((2*1024*1024 + 53)) &&\n' span_id:4084) (Token id:Id.Lit_Chars val:'\ttest-genrandom bar $blobsize >expect &&\n' span_id:4085) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:4086) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/big-file\n' span_id:4087) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4088 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4089) (Token id:Id.Lit_Chars val:'\tR - big file\n' span_id:4090) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4091) (Token id:Id.Lit_Chars val:'\n' span_id:4092) (Token id:Id.Lit_Chars val:'\tM 644 inline big1\n' span_id:4093) (Token id:Id.Lit_Chars val:'\tdata $blobsize\n' span_id:4094) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:4095) (Token id:Id.Lit_Chars val:'\tcat expect >>input &&\n' span_id:4096) (Token id:Id.Lit_Chars val:'\tcat >>input <<-INPUT_END &&\n' span_id:4097) (Token id:Id.Lit_Chars val:'\tM 644 inline big2\n' span_id:4098) (Token id:Id.Lit_Chars val:'\tdata $blobsize\n' span_id:4099) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:4100) (Token id:Id.Lit_Chars val:'\tcat expect >>input &&\n' span_id:4101) (Token id:Id.Lit_Chars val:'\techo >>input &&\n' span_id:4102) (Token id:Id.Lit_Chars val:'\n' span_id:4103) (Token id:Id.Lit_Chars val:'\ttest_create_repo R &&\n' span_id:4104) (Token id: Id.Lit_Chars val: '\tgit --git-dir=R/.git config fastimport.unpackLimit 0 &&\n' span_id: 4105 ) (Token id: Id.Lit_Chars val: '\tgit --git-dir=R/.git fast-import --big-file-threshold=1 <input\n' span_id: 4106 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: verify created pack' span_id:4113))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4117) (Token id:Id.Lit_Chars val:'\t(\n' span_id:4118) (Token id:Id.Lit_Chars val:'\t\tcd R &&\n' span_id:4119) (Token id:Id.Lit_Chars val:'\t\tverify_packs -v > ../verify\n' span_id:4120) (Token id:Id.Lit_Chars val:'\t)\n' span_id:4121) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: verify written objects' span_id:4128))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4132) (Token id: Id.Lit_Chars val: '\tgit --git-dir=R/.git cat-file blob big-file:big1 >actual &&\n' span_id: 4133 ) (Token id:Id.Lit_Chars val:'\ttest_cmp_bin expect actual &&\n' span_id:4134) (Token id: Id.Lit_Chars val: '\ta=$(git --git-dir=R/.git rev-parse big-file:big1) &&\n' span_id: 4135 ) (Token id:Id.Lit_Chars val:'\tb=$(git --git-dir=R/.git rev-parse big-file:big2) &&\n' span_id:4136) (Token id:Id.Lit_Chars val:'\ttest $a = $b\n' span_id:4137) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'R: blob appears only once' span_id:4144))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4148) (Token id:Id.Lit_Chars val:'\tn=$(grep $a verify | wc -l) &&\n' span_id:4149) (Token id:Id.Lit_Chars val:'\ttest 1 = $n\n' span_id:4150) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'S: initialize for S tests' span_id:4250))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4254) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:4255) (Token id:Id.Lit_Chars val:'\n' span_id:4256) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:4257) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/S\n' span_id:4258) (Token id:Id.Lit_Chars val:'\tmark :301\n' span_id:4259) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4260 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4261) (Token id:Id.Lit_Chars val:'\tcommit 1\n' span_id:4262) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4263) (Token id:Id.Lit_Chars val:'\tM 100644 inline hello.c\n' span_id:4264) (Token id:Id.Lit_Chars val:'\tdata <<BLOB\n' span_id:4265) (Token id:Id.Lit_Chars val:'\tblob 1\n' span_id:4266) (Token id:Id.Lit_Chars val:'\tBLOB\n' span_id:4267) (Token id:Id.Lit_Chars val:'\n' span_id:4268) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/S\n' span_id:4269) (Token id:Id.Lit_Chars val:'\tmark :302\n' span_id:4270) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4271 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4272) (Token id:Id.Lit_Chars val:'\tcommit 2\n' span_id:4273) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4274) (Token id:Id.Lit_Chars val:'\tfrom :301\n' span_id:4275) (Token id:Id.Lit_Chars val:'\tM 100644 inline hello.c\n' span_id:4276) (Token id:Id.Lit_Chars val:'\tdata <<BLOB\n' span_id:4277) (Token id:Id.Lit_Chars val:'\tblob 2\n' span_id:4278) (Token id:Id.Lit_Chars val:'\tBLOB\n' span_id:4279) (Token id:Id.Lit_Chars val:'\n' span_id:4280) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:4281) (Token id:Id.Lit_Chars val:'\tmark :403\n' span_id:4282) (Token id:Id.Lit_Chars val:'\tdata <<BLOB\n' span_id:4283) (Token id:Id.Lit_Chars val:'\tblob 3\n' span_id:4284) (Token id:Id.Lit_Chars val:'\tBLOB\n' span_id:4285) (Token id:Id.Lit_Chars val:'\n' span_id:4286) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:4287) (Token id:Id.Lit_Chars val:'\tmark :202\n' span_id:4288) (Token id:Id.Lit_Chars val:'\tdata <<BLOB\n' span_id:4289) (Token id:Id.Lit_Chars val:'\tnote 2\n' span_id:4290) (Token id:Id.Lit_Chars val:'\tBLOB\n' span_id:4291) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:4292) (Token id:Id.Lit_Chars val:'\n' span_id:4293) (Token id: Id.Lit_Chars val: '\tgit fast-import --export-marks=marks <input\n' span_id: 4294 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'S: filemodify with garbage after mark must fail' span_id: 4310 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4314) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=marks <<-EOF 2>err &&\n' span_id: 4315 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/S\n' span_id:4316) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4317 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4318) (Token id:Id.Lit_Chars val:'\tcommit N\n' span_id:4319) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4320) (Token id:Id.Lit_Chars val:'\tM 100644 :403x hello.c\n' span_id:4321) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4322) (Token id:Id.Lit_Chars val:'\tcat err &&\n' span_id:4323) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "space after mark" err\n' span_id:4324) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'S: filemodify with garbage after inline must fail' span_id: 4334 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4338) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=marks <<-EOF 2>err &&\n' span_id: 4339 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/S\n' span_id:4340) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4341 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4342) (Token id:Id.Lit_Chars val:'\tcommit N\n' span_id:4343) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4344) (Token id:Id.Lit_Chars val:'\tM 100644 inlineX hello.c\n' span_id:4345) (Token id:Id.Lit_Chars val:'\tdata <<BLOB\n' span_id:4346) (Token id:Id.Lit_Chars val:'\tinline\n' span_id:4347) (Token id:Id.Lit_Chars val:'\tBLOB\n' span_id:4348) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4349) (Token id:Id.Lit_Chars val:'\tcat err &&\n' span_id:4350) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "nvalid dataref" err\n' span_id:4351) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'S: filemodify with garbage after sha1 must fail' span_id: 4358 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4362) (Token id: Id.Lit_Chars val: '\tsha1=$(grep :403 marks | cut -d\\ -f2) &&\n' span_id: 4363 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=marks <<-EOF 2>err &&\n' span_id: 4364 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/S\n' span_id:4365) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4366 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4367) (Token id:Id.Lit_Chars val:'\tcommit N\n' span_id:4368) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4369) (Token id:Id.Lit_Chars val:'\tM 100644 ${sha1}x hello.c\n' span_id:4370) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4371) (Token id:Id.Lit_Chars val:'\tcat err &&\n' span_id:4372) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "space after SHA1" err\n' span_id:4373) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'S: notemodify with garabge after mark dataref must fail' span_id: 4389 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4393) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=marks <<-EOF 2>err &&\n' span_id: 4394 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/S\n' span_id:4395) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4396 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4397) (Token id:Id.Lit_Chars val:'\tcommit S note dataref markref\n' span_id:4398) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4399) (Token id:Id.Lit_Chars val:'\tN :202x :302\n' span_id:4400) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4401) (Token id:Id.Lit_Chars val:'\tcat err &&\n' span_id:4402) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "space after mark" err\n' span_id:4403) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'S: notemodify with garbage after inline dataref must fail' span_id: 4410 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4414) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=marks <<-EOF 2>err &&\n' span_id: 4415 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/S\n' span_id:4416) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4417 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4418) (Token id:Id.Lit_Chars val:'\tcommit S note dataref inline\n' span_id:4419) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4420) (Token id:Id.Lit_Chars val:'\tN inlineX :302\n' span_id:4421) (Token id:Id.Lit_Chars val:'\tdata <<BLOB\n' span_id:4422) (Token id:Id.Lit_Chars val:'\tnote blob\n' span_id:4423) (Token id:Id.Lit_Chars val:'\tBLOB\n' span_id:4424) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4425) (Token id:Id.Lit_Chars val:'\tcat err &&\n' span_id:4426) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "nvalid dataref" err\n' span_id:4427) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'S: notemodify with garbage after sha1 dataref must fail' span_id: 4434 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4438) (Token id: Id.Lit_Chars val: '\tsha1=$(grep :202 marks | cut -d\\ -f2) &&\n' span_id: 4439 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=marks <<-EOF 2>err &&\n' span_id: 4440 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/S\n' span_id:4441) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4442 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4443) (Token id:Id.Lit_Chars val:'\tcommit S note dataref sha1\n' span_id:4444) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4445) (Token id:Id.Lit_Chars val:'\tN ${sha1}x :302\n' span_id:4446) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4447) (Token id:Id.Lit_Chars val:'\tcat err &&\n' span_id:4448) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "space after SHA1" err\n' span_id:4449) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'S: notemodify with garbage after mark commit-ish must fail' span_id: 4465 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4469) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=marks <<-EOF 2>err &&\n' span_id: 4470 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/Snotes\n' span_id:4471) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4472 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4473) (Token id:Id.Lit_Chars val:'\tcommit S note commit-ish\n' span_id:4474) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4475) (Token id:Id.Lit_Chars val:'\tN :202 :302x\n' span_id:4476) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4477) (Token id:Id.Lit_Chars val:'\tcat err &&\n' span_id:4478) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "after mark" err\n' span_id:4479) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'S: from with garbage after mark must fail' span_id:4495))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4499) (Token id:Id.Lit_Chars val:'\ttest_must_fail \\\n' span_id:4500) (Token id: Id.Lit_Chars val: '\tgit fast-import --import-marks=marks --export-marks=marks <<-EOF 2>err &&\n' span_id: 4501 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/S2\n' span_id:4502) (Token id:Id.Lit_Chars val:'\tmark :303\n' span_id:4503) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4504 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4505) (Token id:Id.Lit_Chars val:'\tcommit 3\n' span_id:4506) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4507) (Token id:Id.Lit_Chars val:'\tfrom :301x\n' span_id:4508) (Token id:Id.Lit_Chars val:'\tM 100644 :403 hello.c\n' span_id:4509) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4510) (Token id:Id.Lit_Chars val:'\n' span_id:4511) (Token id:Id.Lit_Chars val:'\n' span_id:4512) (Token id: Id.Lit_Chars val: '\t# go create the commit, need it for merge test\n' span_id: 4513 ) (Token id: Id.Lit_Chars val: '\tgit fast-import --import-marks=marks --export-marks=marks <<-EOF &&\n' span_id: 4514 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/S2\n' span_id:4515) (Token id:Id.Lit_Chars val:'\tmark :303\n' span_id:4516) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4517 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4518) (Token id:Id.Lit_Chars val:'\tcommit 3\n' span_id:4519) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4520) (Token id:Id.Lit_Chars val:'\tfrom :301\n' span_id:4521) (Token id:Id.Lit_Chars val:'\tM 100644 :403 hello.c\n' span_id:4522) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4523) (Token id:Id.Lit_Chars val:'\n' span_id:4524) (Token id:Id.Lit_Chars val:'\t# now evaluate the error\n' span_id:4525) (Token id:Id.Lit_Chars val:'\tcat err &&\n' span_id:4526) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "after mark" err\n' span_id:4527) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'S: merge with garbage after mark must fail' span_id:4544))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4548) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=marks <<-EOF 2>err &&\n' span_id: 4549 ) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/S\n' span_id:4550) (Token id:Id.Lit_Chars val:'\tmark :304\n' span_id:4551) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4552 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4553) (Token id:Id.Lit_Chars val:'\tmerge 4\n' span_id:4554) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4555) (Token id:Id.Lit_Chars val:'\tfrom :302\n' span_id:4556) (Token id:Id.Lit_Chars val:'\tmerge :303x\n' span_id:4557) (Token id:Id.Lit_Chars val:'\tM 100644 :403 hello.c\n' span_id:4558) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4559) (Token id:Id.Lit_Chars val:'\tcat err &&\n' span_id:4560) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "after mark" err\n' span_id:4561) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'S: tag with garbage after mark must fail' span_id:4577))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4581) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=marks <<-EOF 2>err &&\n' span_id: 4582 ) (Token id:Id.Lit_Chars val:'\ttag refs/tags/Stag\n' span_id:4583) (Token id:Id.Lit_Chars val:'\tfrom :302x\n' span_id:4584) (Token id: Id.Lit_Chars val: '\ttagger $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4585 ) (Token id:Id.Lit_Chars val:'\tdata <<TAG\n' span_id:4586) (Token id:Id.Lit_Chars val:'\ttag S\n' span_id:4587) (Token id:Id.Lit_Chars val:'\tTAG\n' span_id:4588) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4589) (Token id:Id.Lit_Chars val:'\tcat err &&\n' span_id:4590) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "after mark" err\n' span_id:4591) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'S: cat-blob with garbage after mark must fail' span_id:4607))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4611) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=marks <<-EOF 2>err &&\n' span_id: 4612 ) (Token id:Id.Lit_Chars val:'\tcat-blob :403x\n' span_id:4613) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4614) (Token id:Id.Lit_Chars val:'\tcat err &&\n' span_id:4615) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "after mark" err\n' span_id:4616) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'S: ls with garbage after mark must fail' span_id:4632))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4636) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=marks <<-EOF 2>err &&\n' span_id: 4637 ) (Token id:Id.Lit_Chars val:'\tls :302x hello.c\n' span_id:4638) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4639) (Token id:Id.Lit_Chars val:'\tcat err &&\n' span_id:4640) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "space after mark" err\n' span_id: 4641 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'S: ls with garbage after sha1 must fail' span_id:4648))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4652) (Token id: Id.Lit_Chars val: '\tsha1=$(grep :302 marks | cut -d\\ -f2) &&\n' span_id: 4653 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import --import-marks=marks <<-EOF 2>err &&\n' span_id: 4654 ) (Token id:Id.Lit_Chars val:'\tls ${sha1}x hello.c\n' span_id:4655) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4656) (Token id:Id.Lit_Chars val:'\tcat err &&\n' span_id:4657) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "space after tree-ish" err\n' span_id: 4658 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'T: ls root tree' span_id:4678))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4682) (Token id: Id.Lit_Chars val: '\tsed -e "s/Z\\$//" >expect <<-EOF &&\n' span_id: 4683 ) (Token id:Id.Lit_Chars val:'\t040000 tree $(git rev-parse S^{tree})\tZ\n' span_id:4684) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4685) (Token id:Id.Lit_Chars val:'\tsha1=$(git rev-parse --verify S) &&\n' span_id:4686) (Token id: Id.Lit_Chars val: '\tgit fast-import --import-marks=marks <<-EOF >actual &&\n' span_id: 4687 ) (Token id:Id.Lit_Chars val:'\tls $sha1 ""\n' span_id:4688) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4689) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:4690) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'T: delete branch' span_id:4697))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4701) (Token id:Id.Lit_Chars val:'\tgit branch to-delete &&\n' span_id:4702) (Token id:Id.Lit_Chars val:'\tgit fast-import <<-EOF &&\n' span_id:4703) (Token id:Id.Lit_Chars val:'\treset refs/heads/to-delete\n' span_id:4704) (Token id:Id.Lit_Chars val:'\tfrom 0000000000000000000000000000000000000000\n' span_id:4705) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4706) (Token id: Id.Lit_Chars val: '\ttest_must_fail git rev-parse --verify refs/heads/to-delete\n' span_id: 4707 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'T: empty reset doesnt delete branch' span_id:4714))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4718) (Token id:Id.Lit_Chars val:'\tgit branch not-to-delete &&\n' span_id:4719) (Token id:Id.Lit_Chars val:'\tgit fast-import <<-EOF &&\n' span_id:4720) (Token id:Id.Lit_Chars val:'\treset refs/heads/not-to-delete\n' span_id:4721) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4722) (Token id:Id.Lit_Chars val:'\tgit show-ref &&\n' span_id:4723) (Token id:Id.Lit_Chars val:'\tgit rev-parse --verify refs/heads/not-to-delete\n' span_id:4724) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'U: initialize for U tests' span_id:4741))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4745) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:4746) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/U\n' span_id:4747) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4748 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4749) (Token id:Id.Lit_Chars val:'\ttest setup\n' span_id:4750) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4751) (Token id:Id.Lit_Chars val:'\tM 100644 inline hello.c\n' span_id:4752) (Token id:Id.Lit_Chars val:'\tdata <<BLOB\n' span_id:4753) (Token id:Id.Lit_Chars val:'\tblob 1\n' span_id:4754) (Token id:Id.Lit_Chars val:'\tBLOB\n' span_id:4755) (Token id:Id.Lit_Chars val:'\tM 100644 inline good/night.txt\n' span_id:4756) (Token id:Id.Lit_Chars val:'\tdata <<BLOB\n' span_id:4757) (Token id:Id.Lit_Chars val:'\tsleep well\n' span_id:4758) (Token id:Id.Lit_Chars val:'\tBLOB\n' span_id:4759) (Token id:Id.Lit_Chars val:'\tM 100644 inline good/bye.txt\n' span_id:4760) (Token id:Id.Lit_Chars val:'\tdata <<BLOB\n' span_id:4761) (Token id:Id.Lit_Chars val:'\tau revoir\n' span_id:4762) (Token id:Id.Lit_Chars val:'\tBLOB\n' span_id:4763) (Token id:Id.Lit_Chars val:'\n' span_id:4764) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:4765) (Token id:Id.Lit_Chars val:'\n' span_id:4766) (Token id:Id.Lit_Chars val:'\tgit fast-import <input\n' span_id:4767) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'U: filedelete file succeeds' span_id:4774))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4778) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:4779) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/U\n' span_id:4780) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4781 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4782) (Token id:Id.Lit_Chars val:'\tdelete good/night.txt\n' span_id:4783) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4784) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/U^0\n' span_id:4785) (Token id:Id.Lit_Chars val:'\tD good/night.txt\n' span_id:4786) (Token id:Id.Lit_Chars val:'\n' span_id:4787) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:4788) (Token id:Id.Lit_Chars val:'\n' span_id:4789) (Token id:Id.Lit_Chars val:'\tgit fast-import <input\n' span_id:4790) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'U: validate file delete result' span_id:4797))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4801) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:4802) (Token id: Id.Lit_Chars val: '\t:100644 000000 2907ebb4bf85d91bf0716bb3bd8a68ef48d6da76 0000000000000000000000000000000000000000 D\tgood/night.txt\n' span_id: 4803 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4804) (Token id:Id.Lit_Chars val:'\n' span_id:4805) (Token id: Id.Lit_Chars val: '\tgit diff-tree -M -r U^1 U >actual &&\n' span_id: 4806 ) (Token id:Id.Lit_Chars val:'\n' span_id:4807) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:4808) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'U: filedelete directory succeeds' span_id:4815))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4819) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:4820) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/U\n' span_id:4821) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4822 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4823) (Token id:Id.Lit_Chars val:'\tdelete good dir\n' span_id:4824) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4825) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/U^0\n' span_id:4826) (Token id:Id.Lit_Chars val:'\tD good\n' span_id:4827) (Token id:Id.Lit_Chars val:'\n' span_id:4828) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:4829) (Token id:Id.Lit_Chars val:'\n' span_id:4830) (Token id:Id.Lit_Chars val:'\tgit fast-import <input\n' span_id:4831) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'U: validate directory delete result' span_id:4838))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4842) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:4843) (Token id: Id.Lit_Chars val: '\t:100644 000000 69cb75792f55123d8389c156b0b41c2ff00ed507 0000000000000000000000000000000000000000 D\tgood/bye.txt\n' span_id: 4844 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4845) (Token id:Id.Lit_Chars val:'\n' span_id:4846) (Token id: Id.Lit_Chars val: '\tgit diff-tree -M -r U^1 U >actual &&\n' span_id: 4847 ) (Token id:Id.Lit_Chars val:'\n' span_id:4848) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:4849) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'U: filedelete root succeeds' span_id:4856))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4860) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:4861) (Token id:Id.Lit_Chars val:'\tcommit refs/heads/U\n' span_id:4862) (Token id: Id.Lit_Chars val: '\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 4863 ) (Token id:Id.Lit_Chars val:'\tdata <<COMMIT\n' span_id:4864) (Token id:Id.Lit_Chars val:'\tmust succeed\n' span_id:4865) (Token id:Id.Lit_Chars val:'\tCOMMIT\n' span_id:4866) (Token id:Id.Lit_Chars val:'\tfrom refs/heads/U^0\n' span_id:4867) (Token id:Id.Lit_Chars val:'\tD ""\n' span_id:4868) (Token id:Id.Lit_Chars val:'\n' span_id:4869) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:4870) (Token id:Id.Lit_Chars val:'\n' span_id:4871) (Token id:Id.Lit_Chars val:'\tgit fast-import <input\n' span_id:4872) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'U: validate root delete result' span_id:4879))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4883) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:4884) (Token id: Id.Lit_Chars val: '\t:100644 000000 c18147dc648481eeb65dc5e66628429a64843327 0000000000000000000000000000000000000000 D\thello.c\n' span_id: 4885 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:4886) (Token id:Id.Lit_Chars val:'\n' span_id:4887) (Token id: Id.Lit_Chars val: '\tgit diff-tree -M -r U^1 U >actual &&\n' span_id: 4888 ) (Token id:Id.Lit_Chars val:'\n' span_id:4889) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw expect actual\n' span_id:4890) ) } ) (C {(test_done)}) ] )