context: handle censored data in an on-disk file context based on config
authorMike Edgar <adgar@google.com>
Tue, 14 Oct 2014 15:46:16 -0400
changeset 22932 d81792872984
parent 22931 48c0b101a9de
child 22933 3a60cd44e619
context: handle censored data in an on-disk file context based on config Two possible behaviors are defined for handling censored data: abort, and ignore. When we ignore censored data we return an empty file to callers requesting the file data.
mercurial/context.py
--- a/mercurial/context.py	Wed Oct 08 15:20:14 2014 -0400
+++ b/mercurial/context.py	Tue Oct 14 15:46:16 2014 -0400
@@ -930,7 +930,14 @@
                        filelog=self._filelog)
 
     def data(self):
-        return self._filelog.read(self._filenode)
+        try:
+            return self._filelog.read(self._filenode)
+        except error.CensoredNodeError:
+            if self._repo.ui.config("censor", "policy", "abort") == "ignore":
+                return ""
+            raise util.Abort(_("censored node: %s") % short(self._filenode),
+                             hint="set censor.policy to ignore errors")
+
     def size(self):
         return self._filelog.size(self._filerev)