comparison mercurial/verify.py @ 41862:c66037fb1bc5

verify: make the `warn` method private The method is for internal use only. Let us make that fact clearer.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 06 Mar 2019 11:24:40 +0100
parents a58748300e61
children 9534f3cb6b6c
comparison
equal deleted inserted replaced
41861:a58748300e61 41862:c66037fb1bc5
49 self.fncachewarned = False 49 self.fncachewarned = False
50 # developer config: verify.skipflags 50 # developer config: verify.skipflags
51 self.skipflags = repo.ui.configint('verify', 'skipflags') 51 self.skipflags = repo.ui.configint('verify', 'skipflags')
52 self.warnorphanstorefiles = True 52 self.warnorphanstorefiles = True
53 53
54 def warn(self, msg): 54 def _warn(self, msg):
55 """record a "warning" level issue""" 55 """record a "warning" level issue"""
56 self.ui.warn(msg + "\n") 56 self.ui.warn(msg + "\n")
57 self.warnings += 1 57 self.warnings += 1
58 58
59 def err(self, linkrev, msg, filename=None): 59 def err(self, linkrev, msg, filename=None):
85 if d[1]: 85 if d[1]:
86 self.err(None, _("index contains %d extra bytes") % d[1], name) 86 self.err(None, _("index contains %d extra bytes") % d[1], name)
87 87
88 if obj.version != revlog.REVLOGV0: 88 if obj.version != revlog.REVLOGV0:
89 if not self.revlogv1: 89 if not self.revlogv1:
90 self.warn(_("warning: `%s' uses revlog format 1") % name) 90 self._warn(_("warning: `%s' uses revlog format 1") % name)
91 elif self.revlogv1: 91 elif self.revlogv1:
92 self.warn(_("warning: `%s' uses revlog format 0") % name) 92 self._warn(_("warning: `%s' uses revlog format 0") % name)
93 93
94 def checkentry(self, obj, i, node, seen, linkrevs, f): 94 def checkentry(self, obj, i, node, seen, linkrevs, f):
95 lr = obj.linkrev(obj.rev(node)) 95 lr = obj.linkrev(obj.rev(node))
96 if lr < 0 or (self.havecl and lr not in linkrevs): 96 if lr < 0 or (self.havecl and lr not in linkrevs):
97 if lr < 0 or lr >= len(self.repo.changelog): 97 if lr < 0 or lr >= len(self.repo.changelog):
105 # attempt to filter down to real linkrevs 105 # attempt to filter down to real linkrevs
106 linkrevs = [l for l in linkrevs 106 linkrevs = [l for l in linkrevs
107 if self.lrugetctx(l)[f].filenode() == node] 107 if self.lrugetctx(l)[f].filenode() == node]
108 except Exception: 108 except Exception:
109 pass 109 pass
110 self.warn(_(" (expected %s)") % " ".join 110 self._warn(_(" (expected %s)") % " ".join
111 (map(pycompat.bytestr, linkrevs))) 111 (map(pycompat.bytestr, linkrevs)))
112 lr = None # can't be trusted 112 lr = None # can't be trusted
113 113
114 try: 114 try:
115 p1, p2 = obj.parents(node) 115 p1, p2 = obj.parents(node)
116 if p1 not in seen and p1 != nullid: 116 if p1 not in seen and p1 != nullid:
291 291
292 if not dir and subdirnodes: 292 if not dir and subdirnodes:
293 subdirprogress.complete() 293 subdirprogress.complete()
294 if self.warnorphanstorefiles: 294 if self.warnorphanstorefiles:
295 for f in sorted(storefiles): 295 for f in sorted(storefiles):
296 self.warn(_("warning: orphan data file '%s'") % f) 296 self._warn(_("warning: orphan data file '%s'") % f)
297 297
298 return filenodes 298 return filenodes
299 299
300 def _crosscheckfiles(self, filelinkrevs, filenodes): 300 def _crosscheckfiles(self, filelinkrevs, filenodes):
301 repo = self.repo 301 repo = self.repo
374 for ff in fl.files(): 374 for ff in fl.files():
375 try: 375 try:
376 storefiles.remove(ff) 376 storefiles.remove(ff)
377 except KeyError: 377 except KeyError:
378 if self.warnorphanstorefiles: 378 if self.warnorphanstorefiles:
379 self.warn(_(" warning: revlog '%s' not in fncache!") % 379 self._warn(_(" warning: revlog '%s' not in fncache!") %
380 ff) 380 ff)
381 self.fncachewarned = True 381 self.fncachewarned = True
382 382
383 if not len(fl) and (self.havecl or self.havemf): 383 if not len(fl) and (self.havecl or self.havemf):
384 self.err(lr, _("empty or missing %s") % f) 384 self.err(lr, _("empty or missing %s") % f)
390 linkrev = fl.linkrev(fl.rev(problem.node)) 390 linkrev = fl.linkrev(fl.rev(problem.node))
391 else: 391 else:
392 linkrev = None 392 linkrev = None
393 393
394 if problem.warning: 394 if problem.warning:
395 self.warn(problem.warning) 395 self._warn(problem.warning)
396 elif problem.error: 396 elif problem.error:
397 self.err(linkrev if linkrev is not None else lr, 397 self.err(linkrev if linkrev is not None else lr,
398 problem.error, f) 398 problem.error, f)
399 else: 399 else:
400 raise error.ProgrammingError( 400 raise error.ProgrammingError(
423 rp = fl.renamed(n) 423 rp = fl.renamed(n)
424 if rp: 424 if rp:
425 if lr is not None and ui.verbose: 425 if lr is not None and ui.verbose:
426 ctx = lrugetctx(lr) 426 ctx = lrugetctx(lr)
427 if not any(rp[0] in pctx for pctx in ctx.parents()): 427 if not any(rp[0] in pctx for pctx in ctx.parents()):
428 self.warn(_("warning: copy source of '%s' not" 428 self._warn(_("warning: copy source of '%s' not"
429 " in parents of %s") % (f, ctx)) 429 " in parents of %s") % (f, ctx))
430 fl2 = repo.file(rp[0]) 430 fl2 = repo.file(rp[0])
431 if not len(fl2): 431 if not len(fl2):
432 self.err(lr, _("empty or missing copy source " 432 self.err(lr, _("empty or missing copy source "
433 "revlog %s:%s") % (rp[0], short(rp[1])), f) 433 "revlog %s:%s") % (rp[0], short(rp[1])), f)
448 short(node), f) 448 short(node), f)
449 progress.complete() 449 progress.complete()
450 450
451 if self.warnorphanstorefiles: 451 if self.warnorphanstorefiles:
452 for f in sorted(storefiles): 452 for f in sorted(storefiles):
453 self.warn(_("warning: orphan data file '%s'") % f) 453 self._warn(_("warning: orphan data file '%s'") % f)
454 454
455 return len(files), revisions 455 return len(files), revisions