##// 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:

r36286:164ed6d5 default
r36916:219b2335 default
Show More
test-rebase-dest.t
453 lines | 9.4 KiB | text/troff | Tads3Lexer
/ tests / test-rebase-dest.t
Ryan McElroy
rebase: move destination test to new test file...
r31729 Require a destination
$ cat >> $HGRCPATH <<EOF
> [extensions]
> rebase =
> [commands]
> rebase.requiredest = True
> EOF
$ hg init repo
$ cd repo
$ echo a >> a
$ hg commit -qAm aa
$ echo b >> b
$ hg commit -qAm bb
$ hg up ".^"
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo c >> c
$ hg commit -qAm cc
$ hg rebase
abort: you must specify a destination
(use: hg rebase -d REV)
[255]
$ hg rebase -d 1
rebasing 2:5db65b93a12b "cc" (tip)
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/5db65b93a12b-4fb789ec-rebase.hg
Ryan McElroy
rebase: move destination test to new test file...
r31729 $ hg rebase -d 0 -r . -q
$ HGPLAIN=1 hg rebase
rebasing 2:889b0bc6a730 "cc" (tip)
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/889b0bc6a730-41ec4f81-rebase.hg
Ryan McElroy
rebase: move destination test to new test file...
r31729 $ hg rebase -d 0 -r . -q
$ hg --config commands.rebase.requiredest=False rebase
rebasing 2:279de9495438 "cc" (tip)
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/279de9495438-ab0a5128-rebase.hg
Ryan McElroy
rebase: move destination test to new test file...
r31729
Ryan McElroy
rebase: test to show brokenness with requiredest...
r31730 Requiring dest should not break continue or other rebase options
$ hg up 1 -q
$ echo d >> c
$ hg commit -qAm dc
$ hg log -G -T '{rev} {desc}'
@ 3 dc
|
| o 2 cc
|/
o 1 bb
|
o 0 aa
$ hg rebase -d 2
rebasing 3:0537f6b50def "dc" (tip)
merging c
warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
unresolved conflicts (see hg resolve, then hg rebase --continue)
[1]
$ echo d > c
$ hg resolve --mark --all
(no more unresolved files)
continue: hg rebase --continue
$ hg rebase --continue
Ryan McElroy
rebase: allow destination-free continue and abort (issue5513)
r31731 rebasing 3:0537f6b50def "dc" (tip)
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/0537f6b50def-be4c7386-rebase.hg
Ryan McElroy
rebase: demonstrate behavior with requiredest and pull --rebase
r31732
$ cd ..
Check rebase.requiredest interaction with pull --rebase
$ hg clone repo clone
updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd repo
$ echo e > e
$ hg commit -qAm ee
$ cd ..
$ cd clone
$ echo f > f
$ hg commit -qAm ff
$ hg pull --rebase
Ryan McElroy
rebase: abort hg pull --rebase if rebase.requiredest is set (issue5514)...
r31733 abort: rebase destination required by configuration
(use hg pull followed by hg rebase -d DEST)
Ryan McElroy
rebase: demonstrate behavior with requiredest and pull --rebase
r31732 [255]
Jun Wu
rebase: initial support for multiple destinations...
r34007 Setup rebase with multiple destinations
$ cd $TESTTMP
$ cat >> $TESTTMP/maprevset.py <<EOF
> from __future__ import absolute_import
> from mercurial import registrar, revset, revsetlang, smartset
> revsetpredicate = registrar.revsetpredicate()
> cache = {}
Augie Fackler
tests: add b prefixes to test-rebase-dest.t...
r36286 > @revsetpredicate(b'map')
Jun Wu
rebase: initial support for multiple destinations...
r34007 > def map(repo, subset, x):
> """(set, mapping)"""
Augie Fackler
tests: add b prefixes to test-rebase-dest.t...
r36286 > setarg, maparg = revsetlang.getargs(x, 2, 2, b'')
Jun Wu
rebase: initial support for multiple destinations...
r34007 > rset = revset.getset(repo, smartset.fullreposet(repo), setarg)
Augie Fackler
tests: add b prefixes to test-rebase-dest.t...
r36286 > mapstr = revsetlang.getstring(maparg, b'')
> map = dict(a.split(b':') for a in mapstr.split(b','))
Jun Wu
rebase: initial support for multiple destinations...
r34007 > rev = rset.first()
> desc = repo[rev].description()
> newdesc = map.get(desc)
Augie Fackler
tests: add b prefixes to test-rebase-dest.t...
r36286 > if newdesc == b'null':
Jun Wu
rebase: initial support for multiple destinations...
r34007 > revs = [-1]
> else:
Augie Fackler
tests: add b prefixes to test-rebase-dest.t...
r36286 > query = revsetlang.formatspec(b'desc(%s)', newdesc)
Jun Wu
rebase: initial support for multiple destinations...
r34007 > revs = repo.revs(query)
> return smartset.baseset(revs)
> EOF
$ cat >> $HGRCPATH <<EOF
> [ui]
> allowemptycommit=1
> [extensions]
> drawdag=$TESTDIR/drawdag.py
> [phases]
> publish=False
> [alias]
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 > tglog = log -G --template "{rev}: {node|short} {desc} {instabilities}" -r 'sort(all(), topo)'
Jun Wu
rebase: initial support for multiple destinations...
r34007 > [extensions]
> maprevset=$TESTTMP/maprevset.py
> [experimental]
Boris Feld
config: replace experimental.stabilization by experimental.evolution...
r34866 > evolution=true
Jun Wu
rebase: initial support for multiple destinations...
r34007 > EOF
$ rebasewithdag() {
> N=`$PYTHON -c "print($N+1)"`
> hg init repo$N && cd repo$N
> hg debugdrawdag
> hg rebase "$@" > _rebasetmp
> r=$?
> grep -v 'saved backup bundle' _rebasetmp
> [ $r -eq 0 ] && rm -f .hg/localtags && hg tglog
> cd ..
> return $r
> }
Destination resolves to an empty set:
$ rebasewithdag -s B -d 'SRC - SRC' <<'EOS'
> C
> |
> B
> |
> A
> EOS
nothing to rebase - empty destination
[1]
Multiple destinations and --collapse are not compatible:
$ rebasewithdag -s C+E -d 'SRC^^' --collapse <<'EOS'
> C F
> | |
> B E
> | |
> A D
> EOS
abort: --collapse does not work with multiple destinations
[255]
Multiple destinations cannot be used with --base:
$ rebasewithdag -b B+E -d 'SRC^^' --collapse <<'EOS'
> B E
> | |
> A D
> EOS
abort: unknown revision 'SRC'!
[255]
Rebase to null should work:
$ rebasewithdag -r A+C+D -d 'null' <<'EOS'
> C D
> | |
> A B
> EOS
already rebased 0:426bada5c675 "A" (A)
already rebased 2:dc0947a82db8 "C" (C)
rebasing 3:004dc1679908 "D" (D tip)
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 4: d8d8601abd5e D
Jun Wu
rebase: initial support for multiple destinations...
r34007
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 2: dc0947a82db8 C
Jun Wu
rebase: initial support for multiple destinations...
r34007 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 | o 1: fc2b737bb2e5 B
Jun Wu
rebase: initial support for multiple destinations...
r34007 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 0: 426bada5c675 A
Jun Wu
rebase: initial support for multiple destinations...
r34007
Destination resolves to multiple changesets:
$ rebasewithdag -s B -d 'ALLSRC+SRC' <<'EOS'
> C
> |
> B
> |
> Z
> EOS
abort: rebase destination for f0a671a46792 is not unique
[255]
Destination is an ancestor of source:
$ rebasewithdag -s B -d 'SRC' <<'EOS'
> C
> |
> B
> |
> Z
> EOS
Jun Wu
rebase: sort destmap topologically...
r34008 abort: source and destination form a cycle
Jun Wu
rebase: initial support for multiple destinations...
r34007 [255]
Switch roots:
$ rebasewithdag -s 'all() - roots(all())' -d 'roots(all()) - ::SRC' <<'EOS'
> C F
> | |
> B E
> | |
> A D
> EOS
rebasing 2:112478962961 "B" (B)
rebasing 4:26805aba1e60 "C" (C)
rebasing 3:cd488e83d208 "E" (E)
rebasing 5:0069ba24938a "F" (F tip)
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 9: d150ff263fc8 F
Jun Wu
rebase: initial support for multiple destinations...
r34007 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 8: 66f30a1a2eab E
Jun Wu
rebase: initial support for multiple destinations...
r34007 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 | o 7: 93db94ffae0e C
Jun Wu
rebase: initial support for multiple destinations...
r34007 | |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 | o 6: d0071c3b0c88 B
Jun Wu
rebase: initial support for multiple destinations...
r34007 | |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 | o 1: 058c1e1fb10a D
Jun Wu
rebase: initial support for multiple destinations...
r34007 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 0: 426bada5c675 A
Jun Wu
rebase: initial support for multiple destinations...
r34007
Different destinations for merge changesets with a same root:
$ rebasewithdag -s B -d '((parents(SRC)-B-A)::) - (::ALLSRC)' <<'EOS'
> C G
> |\|
> | F
> |
> B E
> |\|
> A D
> EOS
rebasing 3:a4256619d830 "B" (B)
rebasing 6:8e139e245220 "C" (C tip)
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 8: 51e2ce92e06a C
Jun Wu
rebase: initial support for multiple destinations...
r34007 |\
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 | o 7: 2ed0c8546285 B
Jun Wu
rebase: initial support for multiple destinations...
r34007 | |\
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o | | 5: 8fdb2c1feb20 G
Jun Wu
rebase: initial support for multiple destinations...
r34007 | | |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 | | o 4: cd488e83d208 E
Jun Wu
rebase: initial support for multiple destinations...
r34007 | | |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o | | 2: a6661b868de9 F
Jun Wu
rebase: initial support for multiple destinations...
r34007 / /
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 | o 1: 058c1e1fb10a D
Jun Wu
rebase: initial support for multiple destinations...
r34007 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 0: 426bada5c675 A
Jun Wu
rebase: initial support for multiple destinations...
r34007
Move to a previous parent:
$ rebasewithdag -s E+F+G -d 'SRC^^' <<'EOS'
> H
> |
> D G
> |/
> C F
> |/
> B E # E will be ignored, since E^^ is empty
> |/
> A
> EOS
rebasing 4:33441538d4aa "F" (F)
rebasing 6:cf43ad9da869 "G" (G)
rebasing 7:eef94f3b5f03 "H" (H tip)
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 10: b3d84c6666cf H
Jun Wu
rebase: initial support for multiple destinations...
r34007 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 | o 5: f585351a92f8 D
Jun Wu
rebase: initial support for multiple destinations...
r34007 |/
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 3: 26805aba1e60 C
Jun Wu
rebase: initial support for multiple destinations...
r34007 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 | o 9: f7c28a1a15e2 G
Jun Wu
rebase: initial support for multiple destinations...
r34007 |/
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 1: 112478962961 B
Jun Wu
rebase: initial support for multiple destinations...
r34007 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 | o 8: 02aa697facf7 F
Jun Wu
rebase: initial support for multiple destinations...
r34007 |/
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 | o 2: 7fb047a69f22 E
Jun Wu
rebase: initial support for multiple destinations...
r34007 |/
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 0: 426bada5c675 A
Jun Wu
rebase: initial support for multiple destinations...
r34007
Jun Wu
rebase: sort destmap topologically...
r34008 Source overlaps with destination:
Jun Wu
rebase: initial support for multiple destinations...
r34007
$ rebasewithdag -s 'B+C+D' -d 'map(SRC, "B:C,C:D")' <<'EOS'
> B C D
> \|/
> A
> EOS
Jun Wu
rebase: sort destmap topologically...
r34008 rebasing 2:dc0947a82db8 "C" (C)
Jun Wu
rebase: initial support for multiple destinations...
r34007 rebasing 1:112478962961 "B" (B)
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 5: 5fe9935d5222 B
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 4: 12d20731b9e0 C
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 3: b18e25de2cf5 D
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 0: 426bada5c675 A
Jun Wu
rebase: sort destmap topologically...
r34008
Detect cycles early:
$ rebasewithdag -r 'all()-Z' -d 'map(SRC, "A:B,B:C,C:D,D:B")' <<'EOS'
> A B C
> \|/
> | D
> |/
> Z
> EOS
abort: source and destination form a cycle
[255]
Detect source is ancestor of dest in runtime:
$ rebasewithdag -r 'C+B' -d 'map(SRC, "C:B,B:D")' -q <<'EOS'
> D
> |
> B C
> \|
> A
> EOS
abort: source is ancestor of destination
[255]
"Already rebased" fast path still works:
$ rebasewithdag -r 'all()' -d 'SRC^' <<'EOS'
> E F
> /| |
> B C D
> \|/
> A
> EOS
already rebased 1:112478962961 "B" (B)
already rebased 2:dc0947a82db8 "C" (C)
already rebased 3:b18e25de2cf5 "D" (D)
already rebased 4:312782b8f06e "E" (E)
already rebased 5:ad6717a6a58e "F" (F tip)
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 5: ad6717a6a58e F
Jun Wu
rebase: initial support for multiple destinations...
r34007 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 3: b18e25de2cf5 D
Jun Wu
rebase: initial support for multiple destinations...
r34007 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 | o 4: 312782b8f06e E
Jun Wu
rebase: sort destmap topologically...
r34008 | |\
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 +---o 2: dc0947a82db8 C
Jun Wu
rebase: initial support for multiple destinations...
r34007 | |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 | o 1: 112478962961 B
Jun Wu
rebase: initial support for multiple destinations...
r34007 |/
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 0: 426bada5c675 A
Jun Wu
rebase: initial support for multiple destinations...
r34007
Jun Wu
rebase: sort destmap topologically...
r34008 Massively rewrite the DAG:
$ rebasewithdag -r 'all()' -d 'map(SRC, "A:I,I:null,H:A,B:J,J:C,C:H,D:E,F:G,G:K,K:D,E:B")' <<'EOS'
> D G K
> | | |
> C F J
> | | |
> B E I
> \| |
> A H
> EOS
rebasing 4:701514e1408d "I" (I)
rebasing 0:426bada5c675 "A" (A)
rebasing 1:e7050b6e5048 "H" (H)
rebasing 5:26805aba1e60 "C" (C)
rebasing 7:cf89f86b485b "J" (J)
rebasing 2:112478962961 "B" (B)
rebasing 3:7fb047a69f22 "E" (E)
rebasing 8:f585351a92f8 "D" (D)
rebasing 10:ae41898d7875 "K" (K tip)
rebasing 9:711f53bbef0b "G" (G)
rebasing 6:64a8289d2492 "F" (F)
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 21: 3735afb3713a F
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 20: 07698142d7a7 G
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 19: 33aba52e7e72 K
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 18: 9fdae89dc5a1 D
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 17: 277dda9a65ee E
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 16: 9c74fd8657ad B
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 15: 6527eb0688bb J
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 14: e94d655b928d C
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 13: 620d6d349459 H
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 12: a569a116758f A
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 11: 2bf1302f5c18 I
Jun Wu
rebase: sort destmap topologically...
r34008
Resolve instability:
$ rebasewithdag <<'EOF' -r 'orphan()-obsolete()' -d 'max((successors(max(roots(ALLSRC) & ::SRC)^)-obsolete())::)'
> F2
> |
> J E E2
> | |/
> I2 I | E3
> \| |/
> H | G
> | | |
> B2 D F
> | |/ # rebase: B -> B2
> N C # amend: E -> E2
> | | # amend: E2 -> E3
> M B # rebase: F -> F2
> \| # amend: I -> I2
> A
> EOF
Martin von Zweigbergk
evolution: report new unstable changesets...
r35727 6 new orphan changesets
Jun Wu
rebase: sort destmap topologically...
r34008 rebasing 16:5c432343bf59 "J" (J tip)
rebasing 3:26805aba1e60 "C" (C)
rebasing 6:f585351a92f8 "D" (D)
rebasing 10:ffebc37c5d0b "E3" (E3)
rebasing 13:fb184bcfeee8 "F2" (F2)
rebasing 11:dc838ab4c0da "G" (G)
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 22: 174f63d574a8 G
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 21: c9d9fbe76705 F2
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 20: 0a03c2ede755 E3
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 19: 228d9d2541b1 D
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 18: cd856b400c95 C
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 17: 9148200c858c J
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 15: eb74780f5094 I2
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 12: 78309edd643f H
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 5: 4b4531bd8e1d B2
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 4: 337c285c272b N
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 2: 699bc4b6fa22 M
Jun Wu
rebase: sort destmap topologically...
r34008 |
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 o 0: 426bada5c675 A
Jun Wu
rebase: sort destmap topologically...
r34008