bookmarks: move update into core
authorMatt Mackall <mpm@selenic.com>
Thu, 10 Feb 2011 13:46:27 -0600
changeset 13352 f9cd37fca5ba
parent 13351 6c5368cd2df9
child 13353 689bf32b3bbd
bookmarks: move update into core
hgext/bookmarks.py
mercurial/bookmarks.py
--- a/hgext/bookmarks.py	Thu Feb 10 13:46:27 2011 -0600
+++ b/hgext/bookmarks.py	Thu Feb 10 13:46:27 2011 -0600
@@ -164,7 +164,6 @@
         return
 
     class bookmark_repo(repo.__class__):
-
         @util.propertycache
         def _bookmarks(self):
             return bookmarks.read(self)
@@ -187,22 +186,6 @@
                 key = self._bookmarks[key]
             return super(bookmark_repo, self).lookup(key)
 
-        def _bookmarksupdate(self, parents, node):
-            marks = self._bookmarks
-            update = False
-            if ui.configbool('bookmarks', 'track.current'):
-                mark = self._bookmarkcurrent
-                if mark and marks[mark] in parents:
-                    marks[mark] = node
-                    update = True
-            else:
-                for mark, n in marks.items():
-                    if n in parents:
-                        marks[mark] = node
-                        update = True
-            if update:
-                bookmarks.write(self)
-
         def commitctx(self, ctx, error=False):
             """Add a revision to the repository and
             move the bookmark"""
@@ -215,7 +198,7 @@
                 if parents[1] == nullid:
                     parents = (parents[0],)
 
-                self._bookmarksupdate(parents, node)
+                bookmarks.update(self, parents, node)
                 return node
             finally:
                 wlock.release()
@@ -275,7 +258,7 @@
                 return result
             node = self.changelog.tip()
             parents = self.dirstate.parents()
-            self._bookmarksupdate(parents, node)
+            bookmarks.update(self, parents, node)
             return result
 
         def _findtags(self):
--- a/mercurial/bookmarks.py	Thu Feb 10 13:46:27 2011 -0600
+++ b/mercurial/bookmarks.py	Thu Feb 10 13:46:27 2011 -0600
@@ -105,3 +105,19 @@
     finally:
         wlock.release()
     repo._bookmarkcurrent = mark
+
+def update(repo, parents, node):
+    marks = repo._bookmarks
+    update = False
+    if repo.ui.configbool('bookmarks', 'track.current'):
+        mark = repo._bookmarkcurrent
+        if mark and marks[mark] in parents:
+            marks[mark] = node
+            update = True
+    else:
+        for mark, n in marks.items():
+            if n in parents:
+                marks[mark] = node
+                update = True
+    if update:
+        write(repo)