(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'check svn dumpfile importer'>)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (FuncDef name: reinit_git body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(Pipeline children:[(C {(test_declared_prereq)} {(PIPE)})] negated:T)] action: [ (SimpleCommand words: [{(echo)} {(DQ ('reinit_git: need to declare PIPE prerequisite'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(4)} spids:[37])] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(127)} ) ] spids: [16777215 32] ) ] spids: [16777215 50] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(rm)} {(-fr)} {(.git)}) (C {(rm)} {(-f)} {(stream)} {(backflow)}) (C {(git)} {(init)}) (C {(mkfifo)} {(stream)} {(backflow)}) ] ) ] spids: [20] ) spids: [15 19] ) (FuncDef name: try_dump body: (BraceGroup children: [ (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:input) op: Equal rhs: {($ VSub_Number '$1')} spids: [97] ) ] spids: [97] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:maybe_fail_svnfe) op: Equal rhs: { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id: VTest_ColonPlus arg_word: {(test_) ($ VSub_Number '$2')} ) spids: [104 109] ) } spids: [103] ) ] spids: [103] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:maybe_fail_fi) op: Equal rhs: { (BracedVarSub token: <VSub_Number 3> suffix_op: (StringUnary op_id: VTest_ColonPlus arg_word: {(test_) ($ VSub_Number '$3')} ) spids: [115 120] ) } spids: [114] ) ] spids: [114] ) (BraceGroup children: [ (Sentence child: (SimpleCommand words: [ {($ VSub_Name '$maybe_fail_svnfe')} {(test-svn-fe)} {(DQ ($ VSub_Name '$input'))} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(stream)} spids: [137] ) (Redir op_id: Redir_Less fd: 3 arg_word: {(backflow)} spids: [140] ) ] ) terminator: <Op_Amp '&'> ) ] spids: [126] ) (SimpleCommand words: [ {($ VSub_Name '$maybe_fail_fi')} {(git)} {(fast-import)} {(--cat-blob-fd) (Lit_Other '=') (3)} ] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(stream)} spids: [161] ) (Redir op_id: Redir_Great fd: 3 arg_word: {(backflow)} spids: [164] ) ] ) (C {(wait)} {($ VSub_Bang '$!')}) ] ) ] spids: [94] ) spids: [89 93] ) (FuncDef name: properties body: (BraceGroup children: [ (While cond: [(C {(test)} {(DQ ($ VSub_Pound '$#'))} {(-ne)} {(0)})] body: (DoGroup children: [ (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:property) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [201] ) ] spids: [201] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [209] ) ] spids: [209] ) (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} { (DQ ('K ') (BracedVarSub token: <VSub_Name property> prefix_op: VSub_Pound spids: [227 230] ) ) } ) (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} {(DQ ($ VSub_Name '$property'))}) (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} { (DQ ('V ') (BracedVarSub token: <VSub_Name value> prefix_op: VSub_Pound spids: [261 264] ) ) } ) (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} {(DQ ($ VSub_Name '$value'))}) (C {(shift)} {(2)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] spids: [198 297] ) ) ] spids: [182] ) spids: [177 181] ) (FuncDef name: text_no_props body: (BraceGroup children: [ (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:text) op: Equal rhs: {(DQ ($ VSub_Number '$1') ('\n'))} spids: [310] ) ] spids: [310] ) (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} {(DQ ('Prop-content-length: 10'))}) (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} { (DQ ('Text-content-length: ') (BracedVarSub token: <VSub_Name text> prefix_op: VSub_Pound spids: [344 347] ) ) } ) (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} { (DQ ('Content-length: ') (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w: { (BracedVarSub token: <VSub_Name text> prefix_op: VSub_Pound spids: [364 367] ) } ) right: (ArithWord w:{(Lit_Digits 10)}) ) spids: [363 373] ) ) } ) (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} {(DQ )} {(DQ (PROPS-END))}) (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} {(DQ ($ VSub_Name '$text'))}) ] ) ] spids: [307] ) spids: [302 306] ) (SimpleCommand redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(empty)} spids:[412])] ) (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) (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)}) ] )