Mercurial > hg
view tests/test-convert-svn-source.t @ 14732:e9ed3506f066 stable
backout of d04ba50e104d: allow to qpop/push with a dirty working copy
The new behavior was breaking existing tools that relied on a sequence such as
this:
1) start with a dirty working copy
2) qimport some patch
3) try to qpush it
4) old behavior would fail at this point due to outstanding changes.
(new behavior would only fail if the outstanding changes and the patches
changes intersect)
5) innocent user qrefreshes, gets his local changes in the imported patch
It's worth considering if we can move this behavior to -f in the future.
author | Idan Kamara <idankk86@gmail.com> |
---|---|
date | Fri, 24 Jun 2011 23:25:42 +0300 |
parents | 00121103546a |
children | c53a49c345e1 |
line wrap: on
line source
$ "$TESTDIR/hghave" svn svn-bindings || exit 80 $ fixpath() > { > tr '\\' / > } $ cat >> $HGRCPATH <<EOF > [extensions] > convert = > graphlog = > [convert] > svn.trunk = mytrunk > EOF $ svnadmin create svn-repo $ svnpath=`pwd | fixpath` $ expr "$svnpath" : "\/" > /dev/null > if [ $? -ne 0 ]; then > svnpath="/$svnpath" > fi > svnurl="file://$svnpath/svn-repo" Now test that it works with trunk/tags layout, but no branches yet. Initial svn import $ mkdir projB $ cd projB $ mkdir mytrunk $ mkdir tags $ cd .. $ svnurl="file://$svnpath/svn-repo/proj%20B" $ svn import -m "init projB" projB "$svnurl" | fixpath Adding projB/mytrunk Adding projB/tags Committed revision 1. Update svn repository $ svn co "$svnurl"/mytrunk B | fixpath Checked out revision 1. $ cd B $ echo hello > 'letter .txt' $ svn add 'letter .txt' A letter .txt $ svn ci -m hello Adding letter .txt Transmitting file data . Committed revision 2. $ "$TESTDIR/svn-safe-append.py" world 'letter .txt' $ svn ci -m world Sending letter .txt Transmitting file data . Committed revision 3. $ svn copy -m "tag v0.1" "$svnurl"/mytrunk "$svnurl"/tags/v0.1 Committed revision 4. $ "$TESTDIR/svn-safe-append.py" 'nice day today!' 'letter .txt' $ svn ci -m "nice day" Sending letter .txt Transmitting file data . Committed revision 5. $ cd .. Convert to hg once $ hg convert "$svnurl" B-hg initializing destination B-hg repository scanning source... sorting... converting... 3 init projB 2 hello 1 world 0 nice day updating tags Update svn repository again $ cd B $ "$TESTDIR/svn-safe-append.py" "see second letter" 'letter .txt' $ echo "nice to meet you" > letter2.txt $ svn add letter2.txt A letter2.txt $ svn ci -m "second letter" Sending letter .txt Adding letter2.txt Transmitting file data .. Committed revision 6. $ svn copy -m "tag v0.2" "$svnurl"/mytrunk "$svnurl"/tags/v0.2 Committed revision 7. $ "$TESTDIR/svn-safe-append.py" "blah-blah-blah" letter2.txt $ svn ci -m "work in progress" Sending letter2.txt Transmitting file data . Committed revision 8. $ cd .. $ hg convert -s svn "$svnurl/non-existent-path" dest initializing destination dest repository abort: no revision found in module /proj B/non-existent-path [255] ######################################## Test incremental conversion $ hg convert "$svnurl" B-hg scanning source... sorting... converting... 1 second letter 0 work in progress updating tags $ cd B-hg $ hg glog --template '{rev} {desc|firstline} files: {files}\n' o 7 update tags files: .hgtags | o 6 work in progress files: letter2.txt | o 5 second letter files: letter .txt letter2.txt | o 4 update tags files: .hgtags | o 3 nice day files: letter .txt | o 2 world files: letter .txt | o 1 hello files: letter .txt | o 0 init projB files: $ hg tags -q tip v0.2 v0.1 $ cd .. Test filemap $ echo 'include letter2.txt' > filemap $ hg convert --filemap filemap "$svnurl"/mytrunk fmap initializing destination fmap repository scanning source... sorting... converting... 5 init projB 4 hello 3 world 2 nice day 1 second letter 0 work in progress $ hg -R fmap branch -q default $ hg glog -R fmap --template '{rev} {desc|firstline} files: {files}\n' o 1 work in progress files: letter2.txt | o 0 second letter files: letter2.txt Test stop revision $ hg convert --rev 1 "$svnurl"/mytrunk stoprev initializing destination stoprev repository scanning source... sorting... converting... 0 init projB $ hg -R stoprev branch -q default Check convert_revision extra-records. This is also the only place testing more than one extra field in a revision. $ cd stoprev $ hg tip --debug | grep extra extra: branch=default extra: convert_revision=svn:........-....-....-....-............/proj B/mytrunk@1 (re) $ cd ..