fix evolve test
diff --git a/hgext/evolve.py b/hgext/evolve.py
--- a/hgext/evolve.py
+++ b/hgext/evolve.py
@@ -156,20 +156,34 @@ def relocate(repo, rev, dest):
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 @@ def amend(ui, repo, *pats, **opts):
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()
diff --git a/tests/test-evolution.t b/tests/test-evolve.t
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 @@ various init
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 @@ test simple kill
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 @@ test multiple kill
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 @@ changeset plus the updating changeset ar
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 @@ changeset plus the updating changeset ar
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