diff -r 7fc759c0c430 -r bde739aced83 mercurial/destutil.py --- a/mercurial/destutil.py Thu Oct 15 02:27:30 2015 +0100 +++ b/mercurial/destutil.py Thu Oct 15 02:33:09 2015 +0100 @@ -85,6 +85,21 @@ activemark = node return node, movemark, activemark +def _destupdatebranch(repo, clean, check): + """decide on an update destination from current branch""" + wc = repo[None] + movemark = node = None + try: + node = repo.branchtip(wc.branch()) + if bookmarks.isactivewdirparent(repo): + movemark = repo['.'].node() + except error.RepoLookupError: + if wc.branch() == 'default': # no default branch! + node = repo.lookup('tip') # update to tip + else: + raise error.Abort(_("branch %s not found") % wc.branch()) + return node, movemark, None + def destupdate(repo, clean=False, check=False): """destination for bare update operation @@ -96,22 +111,13 @@ - activemark: a bookmark to activate at the end of the update. """ node = None - wc = repo[None] movemark = activemark = None node, movemark, activemark = _destupdateobs(repo, clean, check) if node is None: node, movemark, activemark = _destupdatebook(repo, clean, check) - if node is None: - if node is None: - try: - node = repo.branchtip(wc.branch()) - except error.RepoLookupError: - if wc.branch() == 'default': # no default branch! - node = repo.lookup('tip') # update to tip - else: - raise error.Abort(_("branch %s not found") % wc.branch()) + node, movemark, activemark = _destupdatebranch(repo, clean, check) rev = repo[node].rev() _destupdatevalidate(repo, rev, clean, check)