Mercurial > public > mercurial-scm > hg-stable
diff mercurial/revlog.py @ 40267:9d5ddf55415b
revlog: allow flag processors to be applied via store options
This allows flag processors to be registered to specific repos in an extension
by wrapping localrepo.resolverevlogstorevfsoptions(). I wanted to add the
processors via a function on localrepo, but some of the places where the
processors are globally registered don't have a repository available. This
makes targeting specific repos in the wrapper awkward, but still manageable.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Tue, 09 Oct 2018 21:53:21 -0400 |
parents | ba70e3acf58a |
children | 9cadb0f5f227 |
line wrap: on
line diff
--- a/mercurial/revlog.py Fri Oct 12 17:34:45 2018 -0400 +++ b/mercurial/revlog.py Tue Oct 09 21:53:21 2018 -0400 @@ -151,16 +151,19 @@ debug commands. In this case the transform only indicates whether the contents can be used for hash integrity checks. """ + _insertflagprocessor(flag, processor, _flagprocessors) + +def _insertflagprocessor(flag, processor, flagprocessors): if not flag & REVIDX_KNOWN_FLAGS: msg = _("cannot register processor on unknown flag '%#x'.") % (flag) raise error.ProgrammingError(msg) if flag not in REVIDX_FLAGS_ORDER: msg = _("flag '%#x' undefined in REVIDX_FLAGS_ORDER.") % (flag) raise error.ProgrammingError(msg) - if flag in _flagprocessors: + if flag in flagprocessors: msg = _("cannot register multiple processors on flag '%#x'.") % (flag) raise error.Abort(msg) - _flagprocessors[flag] = processor + flagprocessors[flag] = processor def getoffset(q): return int(q >> 16) @@ -408,6 +411,10 @@ if opts.get('enableellipsis'): self._flagprocessors[REVIDX_ELLIPSIS] = ellipsisprocessor + # revlog v0 doesn't have flag processors + for flag, processor in opts.get(b'flagprocessors', {}).iteritems(): + _insertflagprocessor(flag, processor, self._flagprocessors) + if self._chunkcachesize <= 0: raise error.RevlogError(_('revlog chunk cache size %r is not ' 'greater than 0') % self._chunkcachesize)