(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'git svn funky branch names'>)} spids: [13] ) ] ) (C {<.>} {<'./lib-git-svn.sh'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:scary_uri) op: assign_op.Equal rhs: {(SQ <'Abo-Uebernahme%20%28Bug%20%23994%29'>)} spids: [26] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:scary_ref) op: assign_op.Equal rhs: {(SQ <'Abo-Uebernahme%20(Bug%20#994)'>)} spids: [31] ) ] ) (C {<test_expect_success>} {(SQ <'setup svnrepo'>)} { (SQ <'\n'> <'\tmkdir project project/trunk project/branches project/tags &&\n'> <'\techo foo > project/trunk/foo &&\n'> <'\tsvn_cmd import -m "$test_description" project "$svnrepo/pr ject" &&\n'> <'\trm -rf project &&\n'> <'\tsvn_cmd cp -m "fun" "$svnrepo/pr ject/trunk" \\\n'> <'\t "$svnrepo/pr ject/branches/fun plugin" &&\n'> <'\tsvn_cmd cp -m "more fun!" "$svnrepo/pr ject/branches/fun plugin" \\\n'> <'\t "$svnrepo/pr ject/branches/more fun plugin!" &&\n'> <'\tsvn_cmd cp -m "scary" "$svnrepo/pr ject/branches/fun plugin" \\\n'> <'\t "$svnrepo/pr ject/branches/$scary_uri" &&\n'> <'\tsvn_cmd cp -m "leading dot" "$svnrepo/pr ject/trunk" \\\n'> <'\t\t\t"$svnrepo/pr ject/branches/.leading_dot" &&\n'> <'\tif test_have_prereq !MINGW\n'> <'\tthen\n'> <'\t\tsvn_cmd cp -m "trailing dot" "$svnrepo/pr ject/trunk" \\\n'> <'\t\t\t"$svnrepo/pr ject/branches/trailing_dot."\n'> <'\tfi &&\n'> <'\tsvn_cmd cp -m "trailing .lock" "$svnrepo/pr ject/trunk" \\\n'> <'\t\t\t"$svnrepo/pr ject/branches/trailing_dotlock.lock" &&\n'> <'\tsvn_cmd cp -m "reflog" "$svnrepo/pr ject/trunk" \\\n'> <'\t\t\t"$svnrepo/pr ject/branches/not-a@{0}reflog@" &&\n'> <'\tmaybe_start_httpd\n'> <'\t'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:non_reflog) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<svn_cmd>} {<ls>} {(DQ ($ Id.VSub_DollarName '$svnrepo') <'/pr ject/branches'>)} ) (C {<grep>} {<not-a>}) (C {<sed>} {(SQ <'s/\\///'>)}) (C {<sed>} {(SQ <'s/@/%40/'>)}) ] negated: F ) ) } spids: [80] ) ] ) (C {<test_expect_success>} {(SQ <'test clone with funky branch names'>)} { (SQ <'\n'> <'\tgit svn clone -s "$svnrepo/pr ject" project &&\n'> <'\t(\n'> <'\t\tcd project &&\n'> <'\t\tgit rev-parse "refs/remotes/origin/fun%20plugin" &&\n'> <'\t\tgit rev-parse "refs/remotes/origin/more%20fun%20plugin!" &&\n'> <'\t\tgit rev-parse "refs/remotes/origin/$scary_ref" &&\n'> <'\t\tgit rev-parse "refs/remotes/origin/%2Eleading_dot" &&\n'> <'\t\tif test_have_prereq !MINGW\n'> <'\t\tthen\n'> <'\t\t\tgit rev-parse "refs/remotes/origin/trailing_dot%2E"\n'> <'\t\tfi &&\n'> <'\t\tgit rev-parse "refs/remotes/origin/trailing_dotlock%2Elock" &&\n'> <'\t\tgit rev-parse "refs/remotes/origin/$non_reflog"\n'> <'\t)\n'> <'\t'> ) } ) (C {<test_expect_success>} {(SQ <'test dcommit to funky branch'>)} { (DQ <'\n'> <'\t(\n'> <'\t\tcd project &&\n'> <'\t\tgit reset --hard \'refs/remotes/origin/more%20fun%20plugin!\' &&\n'> <'\t\techo hello >> foo &&\n'> <'\t\tgit commit -m \'hello\' -- foo &&\n'> <'\t\tgit svn dcommit\n'> <'\t)\n'> <'\t'> ) } ) (C {<test_expect_success>} {(SQ <'test dcommit to scary branch'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd project &&\n'> <'\t\tgit reset --hard "refs/remotes/origin/$scary_ref" &&\n'> <'\t\techo urls are scary >> foo &&\n'> <'\t\tgit commit -m "eep" -- foo &&\n'> <'\t\tgit svn dcommit\n'> <'\t)\n'> <'\t'> ) } ) (C {<test_expect_success>} {(SQ <'test dcommit to trailing_dotlock branch'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd project &&\n'> <'\t\tgit reset --hard "refs/remotes/origin/trailing_dotlock%2Elock" &&\n'> <'\t\techo who names branches like this anyway? >> foo &&\n'> <'\t\tgit commit -m "bar" -- foo &&\n'> <'\t\tgit svn dcommit\n'> <'\t)\n'> <'\t'> ) } ) (C {<stop_httpd>}) (C {<test_done>}) ] )