|
|
#!/bin/sh
|
|
|
|
|
|
"$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
|
|
|
if [ $? -ne 0 ]; then
|
|
|
svnurl="/$svnurl"
|
|
|
fi
|
|
|
svnurl="file://$svnurl"
|
|
|
svn co "$svnurl" "$svnpath"-wc
|
|
|
|
|
|
cd "$svnpath"-wc
|
|
|
echo a > a
|
|
|
svn add a
|
|
|
svn ci -m'added a' a
|
|
|
|
|
|
cd ..
|
|
|
|
|
|
echo % initial roundtrip
|
|
|
hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg | grep -v initializing
|
|
|
hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc
|
|
|
|
|
|
echo % second roundtrip should do nothing
|
|
|
hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg
|
|
|
hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc
|
|
|
|
|
|
echo % new hg rev
|
|
|
|
|
|
hg clone "$svnpath"-hg "$svnpath"-work
|
|
|
cd "$svnpath"-work
|
|
|
echo b > b
|
|
|
hg add b
|
|
|
hg ci -mb
|
|
|
echo '% adding an empty revision'
|
|
|
hg qnew -m emtpy empty
|
|
|
hg qfinish -a
|
|
|
cd ..
|
|
|
|
|
|
echo % echo hg to svn
|
|
|
hg --cwd "$svnpath"-hg pull -q "$svnpath"-work
|
|
|
hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc
|
|
|
|
|
|
echo % svn back to hg should do nothing
|
|
|
hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg
|
|
|
echo % hg back to svn should do nothing
|
|
|
hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc
|
|
|
|