Mercurial > hg
view tests/test-convert-svn-branches @ 6543:a6e2e60b34d0
convert: handle past or foreign partial svn copies
Subversion allows revisions to be composed of subparts coming from revisions
before the parent or from other part of the repository. There is no simple
representation for these now, keep the changes but do not track their origins.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Mon, 14 Apr 2008 22:31:34 +0200 |
parents | 55bd855fc0af |
children | 6ec941b6003d |
line wrap: on
line source
#!/bin/sh "$TESTDIR/hghave" svn svn-bindings || exit 80 fix_path() { tr '\\' / } echo "[extensions]" >> $HGRCPATH echo "convert = " >> $HGRCPATH echo "hgext.graphlog =" >> $HGRCPATH svnadmin create svn-repo 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 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 A | fix_path cd A echo a > trunk/a echo b > trunk/b echo c > trunk/c # Add a file within branches, used to confuse branch detection echo d > branches/notinbranch svn add trunk/a trunk/b trunk/c branches/notinbranch svn ci -m hello echo % branch to old svn copy trunk branches/old svn rm branches/old/c svn ci -m "branch trunk, remove c" svn up echo % update trunk "$TESTDIR/svn-safe-append.py" a trunk/a svn ci -m "change a" echo % update old branch "$TESTDIR/svn-safe-append.py" b branches/old/b svn ci -m "change b" echo % create a cross-branch revision svn move -m "move b" trunk/b branches/old/c "$TESTDIR/svn-safe-append.py" c branches/old/c svn ci -m "move and update c" echo % update old branch again "$TESTDIR/svn-safe-append.py" b branches/old/b svn ci -m "change b again" echo % move back and forth between branch of similar names # This used to generate fake copy records svn up svn move branches/old branches/old2 svn ci -m "move to old2" svn move branches/old2 branches/old svn ci -m "move back to old" echo % update trunk again "$TESTDIR/svn-safe-append.py" a trunk/a svn ci -m "last change to a" cd .. echo % convert trunk and branches hg convert --datesort $svnurl A-hg echo % branch again from a converted revision cd A svn copy -r 1 $svnurl/trunk branches/old3 svn ci -m "branch trunk@1 into old3" cd .. echo % convert again hg convert --datesort $svnurl A-hg cd A-hg hg glog --template 'branch=#branches# #rev# #desc|firstline# files: #files#\n' hg branches | sed 's/:.*/:/' hg tags -q cd ..