view tests/test-convert-svn @ 5534:61c230f81068

mq: avoid qnew committing everything on invalid paths (issue 803) If paths are supplied but resolve to nothing, localrepo.commit() is called with an empty set and commits the whole dirstate. Avoid this by passing the match function to commit.
author Patrick Mezard <pmezard@gmail.com>
date Tue, 20 Nov 2007 14:31:58 +0100
parents 91a522a69c13
children a893610f6f0c
line wrap: on
line source

#!/bin/sh

"$TESTDIR/hghave" svn svn-bindings || exit 80

fix_path()
{
    tr '\\' /
}

echo "[extensions]" >> $HGRCPATH
echo "convert = " >> $HGRCPATH

svnadmin create svn-repo

echo % initial svn import
mkdir t
cd t
echo a > a
cd ..

svnpath=`pwd | fix_path`
# SVN wants all paths to start with a slash. Unfortunately,
# Windows ones don't. Handle that.
expr $svnpath : "\/" > /dev/null
if [ $? -ne 0 ]; then
    svnpath='/'$svnpath
fi

svnurl=file://$svnpath/svn-repo/trunk
svn import -m init t $svnurl | fix_path

echo % update svn repository
svn co $svnurl t2 | fix_path
cd t2
echo b >> a
echo b > b
svn add b
svn ci -m changea
cd ..

echo % convert to hg once
hg convert $svnurl

echo % update svn repository again
cd t2
echo c >> a
echo c >> b
svn ci -m changeb
cd ..

echo % test incremental conversion
hg convert $svnurl

echo % test filemap
echo 'include b' > filemap
hg convert --filemap filemap $svnurl fmap
echo '[extensions]' >> $HGRCPATH
echo 'hgext.graphlog =' >> $HGRCPATH
hg glog -R fmap --template '#rev# #desc|firstline# files: #files#\n'

########################################

echo "# now tests that it works with trunk/branches/tags layout"
echo
echo % initial svn import
mkdir projA
cd projA
mkdir trunk
mkdir branches
mkdir tags
cd ..

svnurl=file://$svnpath/svn-repo/projA
svn import -m "init projA" projA $svnurl | fix_path


echo % update svn repository
svn co $svnurl/trunk A | fix_path
cd A
echo hello > letter.txt
svn add letter.txt
svn ci -m hello

echo world >> letter.txt
svn ci -m world

svn copy -m "tag v0.1" $svnurl/trunk $svnurl/tags/v0.1

echo 'nice day today!' >> letter.txt
svn ci -m "nice day"
cd ..

echo % convert to hg once
hg convert $svnurl A-hg

echo % update svn repository again
cd A
echo "see second letter" >> letter.txt
echo "nice to meet you" > letter2.txt
svn add letter2.txt
svn ci -m "second letter"

svn copy -m "tag v0.2" $svnurl/trunk $svnurl/tags/v0.2

echo "blah-blah-blah" >> letter2.txt
svn ci -m "work in progress"
cd ..

echo % test incremental conversion
hg convert $svnurl A-hg

cd A-hg
hg glog --template '#rev# #desc|firstline# files: #files#\n'
hg tags -q
cd ..