mercurial/revset.py
changeset 26569 2aeeef1dc9a5
parent 26538 5c9ec1cc671a
child 26571 a024e2db4553
--- a/mercurial/revset.py	Thu Oct 08 10:57:03 2015 -0700
+++ b/mercurial/revset.py	Mon Oct 05 01:46:47 2015 -0700
@@ -12,6 +12,7 @@
 
 from .i18n import _
 from . import (
+    destutil,
     encoding,
     error,
     hbisect,
@@ -532,46 +533,8 @@
     # # XXX: - taking rev as arguments,
     # # XXX: - bailing out in case of ambiguity vs returning all data.
     getargs(x, 0, 0, _("_updatedefaultdest takes no arguments"))
-    # Here is where we should consider bookmarks, divergent bookmarks,
-    # foreground changesets (successors), and tip of current branch;
-    # but currently we are only checking the branch tips.
-    node = None
-    wc = repo[None]
-    p1 = wc.p1()
-    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 util.Abort(_("branch %s not found") % wc.branch())
-
-    if p1.obsolete() and not p1.children():
-        # allow updating to successors
-        successors = obsmod.successorssets(repo, p1.node())
-
-        # behavior of certain cases is as follows,
-        #
-        # divergent changesets: update to highest rev, similar to what
-        #     is currently done when there are more than one head
-        #     (i.e. 'tip')
-        #
-        # replaced changesets: same as divergent except we know there
-        # is no conflict
-        #
-        # pruned changeset: no update is done; though, we could
-        #     consider updating to the first non-obsolete parent,
-        #     similar to what is current done for 'hg prune'
-
-        if successors:
-            # flatten the list here handles both divergent (len > 1)
-            # and the usual case (len = 1)
-            successors = [n for sub in successors for n in sub]
-
-            # get the max revision for the given successors set,
-            # i.e. the 'tip' of a set
-            node = repo.revs('max(%ln)', successors).first()
-    return subset & baseset([repo[node].rev()])
+    rev = destutil.destupdate(repo)
+    return subset & baseset([rev])
 
 def adds(repo, subset, x):
     """``adds(pattern)``