tests/test-convert-cvs-branch.t
changeset 12520 873ca83d6cfd
parent 9543 56a5f80556f5
child 12580 0ae639c75b8c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-cvs-branch.t	Sun Sep 26 15:33:09 2010 -0500
@@ -0,0 +1,190 @@
+This is http://mercurial.selenic.com/bts/issue1148
+and http://mercurial.selenic.com/bts/issue1447
+
+  $ "$TESTDIR/hghave" cvs || exit 80
+  $ cvscall()
+  > {
+  >     cvs -f "$@" > /dev/null
+  > }
+  $ echo "[extensions]" >> $HGRCPATH
+  $ echo "convert = " >> $HGRCPATH
+  $ echo "graphlog = " >> $HGRCPATH
+  $ echo "[convert]" >> $HGRCPATH
+  $ echo "cvsps.cache=0" >> $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 a new project
+
+  $ mkdir src
+  $ cd src
+  $ echo "1" > a
+  $ echo "1" > b
+  $ cvscall import -m "init" src v0 r0 | sort
+  $ cd ..
+  $ cvscall co src
+  cvs checkout: Updating src
+  $ cd src
+
+Branch the project
+
+  $ cvscall tag -b BRANCH
+  cvs tag: Tagging .
+  $ cvscall up -r BRANCH > /dev/null
+  cvs update: Updating .
+
+Modify file a, then b, then a 
+
+  $ echo "2" > a
+  $ cvscall ci -m "mod a"
+  cvs commit: Examining .
+  $ echo "2" > b
+  $ cvscall ci -m "mod b"
+  cvs commit: Examining .
+  $ echo "3" > a
+  $ cvscall ci -m "mod a again"
+  cvs commit: Examining .
+
+Convert
+
+  $ cd ..
+  $ hg convert src
+  assuming destination src-hg
+  initializing destination src-hg repository
+  connecting to */cvsrepo (glob)
+  scanning source...
+  collecting CVS rlog
+  7 log entries
+  creating changesets
+  5 changeset entries
+  sorting...
+  converting...
+  4 Initial revision
+  3 init
+  2 mod a
+  1 mod b
+  0 mod a again
+  updating tags
+
+Check the result
+
+  $ hg -R src-hg glog --template '{rev} ({branches}) {desc} files: {files}\n'
+  o  5 () update tags files: .hgtags
+  |
+  | o  4 (BRANCH) mod a again files: a
+  | |
+  | o  3 (BRANCH) mod b files: b
+  | |
+  | o  2 (BRANCH) mod a files: a
+  | |
+  | o  1 (v0) init files:
+  |/
+  o  0 () Initial revision files: a b
+  
+
+
+issue 1447
+
+  $ cvscall()
+  > {
+  >     cvs -f "$@" > /dev/null
+  >     sleep 1
+  > }
+  $ cvsci()
+  > {
+  >     cvs -f ci "$@" >/dev/null
+  >     sleep 1
+  > }
+  $ cvscall -Q -d `pwd`/cvsmaster2 init
+  $ cd cvsmaster2
+  $ CVSROOT=`pwd`
+  $ export CVSROOT
+  $ mkdir foo
+  $ cd ..
+  $ cvscall -Q co -d cvswork2 foo
+  $ cd cvswork2
+  $ echo foo > a.txt
+  $ echo bar > b.txt
+  $ cvscall -Q add a.txt b.txt
+  $ cvsci -m "Initial commit"
+  cvs commit: Examining .
+  $ echo foo > b.txt
+  $ cvsci -m "Fix b on HEAD"
+  cvs commit: Examining .
+  $ echo bar > a.txt
+  $ cvsci -m "Small fix in a on HEAD"
+  cvs commit: Examining .
+  $ cvscall -Q tag -b BRANCH
+  $ cvscall -Q up -P -rBRANCH
+  $ echo baz > b.txt
+  $ cvsci -m "Change on BRANCH in b"
+  cvs commit: Examining .
+  $ hg debugcvsps -x --parents foo
+  collecting CVS rlog
+  5 log entries
+  creating changesets
+  4 changeset entries
+  ---------------------
+  PatchSet 1 
+  Date: * (glob)
+  Author: * (glob)
+  Branch: HEAD
+  Tag: (none) 
+  Log:
+  Initial commit
+  
+  Members: 
+  	a.txt:INITIAL->1.1 
+  	b.txt:INITIAL->1.1 
+  
+  ---------------------
+  PatchSet 2 
+  Date: * (glob)
+  Author: * (glob)
+  Branch: HEAD
+  Tag: (none) 
+  Branchpoints: BRANCH 
+  Parent: 1
+  Log:
+  Fix b on HEAD
+  
+  Members: 
+  	b.txt:1.1->1.2 
+  
+  ---------------------
+  PatchSet 3 
+  Date: * (glob)
+  Author: * (glob)
+  Branch: HEAD
+  Tag: (none) 
+  Branchpoints: BRANCH 
+  Parent: 2
+  Log:
+  Small fix in a on HEAD
+  
+  Members: 
+  	a.txt:1.1->1.2 
+  
+  ---------------------
+  PatchSet 4 
+  Date: * (glob)
+  Author: * (glob)
+  Branch: BRANCH
+  Tag: (none) 
+  Parent: 3
+  Log:
+  Change on BRANCH in b
+  
+  Members: 
+  	b.txt:1.2->1.2.2.1 
+  
+