tests/test-convert-bzr.t
changeset 12512 8d84166d34d7
parent 8470 dd24488cba2d
child 15441 e0348815e806
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-bzr.t	Sun Sep 26 14:35:24 2010 -0500
@@ -0,0 +1,209 @@
+
+  $ . "$TESTDIR/bzr-definitions"
+
+create and rename on the same file in the same step
+
+  $ mkdir test-createandrename
+  $ cd test-createandrename
+  $ bzr init -q source
+  $ cd source
+  $ echo a > a
+  $ echo c > c
+  $ echo e > e
+  $ bzr add -q a c e
+  $ bzr commit -q -m 'Initial add: a, c, e'
+  $ bzr mv a b
+  a => b
+  $ bzr mv c d
+  c => d
+  $ bzr mv e f
+  e => f
+  $ echo a2 >> a
+  $ mkdir e
+  $ bzr add -q a e
+  $ bzr commit -q -m 'rename a into b, create a, rename c into d'
+  $ cd ..
+  $ hg convert source source-hg
+  initializing destination source-hg repository
+  scanning source...
+  sorting...
+  converting...
+  1 Initial add: a, c, e
+  0 rename a into b, create a, rename c into d
+  $ glog -R source-hg
+  o  1 "rename a into b, create a, rename c into d" files: a b c d e f
+  |
+  o  0 "Initial add: a, c, e" files: a c e
+  
+
+manifest
+
+  $ hg manifest -R source-hg -r tip
+  a
+  b
+  d
+  f
+
+test --rev option
+
+  $ hg convert -r 1 source source-1-hg
+  initializing destination source-1-hg repository
+  scanning source...
+  sorting...
+  converting...
+  0 Initial add: a, c, e
+  $ glog -R source-1-hg
+  o  0 "Initial add: a, c, e" files: a c e
+  
+
+test with filemap
+
+  $ cat > filemap <<EOF
+  > exclude a
+  > EOF
+  $ hg convert --filemap filemap source source-filemap-hg
+  initializing destination source-filemap-hg repository
+  scanning source...
+  sorting...
+  converting...
+  1 Initial add: a, c, e
+  0 rename a into b, create a, rename c into d
+  $ hg -R source-filemap-hg manifest -r tip
+  b
+  d
+  f
+
+convert from lightweight checkout
+
+  $ bzr checkout --lightweight source source-light
+  $ hg convert source-light source-light-hg
+  initializing destination source-light-hg repository
+  warning: lightweight checkouts may cause conversion failures, try with a regular branch instead.
+  scanning source...
+  sorting...
+  converting...
+  1 Initial add: a, c, e
+  0 rename a into b, create a, rename c into d
+
+lightweight manifest
+
+  $ hg manifest -R source-light-hg -r tip
+  a
+  b
+  d
+  f
+
+extract timestamps that look just like hg's {date|isodate}:
+yyyy-mm-dd HH:MM zzzz (no seconds!)
+compare timestamps
+
+  $ cd source
+  $ bzr log | \
+  >   sed '/timestamp/!d;s/.\{15\}\([0-9: -]\{16\}\):.. \(.[0-9]\{4\}\)/\1 \2/' \
+  >   > ../bzr-timestamps
+  $ cd ..
+  $ hg -R source-hg log --template "{date|isodate}\n" > hg-timestamps
+  $ diff -u bzr-timestamps hg-timestamps
+  $ cd ..
+
+merge
+
+  $ mkdir test-merge
+  $ cd test-merge
+  $ cat > helper.py <<EOF
+  > import sys
+  > from bzrlib import workingtree
+  > wt = workingtree.WorkingTree.open('.')
+  > 
+  > message, stamp = sys.argv[1:]
+  > wt.commit(message, timestamp=int(stamp))
+  > EOF
+  $ bzr init -q source
+  $ cd source
+  $ echo content > a
+  $ echo content2 > b
+  $ bzr add -q a b
+  $ bzr commit -q -m 'Initial add'
+  $ cd ..
+  $ bzr branch -q source source-improve
+  $ cd source
+  $ echo more >> a
+  $ python ../helper.py 'Editing a' 100
+  $ cd ../source-improve
+  $ echo content3 >> b
+  $ python ../helper.py 'Editing b' 200
+  $ cd ../source
+  $ bzr merge -q ../source-improve
+  $ bzr commit -q -m 'Merged improve branch'
+  $ cd ..
+  $ hg convert --datesort source source-hg
+  initializing destination source-hg repository
+  scanning source...
+  sorting...
+  converting...
+  3 Initial add
+  2 Editing a
+  1 Editing b
+  0 Merged improve branch
+  $ glog -R source-hg
+  o    3 "Merged improve branch" files:
+  |\
+  | o  2 "Editing b" files: b
+  | |
+  o |  1 "Editing a" files: a
+  |/
+  o  0 "Initial add" files: a b
+  
+  $ cd ..
+
+symlinks and executable files
+
+  $ mkdir test-symlinks
+  $ cd test-symlinks
+  $ bzr init -q source
+  $ cd source
+  $ touch program
+  $ chmod +x program
+  $ ln -s program altname
+  $ mkdir d
+  $ echo a > d/a
+  $ ln -s a syma
+  $ bzr add -q altname program syma d/a
+  $ bzr commit -q -m 'Initial setup'
+  $ touch newprog
+  $ chmod +x newprog
+  $ rm altname
+  $ ln -s newprog altname
+  $ chmod -x program
+  $ bzr add -q newprog
+  $ bzr commit -q -m 'Symlink changed, x bits changed'
+  $ cd ..
+  $ hg convert source source-hg
+  initializing destination source-hg repository
+  scanning source...
+  sorting...
+  converting...
+  1 Initial setup
+  0 Symlink changed, x bits changed
+  $ manifest source-hg 0
+  % manifest of 0
+  644 @ altname
+  644   d/a
+  755 * program
+  644 @ syma
+  $ manifest source-hg tip
+  % manifest of tip
+  644 @ altname
+  644   d/a
+  755 * newprog
+  644   program
+  644 @ syma
+  $ cd source-hg
+
+test the symlinks can be recreated
+
+  $ hg up
+  5 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg cat syma; echo
+  a
+