bookmarks: factor out delete logic from commands
authorSean Farley <sean@farley.io>
Mon, 12 Jun 2017 23:02:48 -0700
changeset 33005 9343fce87789
parent 33004 c808862f2e6e
child 33006 e0a8dd6c87c7
bookmarks: factor out delete logic from commands We keep the lock in the caller so that future devs are aware of the locking implications.
mercurial/bookmarks.py
mercurial/commands.py
--- a/mercurial/bookmarks.py	Fri Jun 23 15:30:27 2017 -0400
+++ b/mercurial/bookmarks.py	Mon Jun 12 23:02:48 2017 -0700
@@ -691,3 +691,17 @@
                             "whitespace"))
     scmutil.checknewlabel(repo, mark, 'bookmark')
     return mark
+
+def delete(repo, tr, names):
+    """remove a mark from the bookmark store
+
+    Raises an abort error if mark does not exist.
+    """
+    marks = repo._bookmarks
+    for mark in names:
+        if mark not in marks:
+            raise error.Abort(_("bookmark '%s' does not exist") % mark)
+        if mark == repo._activebookmark:
+            deactivate(repo)
+        del marks[mark]
+    marks.recordchange(tr)
--- a/mercurial/commands.py	Fri Jun 23 15:30:27 2017 -0400
+++ b/mercurial/commands.py	Mon Jun 12 23:02:48 2017 -0700
@@ -975,14 +975,7 @@
             marks = repo._bookmarks
             if delete:
                 tr = repo.transaction('bookmark')
-                for mark in names:
-                    if mark not in marks:
-                        raise error.Abort(_("bookmark '%s' does not exist") %
-                                         mark)
-                    if mark == repo._activebookmark:
-                        bookmarks.deactivate(repo)
-                    del marks[mark]
-
+                bookmarks.delete(repo, tr, names)
             elif rename:
                 tr = repo.transaction('bookmark')
                 if not names: