Mercurial > hg
view tests/test-convert-svn-source @ 5811:180a3eee4b75
Fix copies reporting in log and convert.
If copy logged in file revision, we report copy for changeset only
if file revisions linkrev points back to the changeset in question
or both changeset parents contain different file revisions.
This fixes extra copies reported when executable bit was changed for
previously copied file.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Sat, 29 Dec 2007 17:11:48 +0300 |
parents | de8311f7a31b |
children | 8b95f598097c |
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/test 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 % test stop revision hg convert --rev 1 $svnurl stoprev # Check convert_revision extra-records. # This is also the only place testing more than one extra field # in a revision. hg --cwd stoprev tip --debug | grep extra | sed 's/=.*/=/' ######################################## 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 ..