tests/test-convert-svn-source.t
changeset 12370 f98010f57a5e
parent 10775 c52057614c72
child 12377 a5b77eb0409b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-svn-source.t	Tue Sep 21 18:40:33 2010 +0200
@@ -0,0 +1,179 @@
+
+  $ "$TESTDIR/hghave" svn svn-bindings || exit 80
+
+  $ fixpath()
+  > {
+  >     tr '\\' /
+  > }
+  $ cat > $HGRCPATH <<EOF
+  > [extensions]
+  > convert = 
+  > graphlog =
+  > EOF
+
+  $ svnadmin create svn-repo
+  $ svnadmin setuuid svn-repo 00000000-0000-0000-0000-000000000000
+  $ svnpath=`pwd | fixpath`
+
+
+  $ expr "$svnpath" : "\/" > /dev/null
+  > if [ $? -ne 0 ]; then
+  >   svnpath="/$svnpath"
+  > fi
+  > svnurl="file://$svnpath/svn-repo"
+
+Now test that it works with trunk/tags layout, but no branches yet.
+
+Initial svn import
+
+  $ mkdir projB
+  $ cd projB
+  $ mkdir trunk
+  $ mkdir tags
+  $ cd ..
+
+  $ svnurl="file://$svnpath/svn-repo/proj%20B"
+  $ svn import -m "init projB" projB "$svnurl" | fixpath
+  Adding         projB/trunk
+  Adding         projB/tags
+  
+  Committed revision 1.
+
+Update svn repository
+
+  $ svn co "$svnurl"/trunk B | fixpath
+  Checked out revision 1.
+  $ cd B
+  $ echo hello > 'letter .txt'
+  $ svn add 'letter .txt'
+  A         letter .txt
+  $ svn ci -m hello
+  Adding         letter .txt
+  Transmitting file data .
+  Committed revision 2.
+
+  $ "$TESTDIR/svn-safe-append.py" world 'letter .txt'
+  $ svn ci -m world
+  Sending        letter .txt
+  Transmitting file data .
+  Committed revision 3.
+
+  $ svn copy -m "tag v0.1" "$svnurl"/trunk "$svnurl"/tags/v0.1
+  
+  Committed revision 4.
+
+  $ "$TESTDIR/svn-safe-append.py" 'nice day today!' 'letter .txt'
+  $ svn ci -m "nice day"
+  Sending        letter .txt
+  Transmitting file data .
+  Committed revision 5.
+  $ cd ..
+
+Convert to hg once
+
+  $ hg convert "$svnurl" B-hg
+  initializing destination B-hg repository
+  scanning source...
+  sorting...
+  converting...
+  3 init projB
+  2 hello
+  1 world
+  0 nice day
+  updating tags
+
+Update svn repository again
+
+  $ cd B
+  $ "$TESTDIR/svn-safe-append.py" "see second letter" 'letter .txt'
+  $ echo "nice to meet you" > letter2.txt
+  $ svn add letter2.txt
+  A         letter2.txt
+  $ svn ci -m "second letter"
+  Sending        letter .txt
+  Adding         letter2.txt
+  Transmitting file data ..
+  Committed revision 6.
+
+  $ svn copy -m "tag v0.2" "$svnurl"/trunk "$svnurl"/tags/v0.2
+  
+  Committed revision 7.
+
+  $ "$TESTDIR/svn-safe-append.py" "blah-blah-blah" letter2.txt
+  $ svn ci -m "work in progress"
+  Sending        letter2.txt
+  Transmitting file data .
+  Committed revision 8.
+  $ cd ..
+
+########################################
+
+Test incremental conversion
+
+  $ hg convert "$svnurl" B-hg
+  scanning source...
+  sorting...
+  converting...
+  1 second letter
+  0 work in progress
+  updating tags
+
+  $ cd B-hg
+  $ hg glog --template '{rev} {desc|firstline} files: {files}\n'
+  o  7 update tags files: .hgtags
+  |
+  o  6 work in progress files: letter2.txt
+  |
+  o  5 second letter files: letter .txt letter2.txt
+  |
+  o  4 update tags files: .hgtags
+  |
+  o  3 nice day files: letter .txt
+  |
+  o  2 world files: letter .txt
+  |
+  o  1 hello files: letter .txt
+  |
+  o  0 init projB files:
+  
+  $ hg tags -q
+  tip
+  v0.2
+  v0.1
+  $ cd ..
+
+Test filemap
+  $ echo 'include letter2.txt' > filemap
+  $ hg convert --filemap filemap "$svnurl"/trunk fmap
+  initializing destination fmap repository
+  scanning source...
+  sorting...
+  converting...
+  5 init projB
+  4 hello
+  3 world
+  2 nice day
+  1 second letter
+  0 work in progress
+  $ hg glog -R fmap --template '{rev} {desc|firstline} files: {files}\n'
+  o  1 work in progress files: letter2.txt
+  |
+  o  0 second letter files: letter2.txt
+  
+
+Test stop revision
+  $ hg convert --rev 1 "$svnurl"/trunk stoprev
+  initializing destination stoprev repository
+  scanning source...
+  sorting...
+  converting...
+  0 init projB
+
+Check convert_revision extra-records.
+This is also the only place testing more than one extra field in a revision.
+
+  $ cd stoprev
+  $ hg tip --debug | grep extra
+  extra:       branch=default
+  extra:       convert_revision=svn:00000000-0000-0000-0000-000000000000/proj B/trunk@1
+  $ cd ..