mercurial/hg.py
changeset 7050 6788608627c4
parent 7048 25961e53a07f
parent 7045 f82938c87b92
child 7280 810ca383da9c
--- a/mercurial/hg.py	Wed Sep 24 13:22:11 2008 +0200
+++ b/mercurial/hg.py	Wed Sep 24 13:50:29 2008 +0200
@@ -20,10 +20,11 @@
     '''parse url#branch, returning url, branch + revs'''
 
     if '#' not in url:
-        return url, (revs or None), None
+        return url, (revs or None), revs and revs[-1] or None
 
-    url, rev = url.split('#', 1)
-    return url, revs + [rev], rev
+    url, branch = url.split('#', 1)
+    checkout = revs and revs[-1] or branch
+    return url, revs + [branch], checkout
 
 schemes = {
     'bundle': bundlerepo,
@@ -120,7 +121,7 @@
     else:
         src_repo = source
         origsource = source = src_repo.url()
-        checkout = None
+        checkout = rev and rev[-1] or None
 
     if dest is None:
         dest = defaultdest(source)
@@ -231,12 +232,13 @@
                 dest_repo.ui.status(_("updating working directory\n"))
                 if update is not True:
                     checkout = update
-                elif not checkout:
+                for test in (checkout, 'default', 'tip'):
                     try:
-                        checkout = dest_repo.lookup("default")
+                        uprev = dest_repo.lookup(test)
+                        break
                     except:
-                        checkout = dest_repo.changelog.tip()
-                _update(dest_repo, checkout)
+                        continue
+                _update(dest_repo, uprev)
 
         return src_repo, dest_repo
     finally: