(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'git svn property tests'>)} spids: [13] ) ] ) (C {<.>} {<'./lib-git-svn.sh'>}) (C {<mkdir>} {<import>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_crlf) op: assign_op.Equal rhs: (word.Empty) spids: [28] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_lf) op: assign_op.Equal rhs: (word.Empty) spids: [30] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_cr) op: assign_op.Equal rhs: (word.Empty) spids: [32] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_ne_crlf) op: assign_op.Equal rhs: (word.Empty) spids: [34] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_ne_lf) op: assign_op.Equal rhs: (word.Empty) spids: [36] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_ne_cr) op: assign_op.Equal rhs: (word.Empty) spids: [38] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty) op: assign_op.Equal rhs: (word.Empty) spids: [40] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty_lf) op: assign_op.Equal rhs: (word.Empty) spids: [42] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty_cr) op: assign_op.Equal rhs: (word.Empty) spids: [44] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty_crlf) op: assign_op.Equal rhs: (word.Empty) spids: [46] ) ] ) (C {<cd>} {<import>}) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<kw.c>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>} here_end_span_id: 66 stdin_parts: [ <'/* Somebody prematurely put a keyword into this file */\n'> <'/* $Id$ */\n'> ] ) ) ] do_fork: T ) (command.Simple words: [ {<printf>} { (DQ <Hello> <Id.Lit_Other '\\'> <r> <Id.Lit_Other '\\'> <nWorld> <Id.Lit_Other '\\'> <r> <Id.Lit_Other '\\'> <n> ) } ] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<crlf>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_crlf) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<hash-object>} {<-w>} {<crlf>}) ) } spids: [88] ) ] ) (command.Simple words: [{<printf>} {(DQ <Hello> <Id.Lit_Other '\\'> <rWorld> <Id.Lit_Other '\\'> <r>)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<cr>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_cr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<hash-object>} {<-w>} {<cr>}) ) } spids: [115] ) ] ) (command.Simple words: [{<printf>} {(DQ <Hello> <Id.Lit_Other '\\'> <nWorld> <Id.Lit_Other '\\'> <n>)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<lf>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_lf) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<hash-object>} {<-w>} {<lf>}) ) } spids: [142] ) ] ) (command.Simple words: [{<printf>} {(DQ <Hello> <Id.Lit_Other '\\'> <r> <Id.Lit_Other '\\'> <nWorld>)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<ne_crlf>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_ne_crlf) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<hash-object>} {<-w>} {<ne_crlf>}) ) } spids: [170] ) ] ) (command.Simple words: [{<printf>} {(DQ <Hello> <Id.Lit_Other '\\'> <nWorld>)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<ne_lf>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_ne_lf) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<hash-object>} {<-w>} {<ne_lf>}) ) } spids: [195] ) ] ) (command.Simple words: [{<printf>} {(DQ <Hello> <Id.Lit_Other '\\'> <rWorld>)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<ne_cr>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_ne_cr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<hash-object>} {<-w>} {<ne_cr>}) ) } spids: [220] ) ] ) (C {<touch>} {<empty>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<hash-object>} {<-w>} {<empty>}) ) } spids: [238] ) ] ) (command.Simple words: [{<printf>} {(DQ <Id.Lit_Other '\\'> <n>)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<empty_lf>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty_lf) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<hash-object>} {<-w>} {<empty_lf>}) ) } spids: [262] ) ] ) (command.Simple words: [{<printf>} {(DQ <Id.Lit_Other '\\'> <r>)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<empty_cr>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty_cr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<hash-object>} {<-w>} {<empty_cr>}) ) } spids: [286] ) ] ) (command.Simple words: [{<printf>} {(DQ <Id.Lit_Other '\\'> <r> <Id.Lit_Other '\\'> <n>)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<empty_crlf>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty_crlf) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<hash-object>} {<-w>} {<empty_crlf>}) ) } spids: [312] ) ] ) (command.Simple words: [ {<svn_cmd>} {<import>} {<--no-auto-props>} {<-m>} {(SQ <'import for git svn'>)} {<.>} {(DQ ($ Id.VSub_DollarName '$svnrepo'))} ] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) (C {<cd>} {<..>}) (C {<rm>} {<-rf>} {<import>}) (C {<test_expect_success>} {(SQ <'checkout working copy from svn'>)} {(SQ <'svn co "$svnrepo" test_wc'>)} ) (C {<test_expect_success>} {(SQ <'setup some commits to svn'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test_wc &&\n'> <'\t\techo Greetings >> kw.c &&\n'> <'\t\tpoke kw.c &&\n'> <'\t\tsvn_cmd commit -m "Not yet an Id" &&\n'> <'\t\techo Hello world >> kw.c &&\n'> <'\t\tpoke kw.c &&\n'> <'\t\tsvn_cmd commit -m "Modified file, but still not yet an Id" &&\n'> <'\t\tsvn_cmd propset svn:keywords Id kw.c &&\n'> <'\t\tpoke kw.c &&\n'> <'\t\tsvn_cmd commit -m "Propset Id"\n'> <'\t)\n'> ) } ) (C {<test_expect_success>} {(SQ <'initialize git svn'>)} {(SQ <'git svn init "$svnrepo"'>)}) (C {<test_expect_success>} {(SQ <'fetch revisions from svn'>)} {(SQ <'git svn fetch'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:name) op: assign_op.Equal rhs: {(SQ <'test svn:keywords ignoring'>)} spids: [411] ) ] ) (C {<test_expect_success>} {(DQ ($ Id.VSub_DollarName '$name'))} { (SQ <'git checkout -b mybranch remotes/git-svn &&\n'> <'\techo Hi again >> kw.c &&\n'> <'\tgit commit -a -m "test keywords ignoring" &&\n'> <'\tgit svn set-tree remotes/git-svn..mybranch &&\n'> <'\tgit pull . remotes/git-svn'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:expect) op: assign_op.Equal rhs: {(SQ <'/* $Id$ */'>)} spids: [433] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:got) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-ne>} {<2p>} {<kw.c>}) ) ) } spids: [438] ) ] ) (C {<test_expect_success>} {(SQ <'raw $Id$ found in kw.c'>)} { (DQ <'test \''> ($ Id.VSub_DollarName '$expect') <'\' = \''> ($ Id.VSub_DollarName '$got') <'\''>) } ) (C {<test_expect_success>} {(DQ <'propset CR on crlf files'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test_wc &&\n'> <'\t\tsvn_cmd propset svn:eol-style CR empty &&\n'> <'\t\tsvn_cmd propset svn:eol-style CR crlf &&\n'> <'\t\tsvn_cmd propset svn:eol-style CR ne_crlf &&\n'> <'\t\tsvn_cmd commit -m "propset CR on crlf files"\n'> <'\t )\n'> ) } ) (C {<test_expect_success>} {(SQ <'fetch and pull latest from svn and checkout a new wc'>)} { (SQ <'git svn fetch &&\n'> <'\t git pull . remotes/git-svn &&\n'> <'\t svn_cmd co "$svnrepo" new_wc'> ) } ) (command.ForEach iter_name: i iter_words: [ {<crlf>} {<ne_crlf>} {<lf>} {<ne_lf>} {<cr>} {<ne_cr>} {<empty_cr>} {<empty_lf>} {<empty>} {<empty_crlf>} ] do_arg_iter: F body: (command.DoGroup children: [ (C {<test_expect_success>} {(DQ <'Comparing '> ($ Id.VSub_DollarName '$i'))} {(DQ <'cmp '> ($ Id.VSub_DollarName '$i') <' new_wc/'> ($ Id.VSub_DollarName '$i'))} ) ] ) ) (C {<cd>} {<test_wc>}) (command.Simple words: [{<printf>} {(SQ <'$Id$\\rHello\\rWorld\\r'>)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<cr>})] do_fork: T ) (command.Simple words: [{<printf>} {(SQ <'$Id$\\rHello\\rWorld'>)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<ne_cr>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_cr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<printf>} {(SQ <'$Id$\\r\\nHello\\r\\nWorld\\r\\n'>)}) (C {<git>} {<hash-object>} {<--stdin>}) ] negated: F ) ) } spids: [573] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_ne_cr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<printf>} {(SQ <'$Id$\\r\\nHello\\r\\nWorld'>)}) (C {<git>} {<hash-object>} {<--stdin>}) ] negated: F ) ) } spids: [591] ) ] ) (C {<test_expect_success>} {(SQ <'Set CRLF on cr files'>)} { (SQ <'svn_cmd propset svn:eol-style CRLF cr &&\n'> <'\t svn_cmd propset svn:eol-style CRLF ne_cr &&\n'> <'\t svn_cmd propset svn:keywords Id cr &&\n'> <'\t svn_cmd propset svn:keywords Id ne_cr &&\n'> <'\t svn_cmd commit -m "propset CRLF on cr files"'> ) } ) (C {<cd>} {<..>}) (C {<test_expect_success>} {(SQ <'fetch and pull latest from svn'>)} {(SQ <'git svn fetch && git pull . remotes/git-svn'>)} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:b_cr) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<hash-object>} {<cr>}) ) ) } spids: [642] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:b_ne_cr) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<hash-object>} {<ne_cr>}) ) ) } spids: [653] ) ] ) (C {<test_expect_success>} {(SQ <'CRLF + $Id$'>)} { (DQ <'test \''> ($ Id.VSub_DollarName '$a_cr') <'\' = \''> ($ Id.VSub_DollarName '$b_cr') <'\''>) } ) (C {<test_expect_success>} {(SQ <'CRLF + $Id$ (no newline)'>)} { (DQ <'test \''> ($ Id.VSub_DollarName '$a_ne_cr') <'\' = \''> ($ Id.VSub_DollarName '$b_ne_cr') <'\''> ) } ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<show-ignore.expect>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>} here_end_span_id: 716 stdin_parts: [ <'\n'> <'# /\n'> <'/no-such-file*\n'> <'\n'> <'# /deeply/\n'> <'/deeply/no-such-file*\n'> <'\n'> <'# /deeply/nested/\n'> <'/deeply/nested/no-such-file*\n'> <'\n'> <'# /deeply/nested/directory/\n'> <'/deeply/nested/directory/no-such-file*\n'> ] ) ) ] do_fork: T ) (C {<test_expect_success>} {(SQ <'test show-ignore'>)} { (DQ <'\n'> <'\t(\n'> <'\t\tcd test_wc &&\n'> <'\t\tmkdir -p deeply/nested/directory &&\n'> <'\t\ttouch deeply/nested/directory/.keep &&\n'> <'\t\tsvn_cmd add deeply &&\n'> <'\t\tsvn_cmd up &&\n'> <'\t\tsvn_cmd propset -R svn:ignore \'\n'> <'no-such-file*\n'> <'\' .\n'> <'\t\tsvn_cmd commit -m \'propset svn:ignore\'\n'> <'\t) &&\n'> <'\tgit svn show-ignore > show-ignore.got &&\n'> <'\tcmp show-ignore.expect show-ignore.got\n'> ) } ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<create-ignore.expect>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>} here_end_span_id: 752 stdin_parts: [<'/no-such-file*\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<create-ignore-index.expect>} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>} here_end_span_id: 767 stdin_parts: [ <'100644 8c52e5dfcd0a8b6b6bcfe6b41b89bcbf493718a5 0\t.gitignore\n'> <'100644 8c52e5dfcd0a8b6b6bcfe6b41b89bcbf493718a5 0\tdeeply/.gitignore\n'> <'100644 8c52e5dfcd0a8b6b6bcfe6b41b89bcbf493718a5 0\tdeeply/nested/.gitignore\n'> < '100644 8c52e5dfcd0a8b6b6bcfe6b41b89bcbf493718a5 0\tdeeply/nested/directory/.gitignore\n' > ] ) ) ] do_fork: T ) (C {<test_expect_success>} {(SQ <'test create-ignore'>)} { (DQ <'\n'> <'\tgit svn fetch && git pull . remotes/git-svn &&\n'> <'\tgit svn create-ignore &&\n'> <'\tcmp ./.gitignore create-ignore.expect &&\n'> <'\tcmp ./deeply/.gitignore create-ignore.expect &&\n'> <'\tcmp ./deeply/nested/.gitignore create-ignore.expect &&\n'> <'\tcmp ./deeply/nested/directory/.gitignore create-ignore.expect &&\n'> <'\tgit ls-files -s | grep gitignore | cmp - create-ignore-index.expect\n'> <'\t'> ) } ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<prop.expect>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>} here_end_span_id: 800 stdin_parts: [<'\n'> <'no-such-file*\n'> <'\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<prop2.expect>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>} here_end_span_id: 811 stdin_parts: [<'8\n'>] ) ) ] do_fork: T ) (C {<test_expect_success>} {(SQ <'test propget'>)} { (DQ <'\n'> <'\tgit svn propget svn:ignore . | cmp - prop.expect &&\n'> <'\tcd deeply &&\n'> <'\tgit svn propget svn:ignore . | cmp - ../prop.expect &&\n'> <'\tgit svn propget svn:entry:committed-rev nested/directory/.keep '> <'\t | cmp - ../prop2.expect &&\n'> <'\tgit svn propget svn:ignore .. | cmp - ../prop.expect &&\n'> <'\tgit svn propget svn:ignore nested/ | cmp - ../prop.expect &&\n'> <'\tgit svn propget svn:ignore ./nested | cmp - ../prop.expect &&\n'> <'\tgit svn propget svn:ignore .././deeply/nested | cmp - ../prop.expect\n'> <'\t'> ) } ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<prop.expect>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>} here_end_span_id: 859 stdin_parts: [ <'Properties on \'.\':\n'> <' svn:entry:committed-date\n'> <' svn:entry:committed-rev\n'> <' svn:entry:last-author\n'> <' svn:entry:uuid\n'> <' svn:ignore\n'> ] ) ) ] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<prop2.expect>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>} here_end_span_id: 874 stdin_parts: [ <'Properties on \'nested/directory/.keep\':\n'> <' svn:entry:committed-date\n'> <' svn:entry:committed-rev\n'> <' svn:entry:last-author\n'> <' svn:entry:uuid\n'> ] ) ) ] do_fork: T ) (C {<test_expect_success>} {(SQ <'test proplist'>)} { (DQ <'\n'> <'\tgit svn proplist . | cmp - prop.expect &&\n'> <'\tgit svn proplist nested/directory/.keep | cmp - prop2.expect\n'> <'\t'> ) } ) (C {<test_done>}) ] )