# HG changeset patch # User Matt Mackall # Date 1285537428 18000 # Node ID a164a9cff77113c1d799e4cd1e7f55fb15140458 # Parent 7813e6b44a0bdb39e9cee7ab5f4e6aa156cfc3f8 tests: unify test-convert-cvsnt-mergepoints diff -r 7813e6b44a0b -r a164a9cff771 tests/test-convert-cvsnt-mergepoints --- a/tests/test-convert-cvsnt-mergepoints Sun Sep 26 16:39:52 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -#!/bin/sh - -"$TESTDIR/hghave" cvs || exit 80 - -filterpath() -{ - eval "$@" | sed "s:$CVSROOT:*REPO*:g" -} - -cvscall() -{ - echo cvs -f "$@" - cvs -f "$@" -} - -# output of 'cvs ci' varies unpredictably, so discard most of it -# -- just keep the part that matters -cvsci() -{ - echo cvs -f ci -f "$@" - cvs -f ci -f "$@" 2>&1 | egrep "^(new|initial) revision:" -} - -hgcat() -{ - hg --cwd src-hg cat -r tip "$1" -} - -echo "[extensions]" >> $HGRCPATH -echo "convert = " >> $HGRCPATH -echo "graphlog = " >> $HGRCPATH - -echo "% create cvs repository" -mkdir cvsmaster -cd cvsmaster -CVSROOT=`pwd` -export CVSROOT -CVS_OPTIONS=-f -export CVS_OPTIONS -cd .. -filterpath cvscall -Q -d "$CVSROOT" init - -echo "% checkout #1: add foo.txt" -cvscall -Q checkout -d cvsworktmp . -cd cvsworktmp -mkdir foo -cvscall -Q add foo -cd foo -echo foo > foo.txt -cvscall -Q add foo.txt -cvsci -m "add foo.txt" foo.txt - -cd ../.. -rm -rf cvsworktmp - -echo "% checkout #2: create MYBRANCH1 and modify foo.txt on it" -cvscall -Q checkout -d cvswork foo - -cd cvswork - -cvscall -q rtag -b -R MYBRANCH1 foo -cvscall -Q update -P -r MYBRANCH1 -echo bar > foo.txt -cvsci -m "bar" foo.txt -echo baz > foo.txt -cvsci -m "baz" foo.txt - -echo "% create MYBRANCH1_2 and modify foo.txt some more" -cvscall -q rtag -b -R -r MYBRANCH1 MYBRANCH1_2 foo -cvscall -Q update -P -r MYBRANCH1_2 - -echo bazzie > foo.txt -cvsci -m "bazzie" foo.txt - -echo "% create MYBRANCH1_1 and modify foo.txt yet again" -cvscall -q rtag -b -R MYBRANCH1_1 foo -cvscall -Q update -P -r MYBRANCH1_1 - -echo quux > foo.txt -cvsci -m "quux" foo.txt - -echo "% merge MYBRANCH1 to MYBRANCH1_1" -filterpath cvscall -Q update -P -jMYBRANCH1 -# carefully placed sleep to dodge cvs bug (optimization?) where it -# sometimes ignores a "commit" command if it comes too fast (the -f -# option in cvsci seems to work for all the other commits in this -# script) -sleep 1 -echo xyzzy > foo.txt -cvsci -m "merge1+clobber" foo.txt - -echo "% return to trunk and merge MYBRANCH1_2" -cvscall -Q update -P -A -filterpath cvscall -Q update -P -jMYBRANCH1_2 -cvsci -m "merge2" foo.txt - -REALCVS=`which cvs` -echo "for x in \$*; do if [ \"\$x\" = \"rlog\" ]; then echo \"RCS file: $CVSROOT/foo/foo.txt,v\"; cat $TESTDIR/test-convert-cvsnt-mergepoints.rlog; exit 0; fi; done; $REALCVS \$*" > ../cvs -chmod +x ../cvs -PATH=..:${PATH} hg debugcvsps --parents foo | sed -e 's/Author:.*/Author:/' -e 's/Date:.*/Date:/' - -cd .. diff -r 7813e6b44a0b -r a164a9cff771 tests/test-convert-cvsnt-mergepoints.out --- a/tests/test-convert-cvsnt-mergepoints.out Sun Sep 26 16:39:52 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -% create cvs repository -cvs -f -Q -d *REPO* init -% checkout #1: add foo.txt -cvs -f -Q checkout -d cvsworktmp . -cvs -f -Q add foo -cvs -f -Q add foo.txt -cvs -f ci -f -m add foo.txt foo.txt -initial revision: 1.1 -% checkout #2: create MYBRANCH1 and modify foo.txt on it -cvs -f -Q checkout -d cvswork foo -cvs -f -q rtag -b -R MYBRANCH1 foo -cvs -f -Q update -P -r MYBRANCH1 -cvs -f ci -f -m bar foo.txt -new revision: 1.1.2.1; previous revision: 1.1 -cvs -f ci -f -m baz foo.txt -new revision: 1.1.2.2; previous revision: 1.1.2.1 -% create MYBRANCH1_2 and modify foo.txt some more -cvs -f -q rtag -b -R -r MYBRANCH1 MYBRANCH1_2 foo -cvs -f -Q update -P -r MYBRANCH1_2 -cvs -f ci -f -m bazzie foo.txt -new revision: 1.1.2.2.2.1; previous revision: 1.1.2.2 -% create MYBRANCH1_1 and modify foo.txt yet again -cvs -f -q rtag -b -R MYBRANCH1_1 foo -cvs -f -Q update -P -r MYBRANCH1_1 -cvs -f ci -f -m quux foo.txt -new revision: 1.1.4.1; previous revision: 1.1 -% merge MYBRANCH1 to MYBRANCH1_1 -rcsmerge: warning: conflicts during merge -cvs -f -Q update -P -jMYBRANCH1 -RCS file: *REPO*/foo/foo.txt,v -retrieving revision 1.1 -retrieving revision 1.1.2.2 -Merging differences between 1.1 and 1.1.2.2 into foo.txt -cvs -f ci -f -m merge1+clobber foo.txt -new revision: 1.1.4.2; previous revision: 1.1.4.1 -% return to trunk and merge MYBRANCH1_2 -cvs -f -Q update -P -A -cvs -f -Q update -P -jMYBRANCH1_2 -RCS file: *REPO*/foo/foo.txt,v -retrieving revision 1.1 -retrieving revision 1.1.2.2.2.1 -Merging differences between 1.1 and 1.1.2.2.2.1 into foo.txt -cvs -f ci -f -m merge2 foo.txt -new revision: 1.2; previous revision: 1.1 -collecting CVS rlog -7 log entries -creating changesets -7 changeset entries ---------------------- -PatchSet 1 -Date: -Author: -Branch: HEAD -Tag: (none) -Branchpoints: MYBRANCH1_1, MYBRANCH1 -Log: -foo.txt - -Members: - foo.txt:INITIAL->1.1 - ---------------------- -PatchSet 2 -Date: -Author: -Branch: MYBRANCH1 -Tag: (none) -Parent: 1 -Log: -bar - -Members: - foo.txt:1.1->1.1.2.1 - ---------------------- -PatchSet 3 -Date: -Author: -Branch: MYBRANCH1 -Tag: (none) -Branchpoints: MYBRANCH1_2 -Parent: 2 -Log: -baz - -Members: - foo.txt:1.1.2.1->1.1.2.2 - ---------------------- -PatchSet 4 -Date: -Author: -Branch: MYBRANCH1_1 -Tag: (none) -Parent: 1 -Log: -quux - -Members: - foo.txt:1.1->1.1.4.1 - ---------------------- -PatchSet 5 -Date: -Author: -Branch: MYBRANCH1_2 -Tag: (none) -Parent: 3 -Log: -bazzie - -Members: - foo.txt:1.1.2.2->1.1.2.2.2.1 - ---------------------- -PatchSet 6 -Date: -Author: -Branch: HEAD -Tag: (none) -Parents: 1,5 -Log: -merge - -Members: - foo.txt:1.1->1.2 - ---------------------- -PatchSet 7 -Date: -Author: -Branch: MYBRANCH1_1 -Tag: (none) -Parents: 4,3 -Log: -merge - -Members: - foo.txt:1.1.4.1->1.1.4.2 - diff -r 7813e6b44a0b -r a164a9cff771 tests/test-convert-cvsnt-mergepoints.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-convert-cvsnt-mergepoints.t Sun Sep 26 16:43:48 2010 -0500 @@ -0,0 +1,202 @@ + + $ "$TESTDIR/hghave" cvs || exit 80 + $ filterpath() + > { + > eval "$@" | sed "s:$CVSROOT:*REPO*:g" + > } + $ cvscall() + > { + > cvs -f "$@" + > } + +output of 'cvs ci' varies unpredictably, so discard most of it +-- just keep the part that matters + + $ cvsci() + > { + > cvs -f ci -f "$@" > /dev/null + > } + $ hgcat() + > { + > hg --cwd src-hg cat -r tip "$1" + > } + $ echo "[extensions]" >> $HGRCPATH + $ echo "convert = " >> $HGRCPATH + $ echo "graphlog = " >> $HGRCPATH + +create cvs repository + + $ mkdir cvsmaster + $ cd cvsmaster + $ CVSROOT=`pwd` + $ export CVSROOT + $ CVS_OPTIONS=-f + $ export CVS_OPTIONS + $ cd .. + $ filterpath cvscall -Q -d "$CVSROOT" init + +checkout #1: add foo.txt + + $ cvscall -Q checkout -d cvsworktmp . + $ cd cvsworktmp + $ mkdir foo + $ cvscall -Q add foo + $ cd foo + $ echo foo > foo.txt + $ cvscall -Q add foo.txt + $ cvsci -m "add foo.txt" foo.txt + $ cd ../.. + $ rm -rf cvsworktmp + +checkout #2: create MYBRANCH1 and modify foo.txt on it + + $ cvscall -Q checkout -d cvswork foo + $ cd cvswork + $ cvscall -q rtag -b -R MYBRANCH1 foo + $ cvscall -Q update -P -r MYBRANCH1 + $ echo bar > foo.txt + $ cvsci -m "bar" foo.txt + $ echo baz > foo.txt + $ cvsci -m "baz" foo.txt + +create MYBRANCH1_2 and modify foo.txt some more + + $ cvscall -q rtag -b -R -r MYBRANCH1 MYBRANCH1_2 foo + $ cvscall -Q update -P -r MYBRANCH1_2 + $ echo bazzie > foo.txt + $ cvsci -m "bazzie" foo.txt + +create MYBRANCH1_1 and modify foo.txt yet again + + $ cvscall -q rtag -b -R MYBRANCH1_1 foo + $ cvscall -Q update -P -r MYBRANCH1_1 + $ echo quux > foo.txt + $ cvsci -m "quux" foo.txt + +merge MYBRANCH1 to MYBRANCH1_1 + + $ filterpath cvscall -Q update -P -jMYBRANCH1 + rcsmerge: warning: conflicts during merge + RCS file: *REPO*/foo/foo.txt,v + retrieving revision 1.1 + retrieving revision 1.1.2.2 + Merging differences between 1.1 and 1.1.2.2 into foo.txt + +carefully placed sleep to dodge cvs bug (optimization?) where it +sometimes ignores a "commit" command if it comes too fast (the -f +option in cvsci seems to work for all the other commits in this +script) + + $ sleep 1 + $ echo xyzzy > foo.txt + $ cvsci -m "merge1+clobber" foo.txt + +return to trunk and merge MYBRANCH1_2 + + $ cvscall -Q update -P -A + $ filterpath cvscall -Q update -P -jMYBRANCH1_2 + RCS file: *REPO*/foo/foo.txt,v + retrieving revision 1.1 + retrieving revision 1.1.2.2.2.1 + Merging differences between 1.1 and 1.1.2.2.2.1 into foo.txt + $ cvsci -m "merge2" foo.txt + $ REALCVS=`which cvs` + $ echo "for x in \$*; do if [ \"\$x\" = \"rlog\" ]; then echo \"RCS file: $CVSROOT/foo/foo.txt,v\"; cat $TESTDIR/test-convert-cvsnt-mergepoints.rlog; exit 0; fi; done; $REALCVS \$*" > ../cvs + $ chmod +x ../cvs + $ PATH=..:${PATH} hg debugcvsps --parents foo + collecting CVS rlog + 7 log entries + creating changesets + 7 changeset entries + --------------------- + PatchSet 1 + Date: * (glob) + Author: user + Branch: HEAD + Tag: (none) + Branchpoints: MYBRANCH1_1, MYBRANCH1 + Log: + foo.txt + + Members: + foo.txt:INITIAL->1.1 + + --------------------- + PatchSet 2 + Date: * (glob) + Author: user + Branch: MYBRANCH1 + Tag: (none) + Parent: 1 + Log: + bar + + Members: + foo.txt:1.1->1.1.2.1 + + --------------------- + PatchSet 3 + Date: * (glob) + Author: user + Branch: MYBRANCH1 + Tag: (none) + Branchpoints: MYBRANCH1_2 + Parent: 2 + Log: + baz + + Members: + foo.txt:1.1.2.1->1.1.2.2 + + --------------------- + PatchSet 4 + Date: * (glob) + Author: user + Branch: MYBRANCH1_1 + Tag: (none) + Parent: 1 + Log: + quux + + Members: + foo.txt:1.1->1.1.4.1 + + --------------------- + PatchSet 5 + Date: * (glob) + Author: user + Branch: MYBRANCH1_2 + Tag: (none) + Parent: 3 + Log: + bazzie + + Members: + foo.txt:1.1.2.2->1.1.2.2.2.1 + + --------------------- + PatchSet 6 + Date: * (glob) + Author: user + Branch: HEAD + Tag: (none) + Parents: 1,5 + Log: + merge + + Members: + foo.txt:1.1->1.2 + + --------------------- + PatchSet 7 + Date: * (glob) + Author: user + Branch: MYBRANCH1_1 + Tag: (none) + Parents: 4,3 + Log: + merge + + Members: + foo.txt:1.1.4.1->1.1.4.2 +