verify: move widely used variables into class members
authorDurham Goode <durham@fb.com>
Fri, 18 Dec 2015 16:42:39 -0800
changeset 27444 6647401858ab
parent 27443 937e73a6e4ff
child 27445 cc178057ab49
verify: move widely used variables into class members This will allow us to start moving some of the nested functions inside verify() out onto the class. This will allow extensions to hook into verify more easily.
mercurial/verify.py
--- a/mercurial/verify.py	Fri Dec 18 16:42:39 2015 -0800
+++ b/mercurial/verify.py	Fri Dec 18 16:42:39 2015 -0800
@@ -24,7 +24,7 @@
 def verify(repo):
     lock = repo.lock()
     try:
-        return verifier().verify(repo)
+        return verifier(repo).verify()
     finally:
         lock.release()
 
@@ -47,19 +47,31 @@
     return True
 
 class verifier(object):
-    def verify(self, repo):
-        repo = repo.unfiltered()
+    def __init__(self, repo):
+        self.repo = repo.unfiltered()
+        self.ui = repo.ui
+        self.badrevs = set()
+        self.errors = [0]
+        self.warnings = [0]
+        self.havecl = len(repo.changelog) > 0
+        self.havemf = len(repo.manifest) > 0
+        self.revlogv1 = repo.changelog.version != revlog.REVLOGV0
+        self.lrugetctx = util.lrucachefunc(repo.changectx)
+        self.refersmf = False
+
+    def verify(self):
+        repo = self.repo
         mflinkrevs = {}
         filelinkrevs = {}
         filenodes = {}
         revisions = 0
-        badrevs = set()
-        errors = [0]
-        warnings = [0]
+        badrevs = self.badrevs
+        errors = self.errors
+        warnings = self.warnings
         ui = repo.ui
         cl = repo.changelog
         mf = repo.manifest
-        lrugetctx = util.lrucachefunc(repo.changectx)
+        lrugetctx = self.lrugetctx
 
         if not repo.url().startswith('file:'):
             raise error.Abort(_("cannot verify bundle or remote repos"))
@@ -142,16 +154,15 @@
         if os.path.exists(repo.sjoin("journal")):
             ui.warn(_("abandoned transaction found - run hg recover\n"))
 
-        revlogv1 = cl.version != revlog.REVLOGV0
+        revlogv1 = self.revlogv1
         if ui.verbose or not revlogv1:
             ui.status(_("repository uses revlog format %d\n") %
                            (revlogv1 and 1 or 0))
 
-        havecl = len(cl) > 0
-        havemf = len(mf) > 0
+        havecl = self.havecl
+        havemf = self.havemf
 
         ui.status(_("checking changesets\n"))
-        refersmf = False
         seen = {}
         checklog(cl, "changelog", 0)
         total = len(repo)
@@ -164,18 +175,18 @@
                 changes = cl.read(n)
                 if changes[0] != nullid:
                     mflinkrevs.setdefault(changes[0], []).append(i)
-                    refersmf = True
+                    self.refersmf = True
                 for f in changes[3]:
                     if _validpath(repo, f):
                         filelinkrevs.setdefault(_normpath(f), []).append(i)
             except Exception as inst:
-                refersmf = True
+                self.refersmf = True
                 exc(i, _("unpacking changeset %s") % short(n), inst)
         ui.progress(_('checking'), None)
 
         ui.status(_("checking manifests\n"))
         seen = {}
-        if refersmf:
+        if self.refersmf:
             # Do not check manifest if there are only changelog entries with
             # null manifests.
             checklog(mf, "manifest", 0)