Mercurial > hg-stable
diff tests/test-convert-cvs.t @ 12519:99232aa664d6
tests: unify test-convert-cvs
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 26 Sep 2010 14:50:58 -0500 |
parents | tests/test-convert-cvs@d598d24a7e67 |
children | 6cc4b14fb76b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-convert-cvs.t Sun Sep 26 14:50:58 2010 -0500 @@ -0,0 +1,460 @@ + + $ "$TESTDIR/hghave" cvs || exit 80 + $ cvscall() + > { + > cvs -f "$@" + > } + $ hgcat() + > { + > hg --cwd src-hg cat -r tip "$1" + > } + $ echo "[extensions]" >> $HGRCPATH + $ echo "convert = " >> $HGRCPATH + $ echo "graphlog = " >> $HGRCPATH + $ cat > cvshooks.py <<EOF + > def cvslog(ui,repo,hooktype,log): + > print "%s hook: %d entries"%(hooktype,len(log)) + > + > def cvschangesets(ui,repo,hooktype,changesets): + > print "%s hook: %d changesets"%(hooktype,len(changesets)) + > EOF + $ hookpath=`pwd` + $ echo "[hooks]" >> $HGRCPATH + $ echo "cvslog=python:$hookpath/cvshooks.py:cvslog" >> $HGRCPATH + $ echo "cvschangesets=python:$hookpath/cvshooks.py:cvschangesets" >> $HGRCPATH + +create cvs repository + + $ mkdir cvsrepo + $ cd cvsrepo + $ CVSROOT=`pwd` + $ export CVSROOT + $ CVS_OPTIONS=-f + $ export CVS_OPTIONS + $ cd .. + $ cvscall -q -d "$CVSROOT" init + +create source directory + + $ mkdir src-temp + $ cd src-temp + $ echo a > a + $ mkdir b + $ cd b + $ echo c > c + $ cd .. + +import source directory + + $ cvscall -q import -m import src INITIAL start + N src/a + N src/b/c + + No conflicts created by this import + + $ cd .. + +checkout source directory + + $ cvscall -q checkout src + U src/a + U src/b/c + +commit a new revision changing b/c + + $ cd src + $ sleep 1 + $ echo c >> b/c + $ cvscall -q commit -mci0 . | grep '<--' + */cvsrepo/src/b/c,v <-- *c (glob) + $ cd .. + +convert fresh repo + + $ hg convert src src-hg + initializing destination src-hg repository + connecting to */cvsrepo (glob) + scanning source... + collecting CVS rlog + 5 log entries + cvslog hook: 5 entries + creating changesets + 3 changeset entries + cvschangesets hook: 3 changesets + sorting... + converting... + 2 Initial revision + 1 import + 0 ci0 + updating tags + $ hgcat a + a + $ hgcat b/c + c + c + +convert fresh repo with --filemap + + $ echo include b/c > filemap + $ hg convert --filemap filemap src src-filemap + initializing destination src-filemap repository + connecting to */cvsrepo (glob) + scanning source... + collecting CVS rlog + 5 log entries + cvslog hook: 5 entries + creating changesets + 3 changeset entries + cvschangesets hook: 3 changesets + sorting... + converting... + 2 Initial revision + 1 import + filtering out empty revision + rolling back to revision 0 (undo commit) + 0 ci0 + updating tags + $ hgcat b/c + c + c + $ hg -R src-filemap log --template '{rev} {desc} files: {files}\n' + 2 update tags files: .hgtags + 1 ci0 files: b/c + 0 Initial revision files: b/c + +convert full repository (issue1649) + + $ cvscall -q -d "$CVSROOT" checkout -d srcfull "." | grep -v CVSROOT + U srcfull/src/a + U srcfull/src/b/c + $ ls srcfull + CVS + CVSROOT + src + $ hg convert srcfull srcfull-hg \ + > | grep -v 'log entries' | grep -v 'hook:' \ + > | grep -v '^[0-3] .*' # filter instable changeset order + initializing destination srcfull-hg repository + connecting to */cvsrepo (glob) + scanning source... + collecting CVS rlog + creating changesets + 4 changeset entries + sorting... + converting... + updating tags + $ hg cat -r tip srcfull-hg/src/a + a + $ hg cat -r tip srcfull-hg/src/b/c + c + c + +commit new file revisions + + $ cd src + $ echo a >> a + $ echo c >> b/c + $ cvscall -q commit -mci1 . | grep '<--' + */cvsrepo/src/a,v <-- a (glob) + */cvsrepo/src/b/c,v <-- *c (glob) + $ cd .. + +convert again + + $ hg convert src src-hg + connecting to */cvsrepo (glob) + scanning source... + collecting CVS rlog + 7 log entries + cvslog hook: 7 entries + creating changesets + 4 changeset entries + cvschangesets hook: 4 changesets + sorting... + converting... + 0 ci1 + $ hgcat a + a + a + $ hgcat b/c + c + c + c + +convert again with --filemap + + $ hg convert --filemap filemap src src-filemap + connecting to */cvsrepo (glob) + scanning source... + collecting CVS rlog + 7 log entries + cvslog hook: 7 entries + creating changesets + 4 changeset entries + cvschangesets hook: 4 changesets + sorting... + converting... + 0 ci1 + $ hgcat b/c + c + c + c + $ hg -R src-filemap log --template '{rev} {desc} files: {files}\n' + 3 ci1 files: b/c + 2 update tags files: .hgtags + 1 ci0 files: b/c + 0 Initial revision files: b/c + +commit branch + + $ cd src + $ cvs -q update -r1.1 b/c + U b/c + $ cvs -q tag -b branch + T a + T b/c + $ cvs -q update -r branch > /dev/null + $ echo d >> b/c + $ cvs -q commit -mci2 . | grep '<--' + */cvsrepo/src/b/c,v <-- *c (glob) + $ cd .. + +convert again + + $ hg convert src src-hg + connecting to */cvsrepo (glob) + scanning source... + collecting CVS rlog + 8 log entries + cvslog hook: 8 entries + creating changesets + 5 changeset entries + cvschangesets hook: 5 changesets + sorting... + converting... + 0 ci2 + $ hgcat b/c + c + d + +convert again with --filemap + + $ hg convert --filemap filemap src src-filemap + connecting to */cvsrepo (glob) + scanning source... + collecting CVS rlog + 8 log entries + cvslog hook: 8 entries + creating changesets + 5 changeset entries + cvschangesets hook: 5 changesets + sorting... + converting... + 0 ci2 + $ hgcat b/c + c + d + $ hg -R src-filemap log --template '{rev} {desc} files: {files}\n' + 4 ci2 files: b/c + 3 ci1 files: b/c + 2 update tags files: .hgtags + 1 ci0 files: b/c + 0 Initial revision files: b/c + +commit a new revision with funny log message + + $ cd src + $ sleep 1 + $ echo e >> a + $ cvscall -q commit -m'funny + > ---------------------------- + > log message' . | grep '<--' |\ + > sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g' + checking in src/a,v + +commit new file revisions with some fuzz + + $ sleep 1 + $ echo f >> a + $ cvscall -q commit -mfuzzy . | grep '<--' + */cvsrepo/src/a,v <-- a (glob) + $ sleep 4 # the two changes will be split if fuzz < 4 + $ echo g >> b/c + $ cvscall -q commit -mfuzzy . | grep '<--' + */cvsrepo/src/b/c,v <-- *c (glob) + $ cd .. + +convert again + + $ hg convert --config convert.cvsps.fuzz=2 src src-hg + connecting to */cvsrepo (glob) + scanning source... + collecting CVS rlog + 11 log entries + cvslog hook: 11 entries + creating changesets + 8 changeset entries + cvschangesets hook: 8 changesets + sorting... + converting... + 2 funny + 1 fuzzy + 0 fuzzy + $ hg -R src-hg glog --template '{rev} ({branches}) {desc} files: {files}\n' + o 8 (branch) fuzzy files: b/c + | + o 7 (branch) fuzzy files: a + | + o 6 (branch) funny + | ---------------------------- + | log message files: a + o 5 (branch) ci2 files: b/c + + o 4 () ci1 files: a b/c + | + o 3 () update tags files: .hgtags + | + o 2 () ci0 files: b/c + | + | o 1 (INITIAL) import files: + |/ + o 0 () Initial revision files: a b/c + + +testing debugcvsps + + $ cd src + $ hg debugcvsps --fuzz=2 + collecting CVS rlog + 11 log entries + cvslog hook: 11 entries + creating changesets + 10 changeset entries + cvschangesets hook: 10 changesets + --------------------- + PatchSet 1 + Date: * (glob) + Author: * (glob) + Branch: HEAD + Tag: (none) + Branchpoints: INITIAL + Log: + Initial revision + + Members: + a:INITIAL->1.1 + + --------------------- + PatchSet 2 + Date: * (glob) + Author: * (glob) + Branch: HEAD + Tag: (none) + Branchpoints: INITIAL, branch + Log: + Initial revision + + Members: + b/c:INITIAL->1.1 + + --------------------- + PatchSet 3 + Date: * (glob) + Author: * (glob) + Branch: INITIAL + Tag: start + Log: + import + + Members: + a:1.1->1.1.1.1 + b/c:1.1->1.1.1.1 + + --------------------- + PatchSet 4 + Date: * (glob) + Author: * (glob) + Branch: HEAD + Tag: (none) + Log: + ci0 + + Members: + b/c:1.1->1.2 + + --------------------- + PatchSet 5 + Date: * (glob) + Author: * (glob) + Branch: HEAD + Tag: (none) + Branchpoints: branch + Log: + ci1 + + Members: + a:1.1->1.2 + + --------------------- + PatchSet 6 + Date: * (glob) + Author: * (glob) + Branch: HEAD + Tag: (none) + Log: + ci1 + + Members: + b/c:1.2->1.3 + + --------------------- + PatchSet 7 + Date: * (glob) + Author: * (glob) + Branch: branch + Tag: (none) + Log: + ci2 + + Members: + b/c:1.1->1.1.2.1 + + --------------------- + PatchSet 8 + Date: * (glob) + Author: * (glob) + Branch: branch + Tag: (none) + Log: + funny + ---------------------------- + log message + + Members: + a:1.2->1.2.2.1 + + --------------------- + PatchSet 9 + Date: * (glob) + Author: * (glob) + Branch: branch + Tag: (none) + Log: + fuzzy + + Members: + a:1.2.2.1->1.2.2.2 + + --------------------- + PatchSet 10 + Date: * (glob) + Author: * (glob) + Branch: branch + Tag: (none) + Log: + fuzzy + + Members: + b/c:1.1.2.1->1.1.2.2 + +