##// END OF EJS Templates
addremove: correctly handle intermediate symlinks...
addremove: correctly handle intermediate symlinks This fixes problems mentioned in issue660 comments (unrelated to original issue) where directory was renamed, and symlink was added instead. In such situation addremove wasn't able to correctly detect that old files no longer here, but tried to add symlink (and failed due collision with old files).

File last commit:

r5809:34c4131a default
r6651:7f0dd352 default
Show More
test-convert-hg-svn
73 lines | 1.6 KiB | text/plain | TextLexer
#!/bin/sh
"$TESTDIR/hghave" svn svn-bindings || exit 80
fix_path()
{
tr '\\' /
}
echo "[extensions]" >> $HGRCPATH
echo "convert = " >> $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
echo b > $svnpath-work/b
hg --cwd $svnpath-work add b
hg --cwd $svnpath-work ci -mb
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