--- a/hgext/evolve.py Tue Oct 23 15:05:32 2012 +0200
+++ b/hgext/evolve.py Tue Oct 23 15:44:24 2012 +0200
@@ -511,7 +511,7 @@
# there is two kind of trouble not handled by core right now:
# - latecomer: (successors for public changeset)
-# - conflicting: (two changeset try to succeed to the same precursors)
+# - divergent: (two changeset try to succeed to the same precursors)
#
# This section add support for those two addition trouble
#
@@ -530,10 +530,10 @@
query = '%ld - obsolete() - public()'
return set(repo.revs(query, candidates))
-@cachefor('conflicting')
-def _computeconflictingset(repo):
+@cachefor('divergent')
+def _computedivergentset(repo):
"""the set of rev trying to obsolete public revision"""
- conflicting = set()
+ divergent = set()
obsstore = repo.obsstore
newermap = {}
for ctx in repo.set('(not public()) - obsolete()'):
@@ -545,10 +545,10 @@
newermap[prec] = newerversion(repo, prec)
newer = [n for n in newermap[prec] if n] # filter kill
if len(newer) > 1:
- conflicting.add(ctx.rev())
+ divergent.add(ctx.rev())
break
toprocess.update(obsstore.successors.get(prec, ()))
- return conflicting
+ return divergent
### changectx method
@@ -560,11 +560,12 @@
return ctx.rev() in getobscache(ctx._repo, 'latecomer')
@eh.addattr(context.changectx, 'conflicting')
-def conflicting(ctx):
- """is the changeset conflicting (Try to succeed to public change)"""
+@eh.addattr(context.changectx, 'divergent')
+def divergent(ctx):
+ """is the changeset divergent (Try to succeed to public change)"""
if ctx.node() is None:
return False
- return ctx.rev() in getobscache(ctx._repo, 'conflicting')
+ return ctx.rev() in getobscache(ctx._repo, 'divergent')
### revset symbol
@@ -578,24 +579,17 @@
return [r for r in subset if r in lates]
@eh.revset('conflicting')
-def revsetconflicting(repo, subset, x):
- """``conflicting()``
- Changesets marked as successors of a same changeset.
- """
- args = revset.getargs(x, 0, 0, 'conflicting takes no arguments')
- conf = getobscache(repo, 'conflicting')
- return [r for r in subset if r in conf]
-
@eh.revset('divergent')
def revsetdivergent(repo, subset, x):
"""``divergent()``
Changesets marked as successors of a same changeset.
"""
args = revset.getargs(x, 0, 0, 'divergent takes no arguments')
- conf = getobscache(repo, 'conflicting')
+ conf = getobscache(repo, 'divergent')
return [r for r in subset if r in conf]
+
### Discovery wrapping
@eh.wrapfunction(discovery, 'checkheads')
@@ -612,8 +606,8 @@
if ctx.latecomer():
raise util.Abort(_("push includes a latecomer changeset: %s!")
% ctx)
- if ctx.conflicting():
- raise util.Abort(_("push includes a conflicting changeset: %s!")
+ if ctx.divergent():
+ raise util.Abort(_("push includes a divergent changeset: %s!")
% ctx)
return orig(repo, remote, outgoing, *args, **kwargs)
@@ -722,15 +716,15 @@
def troubles(ctx):
"""Return a tuple listing all the troubles that affect a changeset
- Troubles may be "unstable", "latecomer" or "conflicting".
+ Troubles may be "unstable", "latecomer" or "divergent".
"""
troubles = []
if ctx.unstable():
troubles.append('unstable')
if ctx.latecomer():
troubles.append('latecomer')
- if ctx.conflicting():
- troubles.append('conflicting')
+ if ctx.divergent():
+ troubles.append('divergent')
return tuple(troubles)
### Troubled revset symbol
@@ -741,7 +735,7 @@
Changesets with troubles.
"""
_ = revset.getargs(x, 0, 0, 'troubled takes no arguments')
- return repo.revs('%ld and (unstable() + latecomer() + conflicting())',
+ return repo.revs('%ld and (unstable() + latecomer() + divergent())',
subset)
@@ -958,19 +952,19 @@
"""display warning is the command resulted in more instable changeset"""
priorunstables = len(repo.revs('unstable()'))
priorlatecomers = len(repo.revs('latecomer()'))
- priorconflictings = len(repo.revs('conflicting()'))
+ priordivergents = len(repo.revs('divergent()'))
ret = orig(ui, repo, *args, **kwargs)
# workaround phase stupidity
phases._filterunknown(ui, repo.changelog, repo._phasecache.phaseroots)
newunstables = len(repo.revs('unstable()')) - priorunstables
newlatecomers = len(repo.revs('latecomer()')) - priorlatecomers
- newconflictings = len(repo.revs('conflicting()')) - priorconflictings
+ newdivergents = len(repo.revs('divergent()')) - priordivergents
if newunstables > 0:
ui.warn(_('%i new unstable changesets\n') % newunstables)
if newlatecomers > 0:
ui.warn(_('%i new latecomer changesets\n') % newlatecomers)
- if newconflictings > 0:
- ui.warn(_('%i new conflicting changesets\n') % newconflictings)
+ if newdivergents > 0:
+ ui.warn(_('%i new divergent changesets\n') % newdivergents)
return ret
@eh.reposetup
@@ -1010,10 +1004,10 @@
ret = orig(ui, repo, *args, **kwargs)
nbunstable = len(getobscache(repo, 'unstable'))
nblatecomer = len(getobscache(repo, 'latecomer'))
- nbconflicting = len(getobscache(repo, 'unstable'))
+ nbdivergent = len(getobscache(repo, 'unstable'))
write('unstable: %i changesets\n', nbunstable)
write('latecomer: %i changesets\n', nblatecomer)
- write('conflicting: %i changesets\n', nbconflicting)
+ write('divergent: %i changesets\n', nbdivergent)
return ret
@@ -1367,7 +1361,7 @@
- rebase unstable changeset to make it stable again,
- create proper diff from latecomer changeset,
- - merge conflicting changeset.
+ - merge divergent changeset.
By default, take the first troubles changeset that looks relevant.
@@ -1377,7 +1371,7 @@
working directory parent revision or one of its descendants and rebase
it.
- - For conflicting this mean "." if applicable.
+ - For divergent this mean "." if applicable.
With --any, evolve pick any troubled changeset to solve
@@ -1410,8 +1404,8 @@
return _solveunstable(ui, repo, tr, opts['dry_run'])
elif 'latecomer' in troubles:
return _solvelatecomer(ui, repo, tr, opts['dry_run'])
- elif 'conflicting' in troubles:
- return _solveconflicting(ui, repo, tr, opts['dry_run'])
+ elif 'divergent' in troubles:
+ return _solvedivergent(ui, repo, tr, opts['dry_run'])
else:
assert False # WHAT? unknown troubles
@@ -1420,14 +1414,14 @@
tr = _stabilizableunstable(repo, repo['.'])
if tr is None:
wdp = repo['.']
- if 'conflicting' in wdp.troubles():
+ if 'divergent' in wdp.troubles():
tr = wdp
if tr is None and pickany:
troubled = list(repo.set('unstable()'))
if not troubled:
troubled = list(repo.set('latecomer()'))
if not troubled:
- troubled = list(repo.set('conflicting()'))
+ troubled = list(repo.set('divergent()'))
if troubled:
tr = troubled[0]
@@ -1600,22 +1594,22 @@
finally:
wlock.release()
-def _solveconflicting(ui, repo, conflicting, dryrun=False):
- base, others = conflictingdata(conflicting)
+def _solvedivergent(ui, repo, divergent, dryrun=False):
+ base, others = divergentdata(divergent)
if len(others) > 1:
raise util.Abort("We do not handle split yet")
other = others[0]
- if conflicting.phase() <= phases.public:
+ if divergent.phase() <= phases.public:
raise util.Abort("We can't resolve this conflict from the public side")
if len(other.parents()) > 1:
- raise util.Abort("conflicting changeset can't be a merge (yet)")
- if other.p1() not in conflicting.parents():
+ raise util.Abort("divergent changeset can't be a merge (yet)")
+ if other.p1() not in divergent.parents():
raise util.Abort("parents are not common (not handled yet)")
displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate})
ui.status(_('merge:'))
if not ui.quiet:
- displayer.show(conflicting)
+ displayer.show(divergent)
ui.status(_('with: '))
if not ui.quiet:
displayer.show(other)
@@ -1623,23 +1617,23 @@
if not ui.quiet:
displayer.show(base)
if dryrun:
- ui.write('hg update -c %s &&\n' % conflicting)
+ ui.write('hg update -c %s &&\n' % divergent)
ui.write('hg merge %s &&\n' % other)
ui.write('hg commit -m "auto merge resolving conflict between '
- '%s and %s"&&\n' % (conflicting, other))
+ '%s and %s"&&\n' % (divergent, other))
ui.write('hg up -C %s &&\n' % base)
ui.write('hg revert --all --rev tip &&\n')
ui.write('hg commit -m "`hg log -r %s --template={desc}`";\n'
- % conflicting)
+ % divergent)
return
wlock = lock = None
try:
wlock = repo.wlock()
lock = repo.lock()
- if conflicting not in repo[None].parents():
+ if divergent not in repo[None].parents():
repo.ui.status(_('updating to "local" conflict\n'))
- hg.update(repo, conflicting.rev())
- repo.ui.note(_('merging conflicting changeset\n'))
+ hg.update(repo, divergent.rev())
+ repo.ui.note(_('merging divergent changeset\n'))
stats = merge.update(repo,
other.node(),
branchmerge=True,
@@ -1660,13 +1654,13 @@
/!\ * hg ci -m "same message as the amended changeset" => new cset Y
/!\ * hg kill -n Y W Z
""")
- tr = repo.transaction('stabilize-conflicting')
+ tr = repo.transaction('stabilize-divergent')
try:
- repo.dirstate.setparents(conflicting.node(), node.nullid)
+ repo.dirstate.setparents(divergent.node(), node.nullid)
oldlen = len(repo)
amend(ui, repo)
if oldlen == len(repo):
- new = conflicting
+ new = divergent
# no changes
else:
new = repo['.']
@@ -1679,7 +1673,7 @@
lockmod.release(lock, wlock)
-def conflictingdata(ctx):
+def divergentdata(ctx):
"""return base, other part of a conflict
This only return the first one.