view tests/test-convert-hg-svn @ 10955:470a6ace7574

Added support for 'pretxncommit', so that one can call the ACL hook at pre-commit time too. This is useful because now it's possible to avoid violating ACL permissions much sooner, at commit time, instead of waiting for a PUSH to check if there were any invalid commits.
author Elifarley Callado Coelho Cruz <elifarley@gmail.com>
date Tue, 06 Apr 2010 22:15:43 -0300
parents c52057614c72
children
line wrap: on
line source

#!/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