##// END OF EJS Templates
httppeer: expose API descriptor on httpv2peer...
httppeer: expose API descriptor on httpv2peer The API descriptor in wireprotov2 is much more expressive than space-delimited tokens and it will be difficult to define methods to query it in all of the ways we'll want to query it. So let's just declare defeat and expose the API descriptor on the peer instance. As part of this, we define a new interface for version 2 peers, fulfilling a TODO in the process. Differential Revision: https://phab.mercurial-scm.org/D4974

File last commit:

r39743:5abc47d4 default
r40207:dac438b7 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() {
Matt Harbison
tests: quote PYTHON usage...
r39743 > N=`"$PYTHON" -c "print($N+1)"`
Jun Wu
rebase: initial support for multiple destinations...
r34007 > 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