##// END OF EJS Templates
hgweb: support constructing URLs from an alternate base URL...
hgweb: support constructing URLs from an alternate base URL The web.baseurl config option allows server operators to define a custom URL for hosted content. The way it works today is that hgwebdir parses this config option into URL components then updates the appropriate WSGI environment variables so the request "lies" about its details. For example, SERVER_NAME is updated to reflect the alternate base URL's hostname. The WSGI environment should not be modified because WSGI applications may want to know the original request details (for debugging, etc). This commit teaches our request parser about the existence of an alternate base URL. If defined, the advertised URL and other self-reflected paths will take the alternate base URL into account. The hgweb WSGI application didn't use web.baseurl. But hgwebdir did. We update hgwebdir to alter the environment parsing accordingly. The old code around environment manipulation has been removed. With this change, parserequestfromenv() has grown to a bit unwieldy. Now that practically everyone is using it, it is obvious that there is some unused features that can be trimmed. So look for this in follow-up commits. Differential Revision: https://phab.mercurial-scm.org/D2822

File last commit:

r35711:1880a0bd default
r36916:219b2335 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