diff --git a/mercurial/destutil.py b/mercurial/destutil.py index 7fc759c0c430f958ae593868b50eb78033fa7a76_bWVyY3VyaWFsL2Rlc3R1dGlsLnB5..bde739aced83f5b209e974e6878a69a0e349cfad_bWVyY3VyaWFsL2Rlc3R1dGlsLnB5 100644 --- a/mercurial/destutil.py +++ b/mercurial/destutil.py @@ -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,9 +111,8 @@ - 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) @@ -100,7 +114,6 @@ 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: @@ -106,12 +119,5 @@ 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)