# HG changeset patch # User Pierre-Yves David # Date 1457874474 0 # Node ID 077c40f206d10100bacb8a2c357d23d43972d031 # Parent e846b8f402d0564361786fdc7b6e4c041c5e31a4 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. diff -r e846b8f402d0 -r 077c40f206d1 src/topic/destination.py --- 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""" diff -r e846b8f402d0 -r 077c40f206d1 tests/test-topic-dest.t --- 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