(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: { (SQ <"git-cvsserver and git refspecs\n"> <"\n"> <"tests ability for git-cvsserver to switch between and compare\n"> <"tags, branches and other git refspecs"> ) } spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (FuncDef name: check_start_tree body: (BraceGroup children: [ (C {(rm)} {(-f)} {(DQ ($ VSub_Name "$WORKDIR") (/list.expected))}) (SimpleCommand words: [{(echo)} {(DQ ("start ") ($ VSub_Number "$1"))}] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {(DQ (${ VSub_Name WORKDIR) (/check.log))} spids: [46] ) ] ) ] spids: [26] ) spids: [22 25] ) (FuncDef name: check_file body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sandbox) op: Equal rhs: {(DQ ($ VSub_Number "$1"))} spids: [64] ) ] spids: [64] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:file) op: Equal rhs: {(DQ ($ VSub_Number "$2"))} spids: [70] ) ] spids: [70] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ver) op: Equal rhs: {(DQ ($ VSub_Number "$3"))} spids: [76] ) ] spids: [76] ) (SimpleCommand words: [{(git)} {(show)} {(DQ (${ VSub_Name ver) (":") (${ VSub_Name file))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Name "$WORKDIR") (/check.got))} spids: [101] ) (Redir op_id: Redir_Great fd: 2 arg_word: {(DQ ($ VSub_Name "$WORKDIR") (/check.stderr))} spids: [107] ) ] more_env: [(env_pair name:GIT_DIR val:{($ VSub_Name "$SERVERDIR")} spids:[82])] ) (C {(test_cmp)} {(DQ ($ VSub_Name "$WORKDIR") (/check.got))} {(DQ ($ VSub_Name "$sandbox") (/) ($ VSub_Name "$file"))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:stat) op: Equal rhs: {($ VSub_QMark "$?")} spids: [128] ) ] spids: [128] ) (SimpleCommand words: [ {(echo)} { (DQ ("check_file ") ($ VSub_Name "$sandbox") (" ") ($ VSub_Name "$file") (" ") ($ VSub_Name "$ver") (" : ") ($ VSub_Name "$stat") ) } ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {(DQ ($ VSub_Name "$WORKDIR") (/check.log))} spids: [145] ) ] ) (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name "$file"))}] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {(DQ ($ VSub_Name "$WORKDIR") (/list.expected))} spids: [158] ) ] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_Name "$stat")} ) ] spids: [61] ) spids: [57 60] ) (FuncDef name: check_end_tree body: (BraceGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sandbox) op: Equal rhs: {(DQ ($ VSub_Number "$1"))} spids: [179] ) ] spids: [179] ) (AndOr children: [ (SimpleCommand words: [ {(find)} {(DQ ($ VSub_Name "$sandbox"))} {(-name)} {(CVS)} {(-prune)} {(-o)} {(-type)} {(f)} {(-print)} ] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Name "$WORKDIR") (/list.actual))} spids: [207] ) ] ) (AndOr children: [ (SimpleCommand words: [{(sort)}] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Name "$WORKDIR") (/list.expected))} spids: [218] ) (Redir op_id: Redir_Great fd: -1 arg_word: {(expected)} spids: [224] ) ] ) (AndOr children: [ (Pipeline children: [ (SimpleCommand words: [{(sort)}] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Name "$WORKDIR") (/list.actual))} spids: [232] ) ] ) (SimpleCommand words: [{(sed)} {(-e)} {(DQ ("s%cvswork/%%"))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(actual)} spids: [248] ) ] ) ] negated: False ) (AndOr children: [ (C {(test_cmp)} {(expected)} {(actual)}) (C {(rm)} {(expected)} {(actual)}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [176] ) spids: [172 175] ) (FuncDef name: check_end_full_tree body: (BraceGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sandbox) op: Equal rhs: {(DQ ($ VSub_Number "$1"))} spids: [279] ) ] spids: [279] ) (AndOr children: [ (SimpleCommand words: [{(sort)}] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Name "$WORKDIR") (/list.expected))} spids: [289] ) (Redir op_id: Redir_Great fd: -1 arg_word: {(expected)} spids: [295] ) ] ) (AndOr children: [ (Pipeline children: [ (C {(find)} {(DQ ($ VSub_Name "$sandbox"))} {(-name)} {(CVS)} {(-prune)} {(-o)} {(-type)} {(f)} {(-print)} ) (C {(sed)} {(-e)} {(DQ ("s%") ($ VSub_Name "$sandbox") ("/%%"))}) (SimpleCommand words: [{(sort)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(act1)} spids: [338] ) ] ) ] negated: False ) (AndOr children: [ (C {(test_cmp)} {(expected)} {(act1)}) (AndOr children: [ (Pipeline children: [ (C {(git)} {(ls-tree)} {(--name-only)} {(-r)} {(DQ ($ VSub_Number "$2"))} ) (SimpleCommand words: [{(sort)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(act2)} spids: [369] ) ] ) ] negated: False ) (AndOr children: [ (C {(test_cmp)} {(expected)} {(act2)}) (C {(rm)} {(expected)} {(act1)} {(act2)}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [276] ) spids: [272 275] ) (FuncDef name: check_diff body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:diffFile) op: Equal rhs: {(DQ ($ VSub_Number "$1"))} spids: [406] ) ] spids: [406] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:vOld) op: Equal rhs: {(DQ ($ VSub_Number "$2"))} spids: [412] ) ] spids: [412] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:vNew) op: Equal rhs: {(DQ ($ VSub_Number "$3"))} spids: [418] ) ] spids: [418] ) (C {(rm)} {(-rf)} {(diffSandbox)}) (AndOr children: [ (C {(git)} {(clone)} {(-q)} {(-n)} {(.)} {(diffSandbox)}) (Subshell child: (AndOr children: [ (C {(cd)} {(diffSandbox)}) (AndOr children: [ (C {(git)} {(checkout)} {(DQ ($ VSub_Name "$vOld"))}) (AndOr children: [ (SimpleCommand words: [{(git)} {(apply)} {(-p0)} {(--index)}] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ (../) ($ VSub_Name "$diffFile"))} spids: [475] ) ] ) (C {(git)} {(diff)} {(--exit-code)} {(DQ ($ VSub_Name "$vNew"))}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(check_diff_apply.out)} spids: [497] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[500]) ] spids: [446 495] ) ] op_id: Op_DAmp ) ] spids: [403] ) spids: [399 402] ) (SimpleCommand words: [{(cvs)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[512]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[515]) ] ) (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_QMark "$?")} {(-ne)} {(1)})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skip_all) op: Equal rhs: {(SQ <"skipping git-cvsserver tests, cvs not found">)} spids: [531] ) ] spids: [531] ) (C {(test_done)}) ] spids: [-1 528] ) ] spids: [-1 539] ) (If arms: [ (if_arm cond: [(Pipeline children:[(C {(test_have_prereq)} {(PERL)})] negated:True)] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skip_all) op: Equal rhs: {(SQ <"skipping git-cvsserver tests, perl not available">)} spids: [552] ) ] spids: [552] ) (C {(test_done)}) ] spids: [-1 549] ) ] spids: [-1 560] ) (AndOr children: [ (SimpleCommand words: [{(perl)} {(-e)} {(SQ <"use DBI; use DBD::SQLite">)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[570]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[573]) ] ) (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skip_all) op: Equal rhs: {(SQ <"skipping git-cvsserver tests, Perl SQLite interface unavailable">)} spids: [581] ) ] spids: [581] ) (C {(test_done)}) ] spids: [578] ) ] op_id: Op_DPipe ) (C {(unset)} {(GIT_DIR)} {(GIT_CONFIG)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WORKDIR) op: Equal rhs: {($ VSub_Name "$PWD")} spids: [598] ) ] spids: [598] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SERVERDIR) op: Equal rhs: {($ VSub_Name "$PWD") (/gitcvs.git)} spids: [601] ) ] spids: [601] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:git_config) op: Equal rhs: {(DQ ($ VSub_Name "$SERVERDIR") (/config))} spids: [605] ) ] spids: [605] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CVSROOT) op: Equal rhs: {(DQ (":fork:") ($ VSub_Name "$SERVERDIR"))} spids: [611] ) ] spids: [611] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CVSWORK) op: Equal rhs: {(DQ ($ VSub_Name "$PWD") (/cvswork))} spids: [617] ) ] spids: [617] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:CVS_SERVER) op:Equal rhs:{(git-cvsserver)} spids:[623])] spids: [623] ) (C {(export)} {(CVSROOT)} {(CVS_SERVER)}) (C {(rm)} {(-rf)} {(DQ ($ VSub_Name "$CVSWORK"))} {(DQ ($ VSub_Name "$SERVERDIR"))}) (C {(test_expect_success)} {(SQ <"setup v1, b1">)} { (SQ <"\n"> <"\techo \"Simple text file\" >textfile.c &&\n"> <"\techo \"t2\" >t2 &&\n"> <"\tmkdir adir &&\n"> <"\techo \"adir/afile line1\" >adir/afile &&\n"> <"\techo \"adir/afile line2\" >>adir/afile &&\n"> <"\techo \"adir/afile line3\" >>adir/afile &&\n"> <"\techo \"adir/afile line4\" >>adir/afile &&\n"> <"\techo \"adir/a2file\" >>adir/a2file &&\n"> <"\tmkdir adir/bdir &&\n"> <"\techo \"adir/bdir/bfile line 1\" >adir/bdir/bfile &&\n"> <"\techo \"adir/bdir/bfile line 2\" >>adir/bdir/bfile &&\n"> <"\techo \"adir/bdir/b2file\" >adir/bdir/b2file &&\n"> <"\tgit add textfile.c t2 adir &&\n"> <"\tgit commit -q -m \"First Commit (v1)\" &&\n"> <"\tgit tag v1 &&\n"> <"\tgit branch b1 &&\n"> <"\tgit clone -q --bare \"$WORKDIR/.git\" \"$SERVERDIR\" >/dev/null 2>&1 &&\n"> <"\tGIT_DIR=\"$SERVERDIR\" git config --bool gitcvs.enabled true &&\n"> <"\tGIT_DIR=\"$SERVERDIR\" git config gitcvs.logfile \"$SERVERDIR/gitcvs.log\"\n"> ) } ) (C {(rm)} {(-rf)} {(cvswork)}) (C {(test_expect_success)} {(SQ <"cvs co v1">)} { (SQ <"\n"> <"\tcvs -f -Q co -r v1 -d cvswork master >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v1 &&\n"> <"\tcheck_file cvswork t2 v1 &&\n"> <"\tcheck_file cvswork adir/afile v1 &&\n"> <"\tcheck_file cvswork adir/a2file v1 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v1 &&\n"> <"\tcheck_file cvswork adir/bdir/b2file v1 &&\n"> <"\tcheck_end_tree cvswork\n"> ) } ) (C {(rm)} {(-rf)} {(cvswork)}) (C {(test_expect_success)} {(SQ <"cvs co b1">)} { (SQ <"\n"> <"\tcvs -f co -r b1 -d cvswork master >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v1 &&\n"> <"\tcheck_file cvswork t2 v1 &&\n"> <"\tcheck_file cvswork adir/afile v1 &&\n"> <"\tcheck_file cvswork adir/a2file v1 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v1 &&\n"> <"\tcheck_file cvswork adir/bdir/b2file v1 &&\n"> <"\tcheck_end_tree cvswork\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs co b1 [cvswork3]">)} { (SQ <"\n"> <"\tcvs -f co -r b1 -d cvswork3 master >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork3 &&\n"> <"\tcheck_file cvswork3 textfile.c v1 &&\n"> <"\tcheck_file cvswork3 t2 v1 &&\n"> <"\tcheck_file cvswork3 adir/afile v1 &&\n"> <"\tcheck_file cvswork3 adir/a2file v1 &&\n"> <"\tcheck_file cvswork3 adir/bdir/bfile v1 &&\n"> <"\tcheck_file cvswork3 adir/bdir/b2file v1 &&\n"> <"\tcheck_end_full_tree cvswork3 v1\n"> ) } ) (C {(test_expect_success)} {(SQ <"edit cvswork3 and save diff">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd cvswork3 &&\n"> <"\t\tsed -e \"s/line1/line1 - data/\" adir/afile >adir/afileNEW &&\n"> <"\t\tmv -f adir/afileNEW adir/afile &&\n"> <"\t\techo \"afile5\" >adir/afile5 &&\n"> <"\t\trm t2 &&\n"> <"\t\tcvs -f add adir/afile5 &&\n"> <"\t\tcvs -f rm t2 &&\n"> <"\t\t! cvs -f diff -N -u >\"$WORKDIR/cvswork3edit.diff\"\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"setup v1.2 on b1">)} { (SQ <"\n"> <"\tgit checkout b1 &&\n"> <"\techo \"new v1.2\" >t3 &&\n"> <"\trm t2 &&\n"> <"\tsed -e \"s/line3/line3 - more data/\" adir/afile >adir/afileNEW &&\n"> <"\tmv -f adir/afileNEW adir/afile &&\n"> <"\trm adir/a2file &&\n"> <"\techo \"a3file\" >>adir/a3file &&\n"> <"\techo \"bfile line 3\" >>adir/bdir/bfile &&\n"> <"\trm adir/bdir/b2file &&\n"> <"\techo \"b3file\" >adir/bdir/b3file &&\n"> <"\tmkdir cdir &&\n"> <"\techo \"cdir/cfile\" >cdir/cfile &&\n"> <"\tgit add -A cdir adir t3 t2 &&\n"> <"\tgit commit -q -m "> ) (v1.2) (SQ <" &&\n"> <"\tgit tag v1.2 &&\n"> <"\tgit push --tags gitcvs.git b1:b1\n">) } ) (C {(test_expect_success)} {(SQ <"cvs -f up (on b1 adir)">)} { (SQ <"\n"> <"\t( cd cvswork/adir && cvs -f up -d ) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v1 &&\n"> <"\tcheck_file cvswork t2 v1 &&\n"> <"\tcheck_file cvswork adir/afile v1.2 &&\n"> <"\tcheck_file cvswork adir/a3file v1.2 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v1.2 &&\n"> <"\tcheck_file cvswork adir/bdir/b3file v1.2 &&\n"> <"\tcheck_end_tree cvswork\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs up (on b1 /)">)} { (SQ <"\n"> <"\t( cd cvswork && cvs -f up -d ) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v1.2 &&\n"> <"\tcheck_file cvswork t3 v1.2 &&\n"> <"\tcheck_file cvswork adir/afile v1.2 &&\n"> <"\tcheck_file cvswork adir/a3file v1.2 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v1.2 &&\n"> <"\tcheck_file cvswork adir/bdir/b3file v1.2 &&\n"> <"\tcheck_file cvswork cdir/cfile v1.2 &&\n"> <"\tcheck_end_tree cvswork\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs up (on b1 /) (again; check CVS/Tag files)">)} { (SQ <"\n"> <"\t( cd cvswork && cvs -f up -d ) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v1.2 &&\n"> <"\tcheck_file cvswork t3 v1.2 &&\n"> <"\tcheck_file cvswork adir/afile v1.2 &&\n"> <"\tcheck_file cvswork adir/a3file v1.2 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v1.2 &&\n"> <"\tcheck_file cvswork adir/bdir/b3file v1.2 &&\n"> <"\tcheck_file cvswork cdir/cfile v1.2 &&\n"> <"\tcheck_end_tree cvswork\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs up -r v1">)} { (SQ <"\n"> <"\t( cd cvswork && cvs -f up -r v1 ) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v1 &&\n"> <"\tcheck_file cvswork t2 v1 &&\n"> <"\tcheck_file cvswork adir/afile v1 &&\n"> <"\tcheck_file cvswork adir/a2file v1 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v1 &&\n"> <"\tcheck_file cvswork adir/bdir/b2file v1 &&\n"> <"\tcheck_end_tree cvswork\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs up">)} { (SQ <"\n"> <"\t( cd cvswork && cvs -f up ) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v1 &&\n"> <"\tcheck_file cvswork t2 v1 &&\n"> <"\tcheck_file cvswork adir/afile v1 &&\n"> <"\tcheck_file cvswork adir/a2file v1 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v1 &&\n"> <"\tcheck_file cvswork adir/bdir/b2file v1 &&\n"> <"\tcheck_end_tree cvswork\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs up (again; check CVS/Tag files)">)} { (SQ <"\n"> <"\t( cd cvswork && cvs -f up -d ) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v1 &&\n"> <"\tcheck_file cvswork t2 v1 &&\n"> <"\tcheck_file cvswork adir/afile v1 &&\n"> <"\tcheck_file cvswork adir/a2file v1 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v1 &&\n"> <"\tcheck_file cvswork adir/bdir/b2file v1 &&\n"> <"\tcheck_end_tree cvswork\n"> ) } ) (C {(test_expect_success)} {(SQ <"setup simple b2">)} {(SQ <"\n"> <"\tgit branch b2 v1 &&\n"> <"\tgit push --tags gitcvs.git b2:b2\n">)} ) (C {(test_expect_success)} {(SQ <"cvs co b2 [into cvswork2]">)} { (SQ <"\n"> <"\tcvs -f co -r b2 -d cvswork2 master >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v1 &&\n"> <"\tcheck_file cvswork t2 v1 &&\n"> <"\tcheck_file cvswork adir/afile v1 &&\n"> <"\tcheck_file cvswork adir/a2file v1 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v1 &&\n"> <"\tcheck_file cvswork adir/bdir/b2file v1 &&\n"> <"\tcheck_end_tree cvswork\n"> ) } ) (C {(test_expect_success)} {(SQ <"root dir edit [cvswork2]">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd cvswork2 && echo \"Line 2\" >>textfile.c &&\n"> <"\t\t! cvs -f diff -u >\"$WORKDIR/cvsEdit1.diff\" &&\n"> <"\t\tcvs -f commit -m \"edit textfile.c\" textfile.c\n"> <"\t) >cvsEdit1.log 2>&1\n"> ) } ) (C {(test_expect_success)} {(SQ <"root dir rm file [cvswork2]">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd cvswork2 &&\n"> <"\t\tcvs -f rm -f t2 &&\n"> <"\t\tcvs -f diff -u >../cvsEdit2-empty.diff &&\n"> <"\t\t! cvs -f diff -N -u >\"$WORKDIR/cvsEdit2-N.diff\" &&\n"> <"\t\tcvs -f commit -m \"rm t2\"\n"> <"\t) >cvsEdit2.log 2>&1\n"> ) } ) (C {(test_expect_success)} {(SQ <"subdir edit/add/rm files [cvswork2]">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd cvswork2 &&\n"> <"\t\tsed -e \"s/line 1/line 1 (v2)/\" adir/bdir/bfile >adir/bdir/bfileNEW &&\n"> <"\t\tmv -f adir/bdir/bfileNEW adir/bdir/bfile &&\n"> <"\t\trm adir/bdir/b2file &&\n"> <"\t\tcd adir &&\n"> <"\t\tcvs -f rm bdir/b2file &&\n"> <"\t\techo \"4th file\" >bdir/b4file &&\n"> <"\t\tcvs -f add bdir/b4file &&\n"> <"\t\t! cvs -f diff -N -u >\"$WORKDIR/cvsEdit3.diff\" &&\n"> <"\t\tgit fetch gitcvs.git b2:b2 &&\n"> <"\t\t(\n"> <"\t\t cd .. &&\n"> <"\t\t ! cvs -f diff -u -N -r v1.2 >\"$WORKDIR/cvsEdit3-v1.2.diff\" &&\n"> <"\t\t ! cvs -f diff -u -N -r v1.2 -r v1 >\"$WORKDIR/cvsEdit3-v1.2-v1.diff\"\n"> <"\t\t) &&\n"> <"\t\tcvs -f commit -m \"various add/rm/edit\"\n"> <"\t) >cvs.log 2>&1\n"> ) } ) (C {(test_expect_success)} {(SQ <"validate result of edits [cvswork2]">)} { (SQ <"\n"> <"\tgit fetch gitcvs.git b2:b2 &&\n"> <"\tgit tag v2 b2 &&\n"> <"\tgit push --tags gitcvs.git b2:b2 &&\n"> <"\tcheck_start_tree cvswork2 &&\n"> <"\tcheck_file cvswork2 textfile.c v2 &&\n"> <"\tcheck_file cvswork2 adir/afile v2 &&\n"> <"\tcheck_file cvswork2 adir/a2file v2 &&\n"> <"\tcheck_file cvswork2 adir/bdir/bfile v2 &&\n"> <"\tcheck_file cvswork2 adir/bdir/b4file v2 &&\n"> <"\tcheck_end_full_tree cvswork2 v2\n"> ) } ) (C {(test_expect_success)} {(SQ <"validate basic diffs saved during above cvswork2 edits">)} { (SQ <"\n"> <"\ttest $(grep Index: cvsEdit1.diff | wc -l) = 1 &&\n"> <"\ttest_must_be_empty cvsEdit2-empty.diff &&\n"> <"\ttest $(grep Index: cvsEdit2-N.diff | wc -l) = 1 &&\n"> <"\ttest $(grep Index: cvsEdit3.diff | wc -l) = 3 &&\n"> <"\trm -rf diffSandbox &&\n"> <"\tgit clone -q -n . diffSandbox &&\n"> <"\t(\n"> <"\t\tcd diffSandbox &&\n"> <"\t\tgit checkout v1 &&\n"> <"\t\tgit apply -p0 --index <\"$WORKDIR/cvsEdit1.diff\" &&\n"> <"\t\tgit apply -p0 --index <\"$WORKDIR/cvsEdit2-N.diff\" &&\n"> <"\t\tgit apply -p0 --directory=adir --index <\"$WORKDIR/cvsEdit3.diff\" &&\n"> <"\t\tgit diff --exit-code v2\n"> <"\t) >\"check_diff_apply.out\" 2>&1\n"> ) } ) (C {(test_expect_success)} {(SQ <"validate v1.2 diff saved during last cvswork2 edit">)} { (SQ <"\n"> <"\ttest $(grep Index: cvsEdit3-v1.2.diff | wc -l) = 9 &&\n"> <"\tcheck_diff cvsEdit3-v1.2.diff v1.2 v2\n"> ) } ) (C {(test_expect_success)} {(SQ <"validate v1.2 v1 diff saved during last cvswork2 edit">)} { (SQ <"\n"> <"\ttest $(grep Index: cvsEdit3-v1.2-v1.diff | wc -l) = 9 &&\n"> <"\tcheck_diff cvsEdit3-v1.2-v1.diff v1.2 v1\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs up [cvswork2]">)} { (SQ <"\n"> <"\t( cd cvswork2 && cvs -f up ) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork2 &&\n"> <"\tcheck_file cvswork2 textfile.c v2 &&\n"> <"\tcheck_file cvswork2 adir/afile v2 &&\n"> <"\tcheck_file cvswork2 adir/a2file v2 &&\n"> <"\tcheck_file cvswork2 adir/bdir/bfile v2 &&\n"> <"\tcheck_file cvswork2 adir/bdir/b4file v2 &&\n"> <"\tcheck_end_full_tree cvswork2 v2\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs up -r b2 [back to cvswork]">)} { (SQ <"\n"> <"\t( cd cvswork && cvs -f up -r b2 ) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v2 &&\n"> <"\tcheck_file cvswork adir/afile v2 &&\n"> <"\tcheck_file cvswork adir/a2file v2 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v2 &&\n"> <"\tcheck_file cvswork adir/bdir/b4file v2 &&\n"> <"\tcheck_end_full_tree cvswork v2\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs up -r b1">)} { (SQ <"\n"> <"\t( cd cvswork && cvs -f up -r b1 ) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v1.2 &&\n"> <"\tcheck_file cvswork t3 v1.2 &&\n"> <"\tcheck_file cvswork adir/afile v1.2 &&\n"> <"\tcheck_file cvswork adir/a3file v1.2 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v1.2 &&\n"> <"\tcheck_file cvswork adir/bdir/b3file v1.2 &&\n"> <"\tcheck_file cvswork cdir/cfile v1.2 &&\n"> <"\tcheck_end_full_tree cvswork v1.2\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs up -A">)} { (SQ <"\n"> <"\t( cd cvswork && cvs -f up -A ) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v1 &&\n"> <"\tcheck_file cvswork t2 v1 &&\n"> <"\tcheck_file cvswork adir/afile v1 &&\n"> <"\tcheck_file cvswork adir/a2file v1 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v1 &&\n"> <"\tcheck_file cvswork adir/bdir/b2file v1 &&\n"> <"\tcheck_end_full_tree cvswork v1\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs up (check CVS/Tag files)">)} { (SQ <"\n"> <"\t( cd cvswork && cvs -f up ) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v1 &&\n"> <"\tcheck_file cvswork t2 v1 &&\n"> <"\tcheck_file cvswork adir/afile v1 &&\n"> <"\tcheck_file cvswork adir/a2file v1 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v1 &&\n"> <"\tcheck_file cvswork adir/bdir/b2file v1 &&\n"> <"\tcheck_end_full_tree cvswork v1\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs up -r heads/b1">)} { (SQ <"\n"> <"\t( cd cvswork && cvs -f up -r heads/b1 ) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v1.2 &&\n"> <"\tcheck_file cvswork t3 v1.2 &&\n"> <"\tcheck_file cvswork adir/afile v1.2 &&\n"> <"\tcheck_file cvswork adir/a3file v1.2 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v1.2 &&\n"> <"\tcheck_file cvswork adir/bdir/b3file v1.2 &&\n"> <"\tcheck_file cvswork cdir/cfile v1.2 &&\n"> <"\tcheck_end_full_tree cvswork v1.2\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs up -r heads_-s-b2 (cvsserver escape mechanism)">)} { (SQ <"\n"> <"\t( cd cvswork && cvs -f up -r heads_-s-b2 ) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v2 &&\n"> <"\tcheck_file cvswork adir/afile v2 &&\n"> <"\tcheck_file cvswork adir/a2file v2 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v2 &&\n"> <"\tcheck_file cvswork adir/bdir/b4file v2 &&\n"> <"\tcheck_end_full_tree cvswork v2\n"> ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:v1hash) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(git)} {(rev-parse)} {(v1)})]) left_token: <Left_CommandSub "$("> spids: [1241 1247] ) } spids: [1240] ) ] spids: [1240] ) (C {(test_expect_success)} {(SQ <"cvs up -r $(git rev-parse v1)">)} { (SQ <"\n"> <"\ttest -n \"$v1hash\" &&\n"> <"\t( cd cvswork && cvs -f up -r \"$v1hash\" ) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork &&\n"> <"\tcheck_file cvswork textfile.c v1 &&\n"> <"\tcheck_file cvswork t2 v1 &&\n"> <"\tcheck_file cvswork adir/afile v1 &&\n"> <"\tcheck_file cvswork adir/a2file v1 &&\n"> <"\tcheck_file cvswork adir/bdir/bfile v1 &&\n"> <"\tcheck_file cvswork adir/bdir/b2file v1 &&\n"> <"\tcheck_end_full_tree cvswork v1\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs diff -r v1 -u">)} { (SQ <"\n"> <"\t( cd cvswork && cvs -f diff -r v1 -u ) >cvsDiff.out 2>cvs.log &&\n"> <"\ttest_must_be_empty cvsDiff.out &&\n"> <"\ttest_must_be_empty cvs.log\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs diff -N -r v2 -u">)} { (SQ <"\n"> <"\t( cd cvswork && ! cvs -f diff -N -r v2 -u ) >cvsDiff.out 2>cvs.log &&\n"> <"\ttest_must_be_empty cvs.log &&\n"> <"\ttest -s cvsDiff.out &&\n"> <"\tcheck_diff cvsDiff.out v2 v1 >check_diff.out 2>&1\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs diff -N -r v2 -r v1.2">)} { (SQ <"\n"> <"\t( cd cvswork && ! cvs -f diff -N -r v2 -r v1.2 -u ) >cvsDiff.out 2>cvs.log &&\n"> <"\ttest_must_be_empty cvs.log &&\n"> <"\ttest -s cvsDiff.out &&\n"> <"\tcheck_diff cvsDiff.out v2 v1.2 >check_diff.out 2>&1\n"> ) } ) (C {(test_expect_success)} {(SQ <"apply early [cvswork3] diff to b3">)} { (SQ <"\n"> <"\tgit clone -q . gitwork3 &&\n"> <"\t(\n"> <"\t\tcd gitwork3 &&\n"> <"\t\tgit checkout -b b3 v1 &&\n"> <"\t\tgit apply -p0 --index <\"$WORKDIR/cvswork3edit.diff\" &&\n"> <"\t\tgit commit -m \"cvswork3 edits applied\"\n"> <"\t) &&\n"> <"\tgit fetch gitwork3 b3:b3 &&\n"> <"\tgit tag v3 b3\n"> ) } ) (C {(test_expect_success)} {(SQ <"check [cvswork3] diff">)} { (SQ <"\n"> <"\t( cd cvswork3 && ! cvs -f diff -N -u ) >\"$WORKDIR/cvsDiff.out\" 2>cvs.log &&\n"> <"\ttest_must_be_empty cvs.log &&\n"> <"\ttest -s cvsDiff.out &&\n"> <"\ttest $(grep Index: cvsDiff.out | wc -l) = 3 &&\n"> <"\ttest_cmp cvsDiff.out cvswork3edit.diff &&\n"> <"\tcheck_diff cvsDiff.out v1 v3 >check_diff.out 2>&1\n"> ) } ) (C {(test_expect_success)} {(SQ <"merge early [cvswork3] b3 with b1">)} { (SQ <"\n"> <"\t( cd gitwork3 && git merge -m \"message\" b1 ) &&\n"> <"\tgit fetch gitwork3 b3:b3 &&\n"> <"\tgit tag v3merged b3 &&\n"> <"\tgit push --tags gitcvs.git b3:b3\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs up dirty [cvswork3]">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd cvswork3 &&\n"> <"\t\tcvs -f up &&\n"> <"\t\t! cvs -f diff -N -u >\"$WORKDIR/cvsDiff.out\"\n"> <"\t) >cvs.log 2>&1 &&\n"> <"\ttest -s cvsDiff.out &&\n"> <"\ttest $(grep Index: cvsDiff.out | wc -l) = 2 &&\n"> <"\tcheck_start_tree cvswork3 &&\n"> <"\tcheck_file cvswork3 textfile.c v3merged &&\n"> <"\tcheck_file cvswork3 t3 v3merged &&\n"> <"\tcheck_file cvswork3 adir/afile v3merged &&\n"> <"\tcheck_file cvswork3 adir/a3file v3merged &&\n"> <"\tcheck_file cvswork3 adir/afile5 v3merged &&\n"> <"\tcheck_file cvswork3 adir/bdir/bfile v3merged &&\n"> <"\tcheck_file cvswork3 adir/bdir/b3file v3merged &&\n"> <"\tcheck_file cvswork3 cdir/cfile v3merged &&\n"> <"\tcheck_end_full_tree cvswork3 v3merged\n"> ) } ) (C {(test_expect_success)} {(SQ <"cvs commit [cvswork3]">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd cvswork3 &&\n"> <"\t\tcvs -f commit -m \"dirty sandbox after auto-merge\"\n"> <"\t) >cvs.log 2>&1 &&\n"> <"\tcheck_start_tree cvswork3 &&\n"> <"\tcheck_file cvswork3 textfile.c v3merged &&\n"> <"\tcheck_file cvswork3 t3 v3merged &&\n"> <"\tcheck_file cvswork3 adir/afile v3merged &&\n"> <"\tcheck_file cvswork3 adir/a3file v3merged &&\n"> <"\tcheck_file cvswork3 adir/afile5 v3merged &&\n"> <"\tcheck_file cvswork3 adir/bdir/bfile v3merged &&\n"> <"\tcheck_file cvswork3 adir/bdir/b3file v3merged &&\n"> <"\tcheck_file cvswork3 cdir/cfile v3merged &&\n"> <"\tcheck_end_full_tree cvswork3 v3merged &&\n"> <"\tgit fetch gitcvs.git b3:b4 &&\n"> <"\tgit tag v4.1 b4 &&\n"> <"\tgit diff --exit-code v4.1 v3merged >check_diff_apply.out 2>&1\n"> ) } ) (C {(test_done)}) ] )