(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'check svn dumpfile importer'>)} spids: [4] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (command.ShFunction name: reinit_git body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Pipeline children: [(C {<test_declared_prereq>} {<PIPE>})] negated: T ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ <'reinit_git: need to declare PIPE prerequisite'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<127>} ) ] spids: [23 32] ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {<rm>} {<-fr>} {<.git>}) (C {<rm>} {<-f>} {<stream>} {<backflow>}) (C {<git>} {<init>}) (C {<mkfifo>} {<stream>} {<backflow>}) ] ) ] ) ) (command.ShFunction name: try_dump body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:input) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [97] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:maybe_fail_svnfe) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Number 2> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {<test_> ($ Id.VSub_Number '$2')} ) ) } spids: [103] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:maybe_fail_fi) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Number 3> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {<test_> ($ Id.VSub_Number '$3')} ) ) } spids: [114] ) ] ) (BraceGroup children: [ (command.Sentence child: (command.Simple words: [ {($ Id.VSub_DollarName '$maybe_fail_svnfe')} {<test-svn-fe>} {(DQ ($ Id.VSub_DollarName '$input'))} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<stream>} ) (redir op: <Id.Redir_Less '3<'> loc: (redir_loc.Fd fd:3) arg: {<backflow>} ) ] do_fork: T ) terminator: <Id.Op_Amp _> ) ] ) (command.Simple words: [ {($ Id.VSub_DollarName '$maybe_fail_fi')} {<git>} {<fast-import>} {<--cat-blob-fd> <Id.Lit_Equals '='> <3>} ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<stream>} ) (redir op: <Id.Redir_Great '3>'> loc: (redir_loc.Fd fd:3) arg: {<backflow>} ) ] do_fork: T ) (C {<wait>} {($ Id.VSub_Bang '$!')}) ] ) ] ) ) (command.ShFunction name: properties body: (BraceGroup children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(C {<test>} {(DQ ($ Id.VSub_Pound '$#'))} {<-ne>} {<0>})] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:property) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [201] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:value) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [209] ) ] ) (C {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} { (DQ <'K '> (braced_var_sub token: <Id.VSub_Name property> prefix_op: (Id.VSub_Pound) ) ) } ) (C {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_DollarName '$property'))} ) (C {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} { (DQ <'V '> (braced_var_sub token: <Id.VSub_Name value> prefix_op: (Id.VSub_Pound) ) ) } ) (C {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_DollarName '$value'))} ) (C {<shift>} {<2>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] ) ) ] ) ) (command.ShFunction name: text_no_props body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:text) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1') <'\n'>)} spids: [310] ) ] ) (C {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ <'Prop-content-length: 10'>)} ) (C {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} { (DQ <'Text-content-length: '> (braced_var_sub token: <Id.VSub_Name text> prefix_op: (Id.VSub_Pound) ) ) } ) (C {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} { (DQ <'Content-length: '> (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {(braced_var_sub token:<Id.VSub_Name text> prefix_op:(Id.VSub_Pound))} right: {<Id.Lit_Digits 10>} ) ) ) } ) (C {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ )} {(DQ <PROPS-END>)}) (C {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_DollarName '$text'))} ) ] ) ] ) ) (command.Simple redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<empty>})] do_fork: F ) (C {<test_expect_success>} {<PIPE>} {(SQ <'empty dump'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\techo "SVN-fs-dump-format-version: 2" >input &&\n'> <'\ttry_dump input\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'v4 dumps not supported'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\techo "SVN-fs-dump-format-version: 4" >v4.dump &&\n'> <'\ttry_dump v4.dump must_fail\n'> ) } ) (C {<test_expect_failure>} {<PIPE>} {(SQ <'empty revision'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\tprintf "rev <nobody, nobody@local>: %s\\n" "" "" >expect &&\n'> <'\tcat >emptyrev.dump <<-\\EOF &&\n'> <'\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\tRevision-number: 1\n'> <'\tProp-content-length: 0\n'> <'\tContent-length: 0\n'> <'\n'> <'\tRevision-number: 2\n'> <'\tProp-content-length: 0\n'> <'\tContent-length: 0\n'> <'\n'> <'\tEOF\n'> <'\ttry_dump emptyrev.dump &&\n'> <'\tgit log -p --format="rev <%an, %ae>: %s" HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'empty properties'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\tprintf "rev <nobody, nobody@local>: %s\\n" "" "" >expect &&\n'> <'\tcat >emptyprop.dump <<-\\EOF &&\n'> <'\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\tRevision-number: 1\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tRevision-number: 2\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\tEOF\n'> <'\ttry_dump emptyprop.dump &&\n'> <'\tgit log -p --format="rev <%an, %ae>: %s" HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'author name and commit message'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\techo "<author@example.com, author@example.com@local>" >expect.author &&\n'> <'\tcat >message <<-\\EOF &&\n'> <'\tA concise summary of the change\n'> <'\n'> <'\tA detailed description of the change, why it is needed, what\n'> <'\twas broken and why applying this is the best course of action.\n'> <'\n'> <'\t* file.c\n'> <'\t Details pertaining to an individual file.\n'> <'\tEOF\n'> <'\t{\n'> <'\t\tproperties \\\n'> <'\t\t\tsvn:author author@example.com \\\n'> <'\t\t\tsvn:log "$(cat message)" &&\n'> <'\t\techo PROPS-END\n'> <'\t} >props &&\n'> <'\t{\n'> <'\t\techo "SVN-fs-dump-format-version: 3" &&\n'> <'\t\techo &&\n'> <'\t\techo "Revision-number: 1" &&\n'> <'\t\techo Prop-content-length: $(wc -c <props) &&\n'> <'\t\techo Content-length: $(wc -c <props) &&\n'> <'\t\techo &&\n'> <'\t\tcat props\n'> <'\t} >log.dump &&\n'> <'\ttry_dump log.dump &&\n'> <'\tgit log -p --format="%B" HEAD >actual.log &&\n'> <'\tgit log --format="<%an, %ae>" >actual.author &&\n'> <'\ttest_cmp message actual.log &&\n'> <'\ttest_cmp expect.author actual.author\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'unsupported properties are ignored'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\techo author >expect &&\n'> <'\tcat >extraprop.dump <<-\\EOF &&\n'> <'\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\tRevision-number: 1\n'> <'\tProp-content-length: 56\n'> <'\tContent-length: 56\n'> <'\n'> <'\tK 8\n'> <'\tnonsense\n'> <'\tV 1\n'> <'\ty\n'> <'\tK 10\n'> <'\tsvn:author\n'> <'\tV 6\n'> <'\tauthor\n'> <'\tPROPS-END\n'> <'\tEOF\n'> <'\ttry_dump extraprop.dump &&\n'> <'\tgit log -p --format=%an HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {<test_expect_failure>} {<PIPE>} {(SQ <'timestamp and empty file'>)} { (SQ <'\n'> <'\techo author@example.com >expect.author &&\n'> <'\techo 1999-01-01 >expect.date &&\n'> <'\techo file >expect.files &&\n'> <'\treinit_git &&\n'> <'\t{\n'> <'\t\tproperties \\\n'> <'\t\t\tsvn:author author@example.com \\\n'> <'\t\t\tsvn:date "1999-01-01T00:01:002.000000Z" \\\n'> <'\t\t\tsvn:log "add empty file" &&\n'> <'\t\techo PROPS-END\n'> <'\t} >props &&\n'> <'\t{\n'> <'\t\tcat <<-EOF &&\n'> <'\t\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\t\tRevision-number: 1\n'> <'\t\tEOF\n'> <'\t\techo Prop-content-length: $(wc -c <props) &&\n'> <'\t\techo Content-length: $(wc -c <props) &&\n'> <'\t\techo &&\n'> <'\t\tcat props &&\n'> <'\t\tcat <<-\\EOF\n'> <'\n'> <'\t\tNode-path: empty-file\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: add\n'> <'\t\tContent-length: 0\n'> <'\n'> <'\t\tEOF\n'> <'\t} >emptyfile.dump &&\n'> <'\ttry_dump emptyfile.dump &&\n'> <'\tgit log --format=%an HEAD >actual.author &&\n'> <'\tgit log --date=short --format=%ad HEAD >actual.date &&\n'> <'\tgit ls-tree -r --name-only HEAD >actual.files &&\n'> <'\ttest_cmp expect.author actual.author &&\n'> <'\ttest_cmp expect.date actual.date &&\n'> <'\ttest_cmp expect.files actual.files &&\n'> <'\tgit checkout HEAD empty-file &&\n'> <'\ttest_cmp empty file\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'directory with files'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\tprintf "%s\\n" directory/file1 directory/file2 >expect.files &&\n'> <'\techo hi >hi &&\n'> <'\techo hello >hello &&\n'> <'\t{\n'> <'\t\tproperties \\\n'> <'\t\t\tsvn:author author@example.com \\\n'> <'\t\t\tsvn:date "1999-02-01T00:01:002.000000Z" \\\n'> <'\t\t\tsvn:log "add directory with some files in it" &&\n'> <'\t\techo PROPS-END\n'> <'\t} >props &&\n'> <'\t{\n'> <'\t\tcat <<-EOF &&\n'> <'\t\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\t\tRevision-number: 1\n'> <'\t\tEOF\n'> <'\t\techo Prop-content-length: $(wc -c <props) &&\n'> <'\t\techo Content-length: $(wc -c <props) &&\n'> <'\t\techo &&\n'> <'\t\tcat props &&\n'> <'\t\tcat <<-\\EOF &&\n'> <'\n'> <'\t\tNode-path: directory\n'> <'\t\tNode-kind: dir\n'> <'\t\tNode-action: add\n'> <'\t\tProp-content-length: 10\n'> <'\t\tContent-length: 10\n'> <'\n'> <'\t\tPROPS-END\n'> <'\n'> <'\t\tNode-path: directory/file1\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: add\n'> <'\t\tEOF\n'> <'\t\ttext_no_props hello &&\n'> <'\t\tcat <<-\\EOF &&\n'> <'\t\tNode-path: directory/file2\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: add\n'> <'\t\tEOF\n'> <'\t\ttext_no_props hi\n'> <'\t} >directory.dump &&\n'> <'\ttry_dump directory.dump &&\n'> <'\n'> <'\tgit ls-tree -r --name-only HEAD >actual.files &&\n'> <'\tgit checkout HEAD directory &&\n'> <'\ttest_cmp expect.files actual.files &&\n'> <'\ttest_cmp hello directory/file1 &&\n'> <'\ttest_cmp hi directory/file2\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'branch name with backslash'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\tsort <<-\\EOF >expect.branch-files &&\n'> <'\ttrunk/file1\n'> <'\ttrunk/file2\n'> <'\t"branches/UpdateFOPto094\\\\/file1"\n'> <'\t"branches/UpdateFOPto094\\\\/file2"\n'> <'\tEOF\n'> <'\n'> <'\techo hi >hi &&\n'> <'\techo hello >hello &&\n'> <'\t{\n'> <'\t\tproperties \\\n'> <'\t\t\tsvn:author author@example.com \\\n'> <'\t\t\tsvn:date "1999-02-02T00:01:02.000000Z" \\\n'> <'\t\t\tsvn:log "add directory with some files in it" &&\n'> <'\t\techo PROPS-END\n'> <'\t} >props.setup &&\n'> <'\t{\n'> <'\t\tproperties \\\n'> <'\t\t\tsvn:author brancher@example.com \\\n'> <'\t\t\tsvn:date "2007-12-06T21:38:34.000000Z" \\\n'> <'\t\t\tsvn:log "Updating fop to .94 and adjust fo-stylesheets" &&\n'> <'\t\techo PROPS-END\n'> <'\t} >props.branch &&\n'> <'\t{\n'> <'\t\tcat <<-EOF &&\n'> <'\t\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\t\tRevision-number: 1\n'> <'\t\tEOF\n'> <'\t\techo Prop-content-length: $(wc -c <props.setup) &&\n'> <'\t\techo Content-length: $(wc -c <props.setup) &&\n'> <'\t\techo &&\n'> <'\t\tcat props.setup &&\n'> <'\t\tcat <<-\\EOF &&\n'> <'\n'> <'\t\tNode-path: trunk\n'> <'\t\tNode-kind: dir\n'> <'\t\tNode-action: add\n'> <'\t\tProp-content-length: 10\n'> <'\t\tContent-length: 10\n'> <'\n'> <'\t\tPROPS-END\n'> <'\n'> <'\t\tNode-path: branches\n'> <'\t\tNode-kind: dir\n'> <'\t\tNode-action: add\n'> <'\t\tProp-content-length: 10\n'> <'\t\tContent-length: 10\n'> <'\n'> <'\t\tPROPS-END\n'> <'\n'> <'\t\tNode-path: trunk/file1\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: add\n'> <'\t\tEOF\n'> <'\t\ttext_no_props hello &&\n'> <'\t\tcat <<-\\EOF &&\n'> <'\t\tNode-path: trunk/file2\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: add\n'> <'\t\tEOF\n'> <'\t\ttext_no_props hi &&\n'> <'\t\tcat <<-\\EOF &&\n'> <'\n'> <'\t\tRevision-number: 2\n'> <'\t\tEOF\n'> <'\t\techo Prop-content-length: $(wc -c <props.branch) &&\n'> <'\t\techo Content-length: $(wc -c <props.branch) &&\n'> <'\t\techo &&\n'> <'\t\tcat props.branch &&\n'> <'\t\tcat <<-\\EOF\n'> <'\n'> <'\t\tNode-path: branches/UpdateFOPto094\\\n'> <'\t\tNode-kind: dir\n'> <'\t\tNode-action: add\n'> <'\t\tNode-copyfrom-rev: 1\n'> <'\t\tNode-copyfrom-path: trunk\n'> <'\n'> <'\t\tNode-kind: dir\n'> <'\t\tNode-action: add\n'> <'\t\tProp-content-length: 34\n'> <'\t\tContent-length: 34\n'> <'\n'> <'\t\tK 13\n'> <'\t\tsvn:mergeinfo\n'> <'\t\tV 0\n'> <'\n'> <'\t\tPROPS-END\n'> <'\t\tEOF\n'> <'\t} >branch.dump &&\n'> <'\ttry_dump branch.dump &&\n'> <'\n'> <'\tgit ls-tree -r --name-only HEAD |\n'> <'\tsort >actual.branch-files &&\n'> <'\ttest_cmp expect.branch-files actual.branch-files\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'node without action'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\tcat >inaction.dump <<-\\EOF &&\n'> <'\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\tRevision-number: 1\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tNode-path: directory\n'> <'\tNode-kind: dir\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\tEOF\n'> <'\ttry_dump inaction.dump must_fail\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'action: add node without text'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\tcat >textless.dump <<-\\EOF &&\n'> <'\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\tRevision-number: 1\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tNode-path: textless\n'> <'\tNode-kind: file\n'> <'\tNode-action: add\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\tEOF\n'> <'\ttry_dump textless.dump must_fail\n'> ) } ) (C {<test_expect_failure>} {<PIPE>} {(SQ <'change file mode but keep old content'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tOBJID\n'> <'\t:120000 100644 OBJID OBJID T\tgreeting\n'> <'\tOBJID\n'> <'\t:100644 120000 OBJID OBJID T\tgreeting\n'> <'\tOBJID\n'> <'\t:000000 100644 OBJID OBJID A\tgreeting\n'> <'\tEOF\n'> <'\techo "link hello" >expect.blob &&\n'> <'\techo hello >hello &&\n'> <'\tcat >filemode.dump <<-\\EOF &&\n'> <'\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\tRevision-number: 1\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tNode-path: greeting\n'> <'\tNode-kind: file\n'> <'\tNode-action: add\n'> <'\tProp-content-length: 10\n'> <'\tText-content-length: 11\n'> <'\tContent-length: 21\n'> <'\n'> <'\tPROPS-END\n'> <'\tlink hello\n'> <'\n'> <'\tRevision-number: 2\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tNode-path: greeting\n'> <'\tNode-kind: file\n'> <'\tNode-action: change\n'> <'\tProp-content-length: 33\n'> <'\tContent-length: 33\n'> <'\n'> <'\tK 11\n'> <'\tsvn:special\n'> <'\tV 1\n'> <'\t*\n'> <'\tPROPS-END\n'> <'\n'> <'\tRevision-number: 3\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tNode-path: greeting\n'> <'\tNode-kind: file\n'> <'\tNode-action: change\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\tEOF\n'> <'\ttry_dump filemode.dump &&\n'> <'\t{\n'> <'\t\tgit rev-list HEAD |\n'> <'\t\tgit diff-tree --root --stdin |\n'> <'\t\tsed "s/$_x40/OBJID/g"\n'> <'\t} >actual &&\n'> <'\tgit show HEAD:greeting >actual.blob &&\n'> <'\tgit show HEAD^:greeting >actual.target &&\n'> <'\ttest_cmp expect actual &&\n'> <'\ttest_cmp expect.blob actual.blob &&\n'> <'\ttest_cmp hello actual.target\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'NUL in property value'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\techo "commit message" >expect.message &&\n'> <'\t{\n'> <'\t\tproperties \\\n'> <'\t\t\tunimportant "something with a NUL (Q)" \\\n'> <'\t\t\tsvn:log "commit message"&&\n'> <'\t\techo PROPS-END\n'> <'\t} |\n'> <'\tq_to_nul >props &&\n'> <'\t{\n'> <'\t\tcat <<-\\EOF &&\n'> <'\t\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\t\tRevision-number: 1\n'> <'\t\tEOF\n'> <'\t\techo Prop-content-length: $(wc -c <props) &&\n'> <'\t\techo Content-length: $(wc -c <props) &&\n'> <'\t\techo &&\n'> <'\t\tcat props\n'> <'\t} >nulprop.dump &&\n'> <'\ttry_dump nulprop.dump &&\n'> <'\tgit diff-tree --always -s --format=%s HEAD >actual.message &&\n'> <'\ttest_cmp expect.message actual.message\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'NUL in log message, file content, and property name'>)} { (SQ <'\n'> <'\t# Caveat: svnadmin 1.6.16 (r1073529) truncates at \\0 in the\n'> <'\t# svn:specialQnotreally example.\n'> <'\treinit_git &&\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tOBJID\n'> <'\t:100644 100644 OBJID OBJID M\tgreeting\n'> <'\tOBJID\n'> <'\t:000000 100644 OBJID OBJID A\tgreeting\n'> <'\tEOF\n'> <'\tprintf "\\n%s\\n" "something with an ASCII NUL (Q)" >expect.message &&\n'> <'\tprintf "%s\\n" "helQo" >expect.hello1 &&\n'> <'\tprintf "%s\\n" "link hello" >expect.hello2 &&\n'> <'\t{\n'> <'\t\tproperties svn:log "something with an ASCII NUL (Q)" &&\n'> <'\t\techo PROPS-END\n'> <'\t} |\n'> <'\tq_to_nul >props &&\n'> <'\t{\n'> <'\t\tq_to_nul <<-\\EOF &&\n'> <'\t\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\t\tRevision-number: 1\n'> <'\t\tProp-content-length: 10\n'> <'\t\tContent-length: 10\n'> <'\n'> <'\t\tPROPS-END\n'> <'\n'> <'\t\tNode-path: greeting\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: add\n'> <'\t\tProp-content-length: 10\n'> <'\t\tText-content-length: 6\n'> <'\t\tContent-length: 16\n'> <'\n'> <'\t\tPROPS-END\n'> <'\t\thelQo\n'> <'\n'> <'\t\tRevision-number: 2\n'> <'\t\tEOF\n'> <'\t\techo Prop-content-length: $(wc -c <props) &&\n'> <'\t\techo Content-length: $(wc -c <props) &&\n'> <'\t\techo &&\n'> <'\t\tcat props &&\n'> <'\t\tq_to_nul <<-\\EOF\n'> <'\n'> <'\t\tNode-path: greeting\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: change\n'> <'\t\tProp-content-length: 43\n'> <'\t\tText-content-length: 11\n'> <'\t\tContent-length: 54\n'> <'\n'> <'\t\tK 21\n'> <'\t\tsvn:specialQnotreally\n'> <'\t\tV 1\n'> <'\t\t*\n'> <'\t\tPROPS-END\n'> <'\t\tlink hello\n'> <'\t\tEOF\n'> <'\t} >8bitclean.dump &&\n'> <'\ttry_dump 8bitclean.dump &&\n'> <'\t{\n'> <'\t\tgit rev-list HEAD |\n'> <'\t\tgit diff-tree --root --stdin |\n'> <'\t\tsed "s/$_x40/OBJID/g"\n'> <'\t} >actual &&\n'> <'\t{\n'> <'\t\tgit cat-file commit HEAD | nul_to_q &&\n'> <'\t\techo\n'> <'\t} |\n'> <'\tsed -ne "/^\\$/,\\$ p" >actual.message &&\n'> <'\tgit cat-file blob HEAD^:greeting | nul_to_q >actual.hello1 &&\n'> <'\tgit cat-file blob HEAD:greeting | nul_to_q >actual.hello2 &&\n'> <'\ttest_cmp expect actual &&\n'> <'\ttest_cmp expect.message actual.message &&\n'> <'\ttest_cmp expect.hello1 actual.hello1 &&\n'> <'\ttest_cmp expect.hello2 actual.hello2\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'change file mode and reiterate content'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tOBJID\n'> <'\t:120000 100644 OBJID OBJID T\tgreeting\n'> <'\tOBJID\n'> <'\t:100644 120000 OBJID OBJID T\tgreeting\n'> <'\tOBJID\n'> <'\t:000000 100644 OBJID OBJID A\tgreeting\n'> <'\tEOF\n'> <'\techo "link hello" >expect.blob &&\n'> <'\techo hello >hello &&\n'> <'\tcat >filemode2.dump <<-\\EOF &&\n'> <'\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\tRevision-number: 1\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tNode-path: greeting\n'> <'\tNode-kind: file\n'> <'\tNode-action: add\n'> <'\tProp-content-length: 10\n'> <'\tText-content-length: 11\n'> <'\tContent-length: 21\n'> <'\n'> <'\tPROPS-END\n'> <'\tlink hello\n'> <'\n'> <'\tRevision-number: 2\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tNode-path: greeting\n'> <'\tNode-kind: file\n'> <'\tNode-action: change\n'> <'\tProp-content-length: 33\n'> <'\tText-content-length: 11\n'> <'\tContent-length: 44\n'> <'\n'> <'\tK 11\n'> <'\tsvn:special\n'> <'\tV 1\n'> <'\t*\n'> <'\tPROPS-END\n'> <'\tlink hello\n'> <'\n'> <'\tRevision-number: 3\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tNode-path: greeting\n'> <'\tNode-kind: file\n'> <'\tNode-action: change\n'> <'\tProp-content-length: 10\n'> <'\tText-content-length: 11\n'> <'\tContent-length: 21\n'> <'\n'> <'\tPROPS-END\n'> <'\tlink hello\n'> <'\tEOF\n'> <'\ttry_dump filemode2.dump &&\n'> <'\t{\n'> <'\t\tgit rev-list HEAD |\n'> <'\t\tgit diff-tree --root --stdin |\n'> <'\t\tsed "s/$_x40/OBJID/g"\n'> <'\t} >actual &&\n'> <'\tgit show HEAD:greeting >actual.blob &&\n'> <'\tgit show HEAD^:greeting >actual.target &&\n'> <'\ttest_cmp expect actual &&\n'> <'\ttest_cmp expect.blob actual.blob &&\n'> <'\ttest_cmp hello actual.target\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'deltas supported'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\t{\n'> <'\t\t# (old) h + (inline) ello + (old) \\n\n'> <'\t\tprintf "SVNQ%b%b%s" "Q\\003\\006\\005\\004" "\\001Q\\0204\\001\\002" "ello" |\n'> <'\t\tq_to_nul\n'> <'\t} >delta &&\n'> <'\t{\n'> <'\t\tproperties \\\n'> <'\t\t\tsvn:author author@example.com \\\n'> <'\t\t\tsvn:date "1999-01-05T00:01:002.000000Z" \\\n'> <'\t\t\tsvn:log "add greeting" &&\n'> <'\t\techo PROPS-END\n'> <'\t} >props &&\n'> <'\t{\n'> <'\t\tproperties \\\n'> <'\t\t\tsvn:author author@example.com \\\n'> <'\t\t\tsvn:date "1999-01-06T00:01:002.000000Z" \\\n'> <'\t\t\tsvn:log "change it" &&\n'> <'\t\techo PROPS-END\n'> <'\t} >props2 &&\n'> <'\t{\n'> <'\t\techo SVN-fs-dump-format-version: 3 &&\n'> <'\t\techo &&\n'> <'\t\techo Revision-number: 1 &&\n'> <'\t\techo Prop-content-length: $(wc -c <props) &&\n'> <'\t\techo Content-length: $(wc -c <props) &&\n'> <'\t\techo &&\n'> <'\t\tcat props &&\n'> <'\t\tcat <<-\\EOF &&\n'> <'\n'> <'\t\tNode-path: hello\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: add\n'> <'\t\tProp-content-length: 10\n'> <'\t\tText-content-length: 3\n'> <'\t\tContent-length: 13\n'> <'\n'> <'\t\tPROPS-END\n'> <'\t\thi\n'> <'\n'> <'\t\tEOF\n'> <'\t\techo Revision-number: 2 &&\n'> <'\t\techo Prop-content-length: $(wc -c <props2) &&\n'> <'\t\techo Content-length: $(wc -c <props2) &&\n'> <'\t\techo &&\n'> <'\t\tcat props2 &&\n'> <'\t\tcat <<-\\EOF &&\n'> <'\n'> <'\t\tNode-path: hello\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: change\n'> <'\t\tText-delta: true\n'> <'\t\tProp-content-length: 10\n'> <'\t\tEOF\n'> <'\t\techo Text-content-length: $(wc -c <delta) &&\n'> <'\t\techo Content-length: $((10 + $(wc -c <delta))) &&\n'> <'\t\techo &&\n'> <'\t\techo PROPS-END &&\n'> <'\t\tcat delta\n'> <'\t} >delta.dump &&\n'> <'\ttry_dump delta.dump\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'property deltas supported'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tOBJID\n'> <'\t:100755 100644 OBJID OBJID M\tscript.sh\n'> <'\tEOF\n'> <'\t{\n'> <'\t\tproperties \\\n'> <'\t\t\tsvn:author author@example.com \\\n'> <'\t\t\tsvn:date "1999-03-06T00:01:002.000000Z" \\\n'> <'\t\t\tsvn:log "make an executable, or chmod -x it" &&\n'> <'\t\techo PROPS-END\n'> <'\t} >revprops &&\n'> <'\t{\n'> <'\t\techo SVN-fs-dump-format-version: 3 &&\n'> <'\t\techo &&\n'> <'\t\techo Revision-number: 1 &&\n'> <'\t\techo Prop-content-length: $(wc -c <revprops) &&\n'> <'\t\techo Content-length: $(wc -c <revprops) &&\n'> <'\t\techo &&\n'> <'\t\tcat revprops &&\n'> <'\t\techo &&\n'> <'\t\tcat <<-\\EOF &&\n'> <'\t\tNode-path: script.sh\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: add\n'> <'\t\tText-content-length: 0\n'> <'\t\tProp-content-length: 39\n'> <'\t\tContent-length: 39\n'> <'\n'> <'\t\tK 14\n'> <'\t\tsvn:executable\n'> <'\t\tV 4\n'> <'\t\ttrue\n'> <'\t\tPROPS-END\n'> <'\n'> <'\t\tEOF\n'> <'\t\techo Revision-number: 2 &&\n'> <'\t\techo Prop-content-length: $(wc -c <revprops) &&\n'> <'\t\techo Content-length: $(wc -c <revprops) &&\n'> <'\t\techo &&\n'> <'\t\tcat revprops &&\n'> <'\t\techo &&\n'> <'\t\tcat <<-\\EOF\n'> <'\t\tNode-path: script.sh\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: change\n'> <'\t\tProp-delta: true\n'> <'\t\tProp-content-length: 30\n'> <'\t\tContent-length: 30\n'> <'\n'> <'\t\tD 14\n'> <'\t\tsvn:executable\n'> <'\t\tPROPS-END\n'> <'\t\tEOF\n'> <'\t} >propdelta.dump &&\n'> <'\ttry_dump propdelta.dump &&\n'> <'\t{\n'> <'\t\tgit rev-list HEAD |\n'> <'\t\tgit diff-tree --stdin |\n'> <'\t\tsed "s/$_x40/OBJID/g"\n'> <'\t} >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'properties on /'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\tcat <<-\\EOF >expect &&\n'> <'\tOBJID\n'> <'\tOBJID\n'> <'\t:000000 100644 OBJID OBJID A\tgreeting\n'> <'\tEOF\n'> <'\tsed -e "s/X$//" <<-\\EOF >changeroot.dump &&\n'> <'\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\tRevision-number: 1\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tNode-path: greeting\n'> <'\tNode-kind: file\n'> <'\tNode-action: add\n'> <'\tText-content-length: 0\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tRevision-number: 2\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tNode-path: X\n'> <'\tNode-kind: dir\n'> <'\tNode-action: change\n'> <'\tProp-delta: true\n'> <'\tProp-content-length: 43\n'> <'\tContent-length: 43\n'> <'\n'> <'\tK 10\n'> <'\tsvn:ignore\n'> <'\tV 11\n'> <'\tbuild-area\n'> <'\n'> <'\tPROPS-END\n'> <'\tEOF\n'> <'\ttry_dump changeroot.dump &&\n'> <'\t{\n'> <'\t\tgit rev-list HEAD |\n'> <'\t\tgit diff-tree --root --always --stdin |\n'> <'\t\tsed "s/$_x40/OBJID/g"\n'> <'\t} >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'deltas for typechange'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tOBJID\n'> <'\t:120000 100644 OBJID OBJID T\ttest-file\n'> <'\tOBJID\n'> <'\t:100755 120000 OBJID OBJID T\ttest-file\n'> <'\tOBJID\n'> <'\t:000000 100755 OBJID OBJID A\ttest-file\n'> <'\tEOF\n'> <'\tcat >deleteprop.dump <<-\\EOF &&\n'> <'\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\tRevision-number: 1\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tNode-path: test-file\n'> <'\tNode-kind: file\n'> <'\tNode-action: add\n'> <'\tProp-delta: true\n'> <'\tProp-content-length: 35\n'> <'\tText-content-length: 17\n'> <'\tContent-length: 52\n'> <'\n'> <'\tK 14\n'> <'\tsvn:executable\n'> <'\tV 0\n'> <'\n'> <'\tPROPS-END\n'> <'\tlink testing 123\n'> <'\n'> <'\tRevision-number: 2\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tNode-path: test-file\n'> <'\tNode-kind: file\n'> <'\tNode-action: change\n'> <'\tProp-delta: true\n'> <'\tProp-content-length: 53\n'> <'\tText-content-length: 17\n'> <'\tContent-length: 70\n'> <'\n'> <'\tK 11\n'> <'\tsvn:special\n'> <'\tV 1\n'> <'\t*\n'> <'\tD 14\n'> <'\tsvn:executable\n'> <'\tPROPS-END\n'> <'\tlink testing 231\n'> <'\n'> <'\tRevision-number: 3\n'> <'\tProp-content-length: 10\n'> <'\tContent-length: 10\n'> <'\n'> <'\tPROPS-END\n'> <'\n'> <'\tNode-path: test-file\n'> <'\tNode-kind: file\n'> <'\tNode-action: change\n'> <'\tProp-delta: true\n'> <'\tProp-content-length: 27\n'> <'\tText-content-length: 17\n'> <'\tContent-length: 44\n'> <'\n'> <'\tD 11\n'> <'\tsvn:special\n'> <'\tPROPS-END\n'> <'\tlink testing 321\n'> <'\tEOF\n'> <'\ttry_dump deleteprop.dump &&\n'> <'\t{\n'> <'\t\tgit rev-list HEAD |\n'> <'\t\tgit diff-tree --root --stdin |\n'> <'\t\tsed "s/$_x40/OBJID/g"\n'> <'\t} >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'deltas need not consume the whole preimage'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tOBJID\n'> <'\t:120000 100644 OBJID OBJID T\tpostimage\n'> <'\tOBJID\n'> <'\t:100644 120000 OBJID OBJID T\tpostimage\n'> <'\tOBJID\n'> <'\t:000000 100644 OBJID OBJID A\tpostimage\n'> <'\tEOF\n'> <'\techo "first preimage" >expect.1 &&\n'> <'\tprintf target >expect.2 &&\n'> <'\tprintf lnk >expect.3 &&\n'> <'\t{\n'> <'\t\tprintf "SVNQ%b%b%b" "QQ\\017\\001\\017" "\\0217" "first preimage\\n" |\n'> <'\t\tq_to_nul\n'> <'\t} >delta.1 &&\n'> <'\t{\n'> <'\t\tproperties svn:special "*" &&\n'> <'\t\techo PROPS-END\n'> <'\t} >symlink.props &&\n'> <'\t{\n'> < '\t\tprintf "SVNQ%b%b%b" "Q\\002\\013\\004\\012" "\\0201\\001\\001\\0211" "lnk target" |\n' > <'\t\tq_to_nul\n'> <'\t} >delta.2 &&\n'> <'\t{\n'> <'\t\tprintf "SVNQ%b%b" "Q\\004\\003\\004Q" "\\001Q\\002\\002" |\n'> <'\t\tq_to_nul\n'> <'\t} >delta.3 &&\n'> <'\t{\n'> <'\t\tcat <<-\\EOF &&\n'> <'\t\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\t\tRevision-number: 1\n'> <'\t\tProp-content-length: 10\n'> <'\t\tContent-length: 10\n'> <'\n'> <'\t\tPROPS-END\n'> <'\n'> <'\t\tNode-path: postimage\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: add\n'> <'\t\tText-delta: true\n'> <'\t\tProp-content-length: 10\n'> <'\t\tEOF\n'> <'\t\techo Text-content-length: $(wc -c <delta.1) &&\n'> <'\t\techo Content-length: $((10 + $(wc -c <delta.1))) &&\n'> <'\t\techo &&\n'> <'\t\techo PROPS-END &&\n'> <'\t\tcat delta.1 &&\n'> <'\t\tcat <<-\\EOF &&\n'> <'\n'> <'\t\tRevision-number: 2\n'> <'\t\tProp-content-length: 10\n'> <'\t\tContent-length: 10\n'> <'\n'> <'\t\tPROPS-END\n'> <'\n'> <'\t\tNode-path: postimage\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: change\n'> <'\t\tText-delta: true\n'> <'\t\tEOF\n'> <'\t\techo Prop-content-length: $(wc -c <symlink.props) &&\n'> <'\t\techo Text-content-length: $(wc -c <delta.2) &&\n'> <'\t\techo Content-length: $(($(wc -c <symlink.props) + $(wc -c <delta.2))) &&\n'> <'\t\techo &&\n'> <'\t\tcat symlink.props &&\n'> <'\t\tcat delta.2 &&\n'> <'\t\tcat <<-\\EOF &&\n'> <'\n'> <'\t\tRevision-number: 3\n'> <'\t\tProp-content-length: 10\n'> <'\t\tContent-length: 10\n'> <'\n'> <'\t\tPROPS-END\n'> <'\n'> <'\t\tNode-path: postimage\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: change\n'> <'\t\tText-delta: true\n'> <'\t\tProp-content-length: 10\n'> <'\t\tEOF\n'> <'\t\techo Text-content-length: $(wc -c <delta.3) &&\n'> <'\t\techo Content-length: $((10 + $(wc -c <delta.3))) &&\n'> <'\t\techo &&\n'> <'\t\techo PROPS-END &&\n'> <'\t\tcat delta.3 &&\n'> <'\t\techo\n'> <'\t} >deltapartial.dump &&\n'> <'\ttry_dump deltapartial.dump &&\n'> <'\t{\n'> <'\t\tgit rev-list HEAD |\n'> <'\t\tgit diff-tree --root --stdin |\n'> <'\t\tsed "s/$_x40/OBJID/g"\n'> <'\t} >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\tgit show HEAD:postimage >actual.3 &&\n'> <'\tgit show HEAD^:postimage >actual.2 &&\n'> <'\tgit show HEAD^^:postimage >actual.1 &&\n'> <'\ttest_cmp expect.1 actual.1 &&\n'> <'\ttest_cmp expect.2 actual.2 &&\n'> <'\ttest_cmp expect.3 actual.3\n'> ) } ) (C {<test_expect_success>} {<PIPE>} {(SQ <'no hang for delta trying to read past end of preimage'>)} { (SQ <'\n'> <'\treinit_git &&\n'> <'\t{\n'> <'\t\t# COPY 1\n'> <'\t\tprintf "SVNQ%b%b" "Q\\001\\001\\002Q" "\\001Q" |\n'> <'\t\tq_to_nul\n'> <'\t} >greedy.delta &&\n'> <'\t{\n'> <'\t\tcat <<-\\EOF &&\n'> <'\t\tSVN-fs-dump-format-version: 3\n'> <'\n'> <'\t\tRevision-number: 1\n'> <'\t\tProp-content-length: 10\n'> <'\t\tContent-length: 10\n'> <'\n'> <'\t\tPROPS-END\n'> <'\n'> <'\t\tNode-path: bootstrap\n'> <'\t\tNode-kind: file\n'> <'\t\tNode-action: add\n'> <'\t\tText-delta: true\n'> <'\t\tProp-content-length: 10\n'> <'\t\tEOF\n'> <'\t\techo Text-content-length: $(wc -c <greedy.delta) &&\n'> <'\t\techo Content-length: $((10 + $(wc -c <greedy.delta))) &&\n'> <'\t\techo &&\n'> <'\t\techo PROPS-END &&\n'> <'\t\tcat greedy.delta &&\n'> <'\t\techo\n'> <'\t} >greedydelta.dump &&\n'> <'\ttry_dump greedydelta.dump must_fail might_fail\n'> ) } ) (C {<test_expect_success>} {(SQ <'set up svn repo'>)} { (SQ <'\n'> <'\tsvnconf=$PWD/svnconf &&\n'> <'\tmkdir -p "$svnconf" &&\n'> <'\n'> <'\tif\n'> <'\t\tsvnadmin -h >/dev/null 2>&1 &&\n'> <'\t\tsvnadmin create simple-svn &&\n'> <'\t\tsvnadmin load simple-svn <"$TEST_DIRECTORY/t9135/svn.dump" &&\n'> <'\t\tsvn export --config-dir "$svnconf" "file://$PWD/simple-svn" simple-svnco\n'> <'\tthen\n'> <'\t\ttest_set_prereq SVNREPO\n'> <'\tfi\n'> ) } ) (C {<test_expect_success>} {<SVNREPO> <Id.Lit_Comma ','> <PIPE>} {(SQ <'t9135/svn.dump'>)} { (SQ <'\n'> <'\tmkdir -p simple-git &&\n'> <'\t(\n'> <'\t\tcd simple-git &&\n'> <'\t\treinit_git &&\n'> <'\t\ttry_dump "$TEST_DIRECTORY/t9135/svn.dump"\n'> <'\t) &&\n'> <'\t(\n'> <'\t\tcd simple-svnco &&\n'> <'\t\tgit init &&\n'> <'\t\tgit add . &&\n'> <'\t\tgit fetch ../simple-git master &&\n'> <'\t\tgit diff --exit-code FETCH_HEAD\n'> <'\t)\n'> ) } ) (C {<test_done>}) ] )