comparison mercurial/verify.py @ 42155:57539e5ea2e0

verify: introduce a notion of "level" Some checks are slower than others, to help the user to run the checks he needs, we are about to introduce new flag to select faster vs deeper runs. This put the scaffolding in place to do this.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 17 Apr 2019 01:12:21 +0200
parents 9c5a6af74afa
children 496ac8a02380
comparison
equal deleted inserted replaced
42154:f2fe7cf4ebb6 42155:57539e5ea2e0
20 pycompat, 20 pycompat,
21 revlog, 21 revlog,
22 util, 22 util,
23 ) 23 )
24 24
25 def verify(repo): 25 VERIFY_DEFAULT = 0
26
27 def verify(repo, level=None):
26 with repo.lock(): 28 with repo.lock():
27 return verifier(repo).verify() 29 v = verifier(repo, level)
30 return v.verify()
28 31
29 def _normpath(f): 32 def _normpath(f):
30 # under hg < 2.4, convert didn't sanitize paths properly, so a 33 # under hg < 2.4, convert didn't sanitize paths properly, so a
31 # converted repo may contain repeated slashes 34 # converted repo may contain repeated slashes
32 while '//' in f: 35 while '//' in f:
33 f = f.replace('//', '/') 36 f = f.replace('//', '/')
34 return f 37 return f
35 38
36 class verifier(object): 39 class verifier(object):
37 def __init__(self, repo): 40 def __init__(self, repo, level=None):
38 self.repo = repo.unfiltered() 41 self.repo = repo.unfiltered()
39 self.ui = repo.ui 42 self.ui = repo.ui
40 self.match = repo.narrowmatch() 43 self.match = repo.narrowmatch()
44 if level is None:
45 level = VERIFY_DEFAULT
46 self._level = level
41 self.badrevs = set() 47 self.badrevs = set()
42 self.errors = 0 48 self.errors = 0
43 self.warnings = 0 49 self.warnings = 0
44 self.havecl = len(repo.changelog) > 0 50 self.havecl = len(repo.changelog) > 0
45 self.havemf = len(repo.manifestlog.getstorage(b'')) > 0 51 self.havemf = len(repo.manifestlog.getstorage(b'')) > 0