comparison mercurial/filelog.py @ 23858:22a979d1ae56

filelog: use censored revlog flag bit to quickly check if a node is censored
author Mike Edgar <adgar@google.com>
date Mon, 12 Jan 2015 15:29:36 -0500
parents 58ec36686f0e
children b95a5bb58653
comparison
equal deleted inserted replaced
23857:8a3c132f93d2 23858:22a979d1ae56
83 samehashes = not super(filelog, self).cmp(node, t) 83 samehashes = not super(filelog, self).cmp(node, t)
84 if samehashes: 84 if samehashes:
85 return False 85 return False
86 86
87 # censored files compare against the empty file 87 # censored files compare against the empty file
88 if self._iscensored(node): 88 if self._iscensored(self.rev(node)):
89 return text != '' 89 return text != ''
90 90
91 # renaming a file produces a different hash, even if the data 91 # renaming a file produces a different hash, even if the data
92 # remains unchanged. Check if it's the case (slow): 92 # remains unchanged. Check if it's the case (slow):
93 if self.renamed(node): 93 if self.renamed(node):
105 raise 105 raise
106 106
107 def _file(self, f): 107 def _file(self, f):
108 return filelog(self.opener, f) 108 return filelog(self.opener, f)
109 109
110 def _iscensored(self, revornode): 110 def _iscensored(self, rev):
111 """Check if a file revision is censored.""" 111 """Check if a file revision is censored."""
112 try: 112 return self.flags(rev) & revlog.REVIDX_ISCENSORED
113 self.revision(revornode)
114 return False
115 except error.CensoredNodeError:
116 return True