Mercurial > evolve
changeset 1891:077c40f206d1
rebase: test default rebase destination behavior
In future mercurial 3.8, rebase and merge share the same destination logic. So
if merge work, rebase should work as well. However, we double test it to be
sure.
Especially, in 3.7 the logic is not shared so we have to introduce an extra hack
to share it in this case.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Sun, 13 Mar 2016 13:07:54 +0000 |
parents | e846b8f402d0 |
children | b1fadc089b82 |
files | src/topic/destination.py tests/test-topic-dest.t |
diffstat | 2 files changed, 127 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- a/src/topic/destination.py Sun Mar 13 23:44:04 2016 +0000 +++ b/src/topic/destination.py Sun Mar 13 13:07:54 2016 +0000 @@ -45,6 +45,11 @@ def setupdest(): if util.safehasattr(destutil, '_destmergebranch'): extensions.wrapfunction(destutil, '_destmergebranch', _destmergebranch) + rebase = extensions.find('rebase') + if (util.safehasattr(rebase, '_destrebase') + # logic not shared with merge yet < hg-3.8 + and not util.safehasattr(rebase, '_definesets')): + extensions.wrapfunction(rebase, '_destrebase', _destmergebranch) def ngtip(repo, branch, all=False): """tip new generation"""
--- a/tests/test-topic-dest.t Sun Mar 13 23:44:04 2016 +0000 +++ b/tests/test-topic-dest.t Sun Mar 13 13:07:54 2016 +0000 @@ -96,25 +96,23 @@ $ hg log -r 'default' 6 () c_epsilon -merge destination -================= +rebase destination +================== + +rebase on branch ngtip - $ hg up 'ngtip(default)' - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg up default - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ echo zeta >> zeta - $ hg add zeta - $ hg ci -m "c_zeta" + $ hg up elephant + switching to topic elephant + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg rebase + rebasing 4:cb7ae72f4a80 "babar" $ hg log -G - @ 7 () c_zeta + @ 7 (elephant) babar | o 6 () c_epsilon | | o 5 (monkey) zephir | | - +---o 4 (elephant) babar - | | o | 3 () c_delta | | o | 2 () c_gamma @@ -123,16 +121,111 @@ | o 0 () c_alpha + $ hg up monkey + switching to topic monkey + 1 files updated, 0 files merged, 3 files removed, 0 files unresolved + $ hg rebase + rebasing 5:d832ddc604ec "zephir" + $ hg log -G + @ 8 (monkey) zephir + | + | o 7 (elephant) babar + |/ + o 6 () c_epsilon + | + o 3 () c_delta + | + o 2 () c_gamma + | + o 1 () c_beta + | + o 0 () c_alpha + + +Rebase on other topic heads if any + + $ hg up 'desc(c_delta)' + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ echo "General Huc" >> monkeyville + $ hg add monkeyville + $ hg ci -t monkey -m Huc + created new head + $ hg log -G + @ 9 (monkey) Huc + | + | o 8 (monkey) zephir + | | + | | o 7 (elephant) babar + | |/ + | o 6 () c_epsilon + |/ + o 3 () c_delta + | + o 2 () c_gamma + | + o 1 () c_beta + | + o 0 () c_alpha + + $ hg rebase + rebasing 9:d79a104e2902 "Huc" (tip) + $ hg log -G + @ 10 (monkey) Huc + | + o 8 (monkey) zephir + | + | o 7 (elephant) babar + |/ + o 6 () c_epsilon + | + o 3 () c_delta + | + o 2 () c_gamma + | + o 1 () c_beta + | + o 0 () c_alpha + + +merge destination +================= + + $ hg up 'ngtip(default)' + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ hg up default + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ echo zeta >> zeta + $ hg add zeta + $ hg ci -m "c_zeta" + $ hg log -G + @ 11 () c_zeta + | + | o 10 (monkey) Huc + | | + | o 8 (monkey) zephir + |/ + | o 7 (elephant) babar + |/ + o 6 () c_epsilon + | + o 3 () c_delta + | + o 2 () c_gamma + | + o 1 () c_beta + | + o 0 () c_alpha + $ hg up elephant switching to topic elephant - 1 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ hg rebase -d 7 # make sure tip is elsewhere - rebasing 4:cb7ae72f4a80 "babar" + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg rebase -d 'desc(c_zeta)' # make sure tip is elsewhere + rebasing 7:8d0b77140b05 "babar" $ hg up monkey switching to topic monkey - 1 files updated, 0 files merged, 4 files removed, 0 files unresolved + 2 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg merge - 4 files updated, 0 files merged, 0 files removed, 0 files unresolved + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg topic elephant @@ -142,20 +235,22 @@ elephant * monkey $ hg log -G - @ 9 (monkey) merge with default + @ 13 (monkey) merge with default |\ - | | o 8 (elephant) babar + | | o 12 (elephant) babar | |/ - | o 7 () c_zeta + | o 11 () c_zeta + | | + o | 10 (monkey) Huc | | - | o 6 () c_epsilon - | | - o | 5 (monkey) zephir - | | - | o 3 () c_delta - | | - | o 2 () c_gamma + o | 8 (monkey) zephir |/ + o 6 () c_epsilon + | + o 3 () c_delta + | + o 2 () c_gamma + | o 1 () c_beta | o 0 () c_alpha