Mercurial > hg > mutable-history
changeset 137:bbc653876876
fix evolve test
author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
---|---|
date | Fri, 17 Feb 2012 19:01:25 +0100 |
parents | 915728be8afd |
children | 605ed785268a |
files | hgext/evolve.py tests/test-evolution.t tests/test-evolve.t |
diffstat | 2 files changed, 74 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/evolve.py +++ b/hgext/evolve.py @@ -156,20 +156,34 @@ cmdtable = {} command = cmdutil.command(cmdtable) -@command('^evolve', +@command('^stabilize', [], '') -def evolve(ui, repo): +def stabilize(ui, repo): """suggest the next evolution step""" obsolete = extensions.find('obsolete') - next = min(obsolete.unstables(repo)) + unstable = repo.revs('unstable()') + if not unstable: + ui.write_err(_('no unstable changeset\n')) + return 1 + next = unstable[0] obs = repo[next].parents()[0] if not obs.obsolete(): obs = next.parents()[1] assert obs.obsolete() newer = obsolete.newerversion(repo, obs.node()) - target = newer[-1] - repo.ui.status('hg relocate --rev %s %s\n' % (repo[next], repo[target])) + if len(newer) > 1: + ui.write_err(_("conflict rewriting. can't choose destination\n")) + return 2 + targets = newer[0] + if not targets: + ui.write_err(_("does not handle kill parent yet\n")) + return 2 + if len(targets) > 1: + ui.write_err(_("does not handle splitted parent yet\n")) + return 2 + target = targets[0] + repo.ui.status('hg rebase -Dr %s -d %s\n' % (repo[next], repo[target])) shorttemplate = '[{rev}] {desc|firstline}\n' @@ -355,15 +369,25 @@ lock.release() def commitwrapper(orig, ui, repo, *arg, **kwargs): - obsoleted = kwargs.get('obsolete', []) - if obsoleted: - obsoleted = repo.set('%lr', obsoleted) - result = orig(ui, repo, *arg, **kwargs) - if not result: # commit successed - new = repo['-1'] - for old in obsoleted: - repo.addobsolete(new.node(), old.node()) - return result + lock = repo.lock() + try: + obsoleted = kwargs.get('obsolete', []) + if obsoleted: + obsoleted = repo.set('%lr', obsoleted) + result = orig(ui, repo, *arg, **kwargs) + if not result: # commit successed + new = repo['-1'] + oldbookmarks = [] + for old in obsoleted: + oldbookmarks.extend(repo.nodebookmarks(old.node())) + repo.addobsolete(new.node(), old.node()) + for book in oldbookmarks: + repo._bookmarks[book] = new.node() + if oldbookmarks: + bookmarks.write(repo) + return result + finally: + lock.release() def graftwrapper(orig, ui, repo, *revs, **kwargs): lock = repo.lock()
rename from tests/test-evolution.t rename to tests/test-evolve.t --- a/tests/test-evolution.t +++ b/tests/test-evolve.t @@ -16,7 +16,7 @@ > hgext.graphlog= > EOF $ echo "obsolete=$(echo $(dirname $TESTDIR))/hgext/obsolete.py" >> $HGRCPATH - $ echo "evolution=$(echo $(dirname $TESTDIR))/hgext/evolution.py" >> $HGRCPATH + $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext/evolve.py" >> $HGRCPATH $ mkcommit() { > echo "$1" > "$1" > hg add "$1" @@ -43,12 +43,12 @@ created new head $ mkcommit f $ hg qlog - 5 - e44648563c73 add f (1) - 4 - fbb94e3a0ecf add e (1) - 3 - 47d2a3944de8 add d (1) - 2 - 4538525df7e2 add c (1) - 1 - 7c3bad9141dc add b (0) - 0 - 1f0dee641bb7 add a (0) + 5 - e44648563c73 add f (draft) + 4 - fbb94e3a0ecf add e (draft) + 3 - 47d2a3944de8 add d (draft) + 2 - 4538525df7e2 add c (draft) + 1 - 7c3bad9141dc add b (public) + 0 - 1f0dee641bb7 add a (public) test simple kill @@ -56,11 +56,11 @@ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved working directory now at fbb94e3a0ecf $ hg qlog - 4 - fbb94e3a0ecf add e (1) - 3 - 47d2a3944de8 add d (1) - 2 - 4538525df7e2 add c (1) - 1 - 7c3bad9141dc add b (0) - 0 - 1f0dee641bb7 add a (0) + 4 - fbb94e3a0ecf add e (draft) + 3 - 47d2a3944de8 add d (draft) + 2 - 4538525df7e2 add c (draft) + 1 - 7c3bad9141dc add b (public) + 0 - 1f0dee641bb7 add a (public) test multiple kill @@ -68,9 +68,9 @@ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved working directory now at 7c3bad9141dc $ hg qlog - 2 - 4538525df7e2 add c (1) - 1 - 7c3bad9141dc add b (0) - 0 - 1f0dee641bb7 add a (0) + 2 - 4538525df7e2 add c (draft) + 1 - 7c3bad9141dc add b (public) + 0 - 1f0dee641bb7 add a (public) $ cd .. ########################## @@ -207,11 +207,22 @@ 4 feature-B: another feature - test 1 : a nifty feature - test 0 : base - test - $ hg evolve - hg relocate --rev f8111a076f09 23409eba69a0 - $ hg up feature-B -q #prevent feature-A bookmark to move grml - $ hg relocate -r 4 6 --traceback + $ hg stabilize + hg rebase -Dr f8111a076f09 -d 23409eba69a0 + $ hg up null -q #prevent feature-A bookmark to move # XXX grml + $ hg bookmark + feature-A 6:23409eba69a0 + feature-B 4:f8111a076f09 + $ hg up 6 + 3 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg bookmark + feature-A 6:23409eba69a0 + feature-B 4:f8111a076f09 + $ hg bookmark -if feature-A + $ hg graft -O 4 + grafting revision 4 merging main-file-1 + $ hg bookmark -ifr 7 feature-B # XXX not bookmark support in rebase --keep :-/ $ hg log 7 feature-B: another feature - test 6 feature-A: a nifty feature - test @@ -220,10 +231,14 @@ Test commit -o options $ hg up 6 + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg revert -r 7 --all + adding file-from-B + reverting main-file-1 $ sed -i'' -e s/Zwei/deux/ main-file-1 - $ hg commit -m 'Feature B' -o 7 + $ hg commit -m 'another feature that rox' -o 7 + created new head $ hg log - 8 feature-B: another feature - test + 8 feature-B: another feature that rox - test 6 feature-A: a nifty feature - test 0 : base - test