--- 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)