##// END OF EJS Templates
revlog: move censor logic out of censor extension...
revlog: move censor logic out of censor extension The censor extension is doing very low-level things with revlogs. It is fundamentally impossible for this logic to remain in the censor extension while support multiple storage backends: we need each storage backend to implement censor in its own storage-specific way. This commit effectively moves the revlog-specific censoring code to be a method of revlogs themselves. We've defined a new API on the file storage interface for censoring an individual node. Even though the current censoring code doesn't use it, the API requires a transaction instance because it logically makes sense for storage backends to require an active transaction (which implies a held write lock) in order to rewrite storage. After this commit, the censor extension has been reduced to boilerplate precondition checking before invoking the generic storage API. I tried to keep the code as similar as possible. But some minor changes were made: * We use self._io instead of instantiating a new revlogio instance. * We compare self.version against REVLOGV0 instead of != REVLOGV1 because presumably all future revlog versions will support censoring. * We use self.opener instead of going through repo.svfs (we don't have a handle on the repo instance from a revlog). * "revlog" dropped * Replace "flog" with "self". Differential Revision: https://phab.mercurial-scm.org/D4656
Gregory Szorc -
r39814:a6b3c4c1 default
Show More
Name Size Modified Last Commit Author
/ mercurial / thirdparty / zope / interface
common
LICENSE.txt Loading ...
__init__.py Loading ...
_compat.py Loading ...
_flatten.py Loading ...
_zope_interface_coptimizations.c Loading ...
adapter.py Loading ...
advice.py Loading ...
declarations.py Loading ...
document.py Loading ...
exceptions.py Loading ...
interface.py Loading ...
interfaces.py Loading ...
registry.py Loading ...
ro.py Loading ...
verify.py Loading ...