changeset 17212:246131d670c2

checkheads: extract bookmark computation from the branch loop No branch specific data are used in the computation of the bookmarked heads. We can only compute it once.
author Pierre-Yves David <pierre-yves.david@logilab.fr>
date Tue, 17 Jul 2012 18:14:16 +0200
parents 4f321eecbf8d
children 7eb5aa1f83fd
files mercurial/discovery.py
diffstat 1 files changed, 13 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/discovery.py	Tue Jul 17 16:30:42 2012 +0200
+++ b/mercurial/discovery.py	Tue Jul 17 18:14:16 2012 +0200
@@ -249,12 +249,22 @@
                          hint=_("use 'hg push --new-branch' to create"
                                 " new remote branches"))
 
-    # 2. Check for new heads.
+    # 2 compute newly pushed bookmarks. We
+    # we don't warned about bookmarked heads.
+    localbookmarks = repo._bookmarks
+    remotebookmarks = remote.listkeys('bookmarks')
+    bookmarkedheads = set()
+    for bm in localbookmarks:
+        rnode = remotebookmarks.get(bm)
+        if rnode and rnode in repo:
+            lctx, rctx = repo[bm], repo[rnode]
+            if rctx == lctx.ancestor(rctx):
+                bookmarkedheads.add(lctx.node())
+
+    # 3. Check for new heads.
     # If there are more heads after the push than before, a suitable
     # error message, depending on unsynced status, is displayed.
     error = None
-    localbookmarks = repo._bookmarks
-
     unsynced = False
     for branch, heads in headssum.iteritems():
         if heads[0] is None:
@@ -267,14 +277,6 @@
         newhs = set(heads[1])
         dhs = None
         if len(newhs) > len(oldhs):
-            remotebookmarks = remote.listkeys('bookmarks')
-            bookmarkedheads = set()
-            for bm in localbookmarks:
-                rnode = remotebookmarks.get(bm)
-                if rnode and rnode in repo:
-                    lctx, rctx = repo[bm], repo[rnode]
-                    if rctx == lctx.ancestor(rctx):
-                        bookmarkedheads.add(lctx.node())
             # strip updates to existing remote heads from the new heads list
             dhs = list(newhs - bookmarkedheads - oldhs)
         if dhs: