Skip to content
Snippets Groups Projects
Commit 58ec3668 authored by Mike Edgar's avatar Mike Edgar
Browse files

filelog: censored files compare against empty data, have 0 size

To support "status" operations against working directories that are
the children of censored revisions, filelog must define "cmp" and "size"
for censored content.
parent 27e2317e
No related branches found
No related tags found
No related merge requests found
......@@ -64,6 +64,8 @@
node = self.node(rev)
if self.renamed(node):
return len(self.read(node))
if self._iscensored(rev):
return 0
# XXX if self.read(node).startswith("\1\n"), this returns (size+4)
return super(filelog, self).size(rev)
......@@ -82,6 +84,10 @@
if samehashes:
return False
# censored files compare against the empty file
if self._iscensored(node):
return text != ''
# renaming a file produces a different hash, even if the data
# remains unchanged. Check if it's the case (slow):
if self.renamed(node):
......@@ -100,3 +106,11 @@
def _file(self, f):
return filelog(self.opener, f)
def _iscensored(self, revornode):
"""Check if a file revision is censored."""
try:
self.revision(revornode)
return False
except error.CensoredNodeError:
return True
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment