[PATCH evolve-ext:stable] evolve: don't try to relocate a node on top of itself
Olle Lundberg
olle.lundberg at gmail.com
Tue Mar 25 18:06:42 CDT 2014
# HG changeset patch
# User Olle Lundberg <geek at nerd.sh>
# Date 1395788513 -3600
# Wed Mar 26 00:01:53 2014 +0100
# Branch stable
# Node ID 5a2abe5bae7ae4f439d4a078b7891e3bcf6bcc48
# Parent 6a67606e1c3456c603707fe57e8404af5e33a1bd
evolve: don't try to relocate a node on top of itself
This fixes problems with "no support for evolution merge changes yet"
on a linear repo, where evolve thinks that a node is supposed to be
relocated on top of itself.
diff --git a/hgext/evolve.py b/hgext/evolve.py
--- a/hgext/evolve.py
+++ b/hgext/evolve.py
@@ -1007,36 +1007,39 @@
targets = newer[0]
assert targets
if len(targets) > 1:
raise util.Abort(_("does not handle split parents yet\n"))
return 2
- target = targets[0]
- displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate})
- target = repo[target]
- repo.ui.status(_('move:'))
- if not ui.quiet:
- displayer.show(orig)
- repo.ui.status(_('atop:'))
- if not ui.quiet:
- displayer.show(target)
- if progresscb: progresscb()
- todo = 'hg rebase -r %s -d %s\n' % (orig, target)
- if dryrun:
- repo.ui.write(todo)
- else:
- repo.ui.note(todo)
- if progresscb: progresscb()
- lock = repo.lock()
- try:
- relocate(repo, orig, target)
- except MergeFailure:
- repo.opener.write('graftstate', orig.hex() + '\n')
- repo.ui.write_err(_('evolve failed!\n'))
- repo.ui.write_err(_('fix conflict and run "hg evolve --continue"\n'))
- raise
- finally:
- lock.release()
+ target = repo[targets[0]]
+ # Target revision is same as original revision, it makes no sense to try
+ # to relocate a node on top of itself.
+ if target.rev() != orig.rev()
+ displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate})
+ repo.ui.status(_('move:'))
+ if not ui.quiet:
+ displayer.show(orig)
+ repo.ui.status(_('atop:'))
+ if not ui.quiet:
+ displayer.show(target)
+ if progresscb:
+ progresscb()
+ todo = 'hg rebase -r %s -d %s\n' % (orig, target)
+ if dryrun:
+ repo.ui.write(todo)
+ else:
+ repo.ui.note(todo)
+ if progresscb: progresscb()
+ lock = repo.lock()
+ try:
+ relocate(repo, orig, target)
+ except MergeFailure:
+ repo.opener.write('graftstate', orig.hex() + '\n')
+ repo.ui.write_err(_('evolve failed!\n'))
+ repo.ui.write_err(_('fix conflict and run "hg evolve --continue"\n'))
+ raise
+ finally:
+ lock.release()
def _solvebumped(ui, repo, bumped, dryrun=False, progresscb=None):
"""Stabilize a bumped changeset"""
# For now we deny bumped merge
if len(bumped.parents()) > 1:
More information about the Mercurial-devel
mailing list