[PATCH 1 of 3] clone to master bookmark if available

arne_bab at web.de arne_bab at web.de
Thu Nov 3 07:11:22 CDT 2011


# HG changeset patch
# User Arne Babenhauserheide <bab at draketo.de>
# Date 1317799793 -7200
# Node ID 5b239c772bf0def200acfa24b5529dcf447af307
# Parent  6ab8b17adc03c423b53fb50951058915edc4ca60
clone to master bookmark if available.

diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -348,12 +348,38 @@ def clone(ui, peeropts, source, dest=Non
 
             destrepo.ui.setconfig('paths', 'default', abspath)
 
+            # clone all bookmarks
+            if destrepo.local() and srcrepo.capable("pushkey"):
+                rb = srcrepo.listkeys('bookmarks')
+                for k, n in rb.iteritems():
+                    try:
+                        m = destrepo.lookup(n)
+                        destrepo._bookmarks[k] = m
+                    except error.RepoLookupError:
+                        pass
+                if rb:
+                    bookmarks.write(destrepo)
+                elif srcrepo.local() and destrepo.capable("pushkey"):
+                    for k, n in srcrepo._bookmarks.iteritems():
+                        destrepo.pushkey('bookmarks', k, '', hex(n))
+
+            # check for a master bookmark on the default branch
+            try:
+                # make sure, master is a bookmark
+                master = destrepo._bookmarks['master']
+                m = destrepo['master']
+                if not m.branch() == 'default':
+                    master = None
+                print "master:", master, m
+            except: master = None
+
             if update:
                 if update is not True:
                     checkout = update
                     if srcrepo.local():
                         checkout = srcrepo.lookup(update)
-                for test in (checkout, 'default', 'tip'):
+
+                for test in (checkout, master, 'default', 'tip'):
                     if test is None:
                         continue
                     try:
@@ -365,21 +391,6 @@ def clone(ui, peeropts, source, dest=Non
                 destrepo.ui.status(_("updating to branch %s\n") % bn)
                 _update(destrepo, uprev)
 
-        # clone all bookmarks
-        if destrepo.local() and srcrepo.capable("pushkey"):
-            rb = srcrepo.listkeys('bookmarks')
-            for k, n in rb.iteritems():
-                try:
-                    m = destrepo.lookup(n)
-                    destrepo._bookmarks[k] = m
-                except error.RepoLookupError:
-                    pass
-            if rb:
-                bookmarks.write(destrepo)
-        elif srcrepo.local() and destrepo.capable("pushkey"):
-            for k, n in srcrepo._bookmarks.iteritems():
-                destrepo.pushkey('bookmarks', k, '', hex(n))
-
         return srcrepo, destrepo
     finally:
         release(srclock, destlock)


More information about the Mercurial-devel mailing list