##// END OF EJS Templates
internals: extract frame-based protocol docs to own document...
internals: extract frame-based protocol docs to own document wireprotocol.txt is quite long and difficult to digest. The frame-based protocol is effectively a standalone concept (and could even be used outside of Mercurial). So this commit extracts its docs to a standalone file. The first few paragraphs were rewritten as part of the extraction. Sections headers were adjusted accordingly. Existing referalls in wireprotocol.txt were updated to refer to the new doc / concept, which I've started referring to as `hgrpc`. I'm on the fence as to whether to move the HTTP and SSH transport details to the new doc as well. For now, I'm leaving them in wireprotocol.txt. Differential Revision: https://phab.mercurial-scm.org/D4443

File last commit:

r35711:1880a0bd default
r39594:b0e0db15 default
Show More
test-convert-svn-source.t
324 lines | 9.2 KiB | text/troff | Tads3Lexer
/ tests / test-convert-svn-source.t
Matt Mackall
tests: replace exit 80 with #require
r22046 #require svn svn-bindings
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370
timeless
tests: stabilize svn output...
r28469 $ filter_svn_output () {
FUJIWARA Katsunori
tests: make tests for convert with svn portable...
r28533 > egrep -v 'Committing|Updating|(^$)' | sed -e 's/done$//' || true
timeless
tests: stabilize svn output...
r28469 > }
Martin Geisler
tests: don't overwrite HGRCPATH...
r13519 $ cat >> $HGRCPATH <<EOF
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 > [extensions]
Mads Kiilerich
check-code: fix check for trailing whitespace on continued lines too...
r17347 > convert =
Pavel Boldin
convert.svn: branch name which equals trunk means `default' branch (issue2653)...
r13494 > [convert]
> svn.trunk = mytrunk
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 > EOF
$ svnadmin create svn-repo
Mads Kiilerich
tests: cleanup of svn url handling...
r17033 $ SVNREPOPATH=`pwd`/svn-repo
#if windows
Augie Fackler
tests: use $PYTHON instead of hardcoding python...
r22947 $ SVNREPOURL=file:///`$PYTHON -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$SVNREPOPATH"`
Mads Kiilerich
tests: cleanup of svn url handling...
r17033 #else
Augie Fackler
tests: use $PYTHON instead of hardcoding python...
r22947 $ SVNREPOURL=file://`$PYTHON -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$SVNREPOPATH"`
Mads Kiilerich
tests: cleanup of svn url handling...
r17033 #endif
Ben Goswami
splicemap: improve error handling when source is subversion (issue2084)...
r19122 $ INVALIDREVISIONID=svn:x2147622-4a9f-4db4-a8d3-13562ff547b2/proj%20B/mytrunk@1
$ VALIDREVISIONID=svn:a2147622-4a9f-4db4-a8d3-13562ff547b2/proj%20B/mytrunk/mytrunk@1
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370
Now test that it works with trunk/tags layout, but no branches yet.
Initial svn import
$ mkdir projB
$ cd projB
Pavel Boldin
convert.svn: branch name which equals trunk means `default' branch (issue2653)...
r13494 $ mkdir mytrunk
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 $ mkdir tags
$ cd ..
timeless
tests: stabilize svn output...
r28469 $ svn import -m "init projB" projB "$SVNREPOURL/proj%20B" | filter_svn_output | sort
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 Adding projB/mytrunk
Adding projB/tags
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 Committed revision 1.
Update svn repository
timeless
tests: stabilize svn output...
r28469 $ svn co "$SVNREPOURL/proj%20B/mytrunk" B | filter_svn_output
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 Checked out revision 1.
$ cd B
$ echo hello > 'letter .txt'
timeless
tests: stabilize svn output...
r28469 $ svn add 'letter .txt' | filter_svn_output
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 A letter .txt
timeless
tests: stabilize svn output...
r28469 $ svn ci -m hello | filter_svn_output
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 Adding letter .txt
Transmitting file data .
Committed revision 2.
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ svn-safe-append.py world 'letter .txt'
timeless
tests: stabilize svn output...
r28469 $ svn ci -m world | filter_svn_output
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 Sending letter .txt
Transmitting file data .
Committed revision 3.
timeless
tests: stabilize svn output...
r28469 $ svn copy -m "tag v0.1" "$SVNREPOURL/proj%20B/mytrunk" "$SVNREPOURL/proj%20B/tags/v0.1" | filter_svn_output
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 Committed revision 4.
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ svn-safe-append.py 'nice day today!' 'letter .txt'
timeless
tests: stabilize svn output...
r28469 $ svn ci -m "nice day" | filter_svn_output
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 Sending letter .txt
Transmitting file data .
Committed revision 5.
$ cd ..
Julian Cowley
convert: add config option to use the local time zone...
r17974 Convert to hg once and also test localtimezone option
NOTE: This doesn't check all time zones -- it merely determines that
the configuration option is taking effect.
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370
Julian Cowley
convert: add config option to use the local time zone...
r17974 An arbitrary (U.S.) time zone is used here. TZ=US/Hawaii is selected
since it does not use DST (unlike other U.S. time zones) and is always
a fixed difference from UTC.
$ TZ=US/Hawaii hg convert --config convert.localtimezone=True "$SVNREPOURL/proj%20B" B-hg
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 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
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ svn-safe-append.py "see second letter" 'letter .txt'
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 $ echo "nice to meet you" > letter2.txt
timeless
tests: stabilize svn output...
r28469 $ svn add letter2.txt | filter_svn_output
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 A letter2.txt
timeless
tests: stabilize svn output...
r28469 $ svn ci -m "second letter" | filter_svn_output
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 Sending letter .txt
Adding letter2.txt
Transmitting file data ..
Committed revision 6.
timeless
tests: stabilize svn output...
r28469 $ svn copy -m "tag v0.2" "$SVNREPOURL/proj%20B/mytrunk" "$SVNREPOURL/proj%20B/tags/v0.2" | filter_svn_output
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 Committed revision 7.
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ svn-safe-append.py "blah-blah-blah" letter2.txt
timeless
tests: stabilize svn output...
r28469 $ svn ci -m "work in progress" | filter_svn_output
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 Sending letter2.txt
Transmitting file data .
Committed revision 8.
$ cd ..
Mads Kiilerich
tests: cleanup of svn url handling...
r17033 $ hg convert -s svn "$SVNREPOURL/proj%20B/non-existent-path" dest
Mads Kiilerich
convert: handle invalid subversion source paths
r14152 initializing destination dest repository
abort: no revision found in module /proj B/non-existent-path
[255]
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 ########################################
Test incremental conversion
Julian Cowley
convert: add config option to use the local time zone...
r17974 $ TZ=US/Hawaii hg convert --config convert.localtimezone=True "$SVNREPOURL/proj%20B" B-hg
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 scanning source...
sorting...
converting...
1 second letter
0 work in progress
updating tags
$ cd B-hg
Martin Geisler
tests: don't load unnecessary graphlog extension...
r20117 $ hg log -G --template '{rev} {desc|firstline} date: {date|date} files: {files}\n'
Julian Cowley
convert: add config option to use the local time zone...
r17974 o 7 update tags date: * +0000 files: .hgtags (glob)
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 |
Julian Cowley
convert: add config option to use the local time zone...
r17974 o 6 work in progress date: * -1000 files: letter2.txt (glob)
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 |
Julian Cowley
convert: add config option to use the local time zone...
r17974 o 5 second letter date: * -1000 files: letter .txt letter2.txt (glob)
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 |
Julian Cowley
convert: add config option to use the local time zone...
r17974 o 4 update tags date: * +0000 files: .hgtags (glob)
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 |
Julian Cowley
convert: add config option to use the local time zone...
r17974 o 3 nice day date: * -1000 files: letter .txt (glob)
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 |
Julian Cowley
convert: add config option to use the local time zone...
r17974 o 2 world date: * -1000 files: letter .txt (glob)
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 |
Julian Cowley
convert: add config option to use the local time zone...
r17974 o 1 hello date: * -1000 files: letter .txt (glob)
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 |
Julian Cowley
convert: add config option to use the local time zone...
r17974 o 0 init projB date: * -1000 files: (glob)
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370
$ hg tags -q
tip
v0.2
v0.1
$ cd ..
Test filemap
$ echo 'include letter2.txt' > filemap
Mads Kiilerich
tests: cleanup of svn url handling...
r17033 $ hg convert --filemap filemap "$SVNREPOURL/proj%20B/mytrunk" fmap
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 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
Pavel Boldin
convert.svn: branch name which equals trunk means `default' branch (issue2653)...
r13494 $ hg -R fmap branch -q
default
Martin Geisler
tests: don't load unnecessary graphlog extension...
r20117 $ hg log -G -R fmap --template '{rev} {desc|firstline} files: {files}\n'
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 o 1 work in progress files: letter2.txt
|
o 0 second letter files: letter2.txt
Mads Kiilerich
convert: introduce --full for converting all files...
r22300 Convert with --full adds and removes files that didn't change
$ cd B
$ echo >> "letter .txt"
timeless
tests: stabilize svn output...
r28469 $ svn ci -m 'nothing' | filter_svn_output
Mads Kiilerich
convert: introduce --full for converting all files...
r22300 Sending letter .txt
Transmitting file data .
Committed revision 9.
$ cd ..
$ echo 'rename letter2.txt letter3.txt' > filemap
$ hg convert --filemap filemap --full "$SVNREPOURL/proj%20B/mytrunk" fmap
scanning source...
sorting...
converting...
0 nothing
$ hg -R fmap st --change tip
A letter .txt
A letter3.txt
R letter2.txt
Ben Goswami
splicemap: improve error handling when source is subversion (issue2084)...
r19122 test invalid splicemap1
$ cat > splicemap <<EOF
> $INVALIDREVISIONID $VALIDREVISIONID
> EOF
$ hg convert --splicemap splicemap "$SVNREPOURL/proj%20B/mytrunk" smap
initializing destination smap repository
abort: splicemap entry svn:x2147622-4a9f-4db4-a8d3-13562ff547b2/proj%20B/mytrunk@1 is not a valid revision identifier
[255]
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370
Test stop revision
Mads Kiilerich
tests: cleanup of svn url handling...
r17033 $ hg convert --rev 1 "$SVNREPOURL/proj%20B/mytrunk" stoprev
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 initializing destination stoprev repository
scanning source...
sorting...
converting...
0 init projB
Pavel Boldin
convert.svn: branch name which equals trunk means `default' branch (issue2653)...
r13494 $ hg -R stoprev branch -q
default
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370
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
Pavel Boldin
convert.svn: branch name which equals trunk means `default' branch (issue2653)...
r13494 extra: convert_revision=svn:........-....-....-....-............/proj B/mytrunk@1 (re)
Dan Villiom Podlaski Christiansen
tests: unify test-convert-svn-*
r12370 $ cd ..
Patrick Mezard
convert/svn: do not try converting empty head revisions (issue3347)...
r16466
Mads Kiilerich
convert: secret config option for disabling debugsvnlog...
r20420 Test converting empty heads (issue3347).
Also tests getting logs directly without debugsvnlog.
Patrick Mezard
convert/svn: do not try converting empty head revisions (issue3347)...
r16466
$ svnadmin create svn-empty
$ svnadmin load -q svn-empty < "$TESTDIR/svn/empty.svndump"
Mads Kiilerich
convert: secret config option for disabling debugsvnlog...
r20420 $ hg --config convert.svn.trunk= --config convert.svn.debugsvnlog=0 convert svn-empty
Patrick Mezard
convert/svn: do not try converting empty head revisions (issue3347)...
r16466 assuming destination svn-empty-hg
initializing destination svn-empty-hg repository
scanning source...
sorting...
converting...
1 init projA
0 adddir
Mads Kiilerich
tests: cleanup of svn url handling...
r17033 $ hg --config convert.svn.trunk= convert "$SVNREPOURL/../svn-empty/trunk"
Patrick Mezard
convert/svn: do not try converting empty head revisions (issue3347)...
r16466 assuming destination trunk-hg
initializing destination trunk-hg repository
scanning source...
sorting...
converting...
1 init projA
0 adddir
Augie Fackler
convert: on svn failure, note libsvn version (issue4043)...
r23583
Test that a too-new repository format is properly rejected:
$ mv svn-empty/format format
$ echo 999 > svn-empty/format
It's important that this command explicitly specify svn, otherwise it
can have surprising side effects (like falling back to a perforce
depot that can be seen from the test environment and slurping from that.)
$ hg convert --source-type svn svn-empty this-will-fail
initializing destination this-will-fail repository
file:/*/$TESTTMP/svn-empty does not look like a Subversion repository to libsvn version 1.*.* (glob)
abort: svn-empty: missing or unsupported repository
[255]
$ mv format svn-empty/format
Jordi Gutiérrez Hermoso
svnsubrepo: check if subrepo is missing when checking dirty state (issue5657)...
r35694
enable svn subrepos
$ cat >> $HGRCPATH <<EOF
> [subrepos]
> svn:allowed = true
> EOF
try converting when we have an svn subrepo and a merge in hg superrepo (issue5657)
$ cd "$TESTTMP"
$ hg init withmerge
$ cd withmerge
$ echo "subrepo = [svn]$SVNREPOURL" >.hgsub
$ hg add .hgsub
Jordi Gutiérrez Hermoso
test-convert-svn-move: sort svn checkout output...
r35711 $ svn checkout "$SVNREPOURL" subrepo | sort
Jordi Gutiérrez Hermoso
svnsubrepo: check if subrepo is missing when checking dirty state (issue5657)...
r35694 A subrepo/proj B
A subrepo/proj B/mytrunk
A subrepo/proj B/mytrunk/letter .txt
A subrepo/proj B/mytrunk/letter2.txt
A subrepo/proj B/tags
A subrepo/proj B/tags/v0.1
A subrepo/proj B/tags/v0.1/letter .txt
A subrepo/proj B/tags/v0.2
A subrepo/proj B/tags/v0.2/letter .txt
A subrepo/proj B/tags/v0.2/letter2.txt
Checked out revision 9.
$ hg ci -m "Adding svn subrepo"
$ touch file1.txt
$ hg add file1.txt
$ hg ci -m "Adding file1"
$ hg up 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ touch file2.txt
$ hg add file2.txt
$ hg ci -m "Adding file2"
created new head
$ hg merge 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "merged"
$ cd ..
$ hg --config extensions.convert= convert withmerge withmerge-converted
initializing destination withmerge-converted repository
scanning source...
sorting...
converting...
3 Adding svn subrepo
2 Adding file1
1 Adding file2
0 merged
$ cd withmerge-converted
Jordi Gutiérrez Hermoso
test-convert-svn-move: sort svn checkout output...
r35711 $ hg up | sort
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
Jordi Gutiérrez Hermoso
svnsubrepo: check if subrepo is missing when checking dirty state (issue5657)...
r35694 A subrepo/proj B
A subrepo/proj B/mytrunk
A subrepo/proj B/mytrunk/letter .txt
A subrepo/proj B/mytrunk/letter2.txt
A subrepo/proj B/tags
A subrepo/proj B/tags/v0.1
A subrepo/proj B/tags/v0.1/letter .txt
A subrepo/proj B/tags/v0.2
A subrepo/proj B/tags/v0.2/letter .txt
A subrepo/proj B/tags/v0.2/letter2.txt
Checked out revision 9.
$ ls
file1.txt
file2.txt
subrepo