--- a/hgext/rebase.py Sat Apr 30 09:26:47 2016 -0700
+++ b/hgext/rebase.py Sat Apr 30 18:41:08 2016 +0200
@@ -69,12 +69,12 @@
c(ctx, extra)
return extrafn
-def _destrebase(repo, sourceset):
+def _destrebase(repo, sourceset, destspace=None):
"""small wrapper around destmerge to pass the right extra args
Please wrap destutil.destmerge instead."""
return destutil.destmerge(repo, action='rebase', sourceset=sourceset,
- onheadcheck=False)
+ onheadcheck=False, destspace=destspace)
revsetpredicate = registrar.revsetpredicate()
@@ -222,6 +222,9 @@
srcf = opts.get('source', None)
basef = opts.get('base', None)
revf = opts.get('rev', [])
+ # search default destination in this space
+ # used in the 'hg pull --rebase' case, see issue 5214.
+ destspace = opts.get('_destspace')
contf = opts.get('continue')
abortf = opts.get('abort')
collapsef = opts.get('collapse', False)
@@ -296,7 +299,8 @@
_checkobsrebase(repo, ui, rebaseobsrevs, rebasesetrevs,
rebaseobsskipped)
else:
- dest, rebaseset = _definesets(ui, repo, destf, srcf, basef, revf)
+ dest, rebaseset = _definesets(ui, repo, destf, srcf, basef, revf,
+ destspace=destspace)
if dest is None:
return _nothingtorebase()
@@ -525,9 +529,12 @@
finally:
release(lock, wlock)
-def _definesets(ui, repo, destf=None, srcf=None, basef=None, revf=[]):
+def _definesets(ui, repo, destf=None, srcf=None, basef=None, revf=[],
+ destspace=None):
"""use revisions argument to define destination and rebase set
"""
+ # destspace is here to work around issues with `hg pull --rebase` see
+ # issue5214 for details
if srcf and basef:
raise error.Abort(_('cannot specify both a source and a base'))
if revf and basef:
@@ -560,7 +567,7 @@
"can't compute rebase set\n"))
return None, None
if not destf:
- dest = repo[_destrebase(repo, base)]
+ dest = repo[_destrebase(repo, base, destspace=destspace)]
destf = str(dest)
commonanc = repo.revs('ancestor(%ld, %d)', base, dest).first()
@@ -598,7 +605,7 @@
return None, None
if not destf:
- dest = repo[_destrebase(repo, rebaseset)]
+ dest = repo[_destrebase(repo, rebaseset, destspace=destspace)]
destf = str(dest)
return dest, rebaseset