##// 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

File last commit:

r19296:da16d21c stable
r39814:a6b3c4c1 default
Show More
extensions.txt
35 lines | 1.2 KiB | text/plain | TextLexer
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 Mercurial has the ability to add new features through the use of
extensions. Extensions may add new commands, add options to
existing commands, change the default behavior of commands, or
implement hooks.
Brodie Rao
help: refer to user configuration file more consistently...
r12083 To enable the "foo" extension, either shipped with Mercurial or in the
Python search path, create an entry for it in your configuration file,
like this::
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999
[extensions]
foo =
You may also specify the full path to an extension::
[extensions]
myfeature = ~/.hgext/myfeature.py
Jordi Gutiérrez Hermoso
doc: make it easier to read how to enable extensions...
r19296 See :hg:`help config` for more information on configuration files.
Extensions are not loaded by default for a variety of reasons:
they can increase startup overhead; they may be meant for advanced
usage only; they may provide potentially dangerous abilities (such
as letting you destroy or modify history); they might not be ready
for prime time; or they may alter some usual behaviors of stock
Mercurial. It is thus up to the user to activate extensions as
needed.
Brodie Rao
help: refer to user configuration file more consistently...
r12083 To explicitly disable an extension enabled in a configuration file of
broader scope, prepend its path with !::
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999
[extensions]
# disabling extension bar residing in /path/to/extension/bar.py
Martin Geisler
Merge with stable
r10123 bar = !/path/to/extension/bar.py
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 # ditto, but no path was supplied for extension baz
Martin Geisler
Merge with stable
r10123 baz = !