mercurial/localrepo.py
branchstable
changeset 19515 14c91b18d798
parent 19291 93635f69c93b
child 19569 00140039bd8f
child 19846 9789670992d6
--- a/mercurial/localrepo.py	Sun Jul 28 15:02:32 2013 -0500
+++ b/mercurial/localrepo.py	Fri Jul 26 13:34:51 2013 -0700
@@ -1951,6 +1951,9 @@
 
         self.ui.debug("checking for updated bookmarks\n")
         rb = remote.listkeys('bookmarks')
+        revnums = map(unfi.changelog.rev, revs or [])
+        ancestors = [
+            a for a in unfi.changelog.ancestors(revnums, inclusive=True)]
         for k in rb.keys():
             if k in unfi._bookmarks:
                 nr, nl = rb[k], hex(self._bookmarks[k])
@@ -1958,6 +1961,8 @@
                     cr = unfi[nr]
                     cl = unfi[nl]
                     if bookmarks.validdest(unfi, cr, cl):
+                        if ancestors and cl.rev() not in ancestors:
+                            continue
                         r = remote.pushkey('bookmarks', k, nr, nl)
                         if r:
                             self.ui.status(_("updating bookmark %s\n") % k)