diff -r 23eed7d423b4 -r 47278970fc8c mercurial/merge.py --- a/mercurial/merge.py Wed Feb 08 22:12:27 2017 -0800 +++ b/mercurial/merge.py Wed Feb 08 14:49:37 2017 -0800 @@ -1556,7 +1556,7 @@ foreground = obsolete.foreground(repo, [p1.node()]) # note: the variable contains a random identifier if repo[node].node() in foreground: - pas = [p1] # allow updating to successors + pass # allow updating to successors elif dirty: msg = _("uncommitted changes") if onode is None: @@ -1572,15 +1572,17 @@ raise error.Abort(msg, hint=hint) else: # Allow jumping branches if clean and specific rev given - pas = [p1] + pass + + if overwrite: + pas = [wc] + elif not branchmerge: + pas = [p1] # deprecated config: merge.followcopies followcopies = repo.ui.configbool('merge', 'followcopies', True) if overwrite: - pas = [wc] followcopies = False - elif pas == [p2]: # backwards - pas = [p1] elif not pas[0]: followcopies = False if not branchmerge and not wc.dirty(missing=True):