--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-hg-svn.t Sun Sep 26 16:53:06 2010 -0500
@@ -0,0 +1,108 @@
+
+ $ "$TESTDIR/hghave" svn svn-bindings || exit 80
+ $ fix_path()
+ > {
+ > tr '\\' /
+ > }
+ $ echo "[extensions]" >> $HGRCPATH
+ $ echo "convert = " >> $HGRCPATH
+ $ echo "mq = " >> $HGRCPATH
+ $ svnpath=`pwd | fix_path`/svn-repo
+ $ svnadmin create "$svnpath"
+ $ cat > "$svnpath"/hooks/pre-revprop-change <<EOF
+ > #!/bin/sh
+ >
+ > REPOS="$1"
+ > REV="$2"
+ > USER="$3"
+ > PROPNAME="$4"
+ > ACTION="$5"
+ >
+ > if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
+ > if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-branch" ]; then exit 0; fi
+ > if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-rev" ]; then exit 0; fi
+ >
+ > echo "Changing prohibited revision property" >&2
+ > exit 1
+ > EOF
+ $ chmod +x "$svnpath"/hooks/pre-revprop-change
+ $
+ $ # SVN wants all paths to start with a slash. Unfortunately,
+ $ # Windows ones don't. Handle that.
+ $ svnurl="$svnpath"
+ $ expr "$svnurl" : "\/" > /dev/null || svnurl="/$svnurl"
+ $ svnurl="file://$svnurl"
+ $ svn co "$svnurl" "$svnpath"-wc
+ Checked out revision 0.
+ $ cd "$svnpath"-wc
+ $ echo a > a
+ $ svn add a
+ A a
+ $ svn ci -m'added a' a
+ Adding a
+ Transmitting file data .
+ Committed revision 1.
+ $ cd ..
+
+initial roundtrip
+
+ $ hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg | grep -v initializing
+ scanning source...
+ sorting...
+ converting...
+ 0 added a
+ $ hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc
+ scanning source...
+ sorting...
+ converting...
+
+second roundtrip should do nothing
+
+ $ hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg
+ scanning source...
+ sorting...
+ converting...
+ $ hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc
+ scanning source...
+ sorting...
+ converting...
+
+new hg rev
+
+ $ hg clone "$svnpath"-hg "$svnpath"-work
+ updating to branch default
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ cd "$svnpath"-work
+ $ echo b > b
+ $ hg add b
+ $ hg ci -mb
+
+adding an empty revision
+
+ $ hg qnew -m emtpy empty
+ $ hg qfinish -a
+ $ cd ..
+
+echo hg to svn
+
+ $ hg --cwd "$svnpath"-hg pull -q "$svnpath"-work
+ $ hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc
+ scanning source...
+ sorting...
+ converting...
+ 1 b
+ 0 emtpy
+
+svn back to hg should do nothing
+
+ $ hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg
+ scanning source...
+ sorting...
+ converting...
+
+hg back to svn should do nothing
+
+ $ hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc
+ scanning source...
+ sorting...
+ converting...