[PATCH 1 of 9 bm-refactor] commands: move checkformat to bookmarks module

Sean Farley sean at farley.io
Wed Jun 21 00:29:24 UTC 2017


# HG changeset patch
# User Sean Farley <sean at farley.io>
# Date 1497162778 25200
#      Sat Jun 10 23:32:58 2017 -0700
# Branch bm-refactor
# Node ID 03591d8a6d8247d35bbdc93cebce1757755ca463
# Parent  6d79e9109908c2cb468c9eeaf8869aa1926fbea8
commands: move checkformat to bookmarks module

commands.bookmark has grown quite large with two closures already. Let's
split this up (and in the process allow extensions to override the
default behavior).

diff --git a/mercurial/bookmarks.py b/mercurial/bookmarks.py
index db01ef9..948bfbe 100644
--- a/mercurial/bookmarks.py
+++ b/mercurial/bookmarks.py
@@ -17,10 +17,11 @@ from .node import (
 from . import (
     encoding,
     error,
     lock as lockmod,
     obsolete,
+    scmutil,
     txnutil,
     util,
 )
 
 def _getbkfile(repo):
@@ -620,5 +621,17 @@ def validdest(repo, old, new):
     elif repo.obsstore:
         return new.node() in obsolete.foreground(repo, [old.node()])
     else:
         # still an independent clause as it is lazier (and therefore faster)
         return old.descendant(new)
+
+def checkformat(repo, mark):
+    """return a valid version of a potential bookmark name
+
+    Raises an abort error if the bookmark name is not valid.
+    """
+    mark = mark.strip()
+    if not mark:
+        raise error.Abort(_("bookmark names cannot consist entirely of "
+                            "whitespace"))
+    scmutil.checknewlabel(repo, mark, 'bookmark')
+    return mark
diff --git a/mercurial/commands.py b/mercurial/commands.py
index a56cc76..abb42f7 100644
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -955,18 +955,10 @@ def bookmark(ui, repo, *names, **opts):
     rev = opts.get('rev')
     delete = opts.get('delete')
     rename = opts.get('rename')
     inactive = opts.get('inactive')
 
-    def checkformat(mark):
-        mark = mark.strip()
-        if not mark:
-            raise error.Abort(_("bookmark names cannot consist entirely of "
-                               "whitespace"))
-        scmutil.checknewlabel(repo, mark, 'bookmark')
-        return mark
-
     def checkconflict(repo, mark, cur, force=False, target=None):
         if mark in marks and not force:
             if target:
                 if marks[mark] == target and target == cur:
                     # re-activating a bookmark
@@ -1037,11 +1029,11 @@ def bookmark(ui, repo, *names, **opts):
                 tr = repo.transaction('bookmark')
                 if not names:
                     raise error.Abort(_("new bookmark name required"))
                 elif len(names) > 1:
                     raise error.Abort(_("only one new bookmark name allowed"))
-                mark = checkformat(names[0])
+                mark = bookmarks.checkformat(repo, names[0])
                 if rename not in marks:
                     raise error.Abort(_("bookmark '%s' does not exist")
                                       % rename)
                 checkconflict(repo, mark, cur, force)
                 marks[mark] = marks[rename]
@@ -1050,11 +1042,11 @@ def bookmark(ui, repo, *names, **opts):
                 del marks[rename]
             elif names:
                 tr = repo.transaction('bookmark')
                 newact = None
                 for mark in names:
-                    mark = checkformat(mark)
+                    mark = bookmarks.checkformat(repo, mark)
                     if newact is None:
                         newact = mark
                     if inactive and mark == repo._activebookmark:
                         bookmarks.deactivate(repo)
                         return


More information about the Mercurial-devel mailing list