comparison mercurial/verify.py @ 41870:00c9fde75c1a

verify: document the `checkentry` method This method checks various core propertes of a revision. We document inputs, outputs and the checks performed.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 06 Mar 2019 12:18:04 +0100
parents 4da2261e949b
children 9e737ca539f6
comparison
equal deleted inserted replaced
41869:4da2261e949b 41870:00c9fde75c1a
92 self._warn(_("warning: `%s' uses revlog format 1") % name) 92 self._warn(_("warning: `%s' uses revlog format 1") % name)
93 elif self.revlogv1: 93 elif self.revlogv1:
94 self._warn(_("warning: `%s' uses revlog format 0") % name) 94 self._warn(_("warning: `%s' uses revlog format 0") % name)
95 95
96 def checkentry(self, obj, i, node, seen, linkrevs, f): 96 def checkentry(self, obj, i, node, seen, linkrevs, f):
97 """verify a single revlog entry
98
99 arguments are:
100 - obj: the source revlog
101 - i: the revision number
102 - node: the revision node id
103 - seen: nodes previously seen for this revlog
104 - linkrevs: [changelog-revisions] introducing "node"
105 - f: string label ("changelog", "manifest", or filename)
106
107 Performs the following checks:
108 - linkrev points to an existing changelog revision,
109 - linkrev points to a changelog revision that introduces this revision,
110 - linkrev points to the lowest of these changesets,
111 - both parents exist in the revlog,
112 - the revision is not duplicated.
113
114 Return the linkrev of the revision (or None for changelog's revisions).
115 """
97 lr = obj.linkrev(obj.rev(node)) 116 lr = obj.linkrev(obj.rev(node))
98 if lr < 0 or (self.havecl and lr not in linkrevs): 117 if lr < 0 or (self.havecl and lr not in linkrevs):
99 if lr < 0 or lr >= len(self.repo.changelog): 118 if lr < 0 or lr >= len(self.repo.changelog):
100 msg = _("rev %d points to nonexistent changeset %d") 119 msg = _("rev %d points to nonexistent changeset %d")
101 else: 120 else: