diff --git a/hgext/remotefilelog/remotefilelog.py b/hgext/remotefilelog/remotefilelog.py --- a/hgext/remotefilelog/remotefilelog.py +++ b/hgext/remotefilelog/remotefilelog.py @@ -24,6 +24,7 @@ revlog, ) from mercurial.utils import storageutil +from mercurial.revlogutils import flagutil from . import ( constants, @@ -45,7 +46,7 @@ raise KeyError(node) return node -class remotefilelog(object): +class remotefilelog(flagutil.flagprocessorsmixin): _generaldelta = True @@ -57,6 +58,8 @@ self.version = 1 + self._flagprocessors = dict(flagutil.flagprocessors) + def read(self, node): """returns the file contents at this node""" t = self.revision(node) @@ -327,28 +330,6 @@ def rawdata(self, node): return self.revision(node, raw=False) - def _processflags(self, text, flags, operation, raw=False): - # mostly copied from hg/mercurial/revlog.py - validatehash = True - orderedflags = revlog.REVIDX_FLAGS_ORDER - if operation == 'write': - orderedflags = reversed(orderedflags) - for flag in orderedflags: - if flag & flags: - vhash = True - if flag not in revlog._flagprocessors: - message = _("missing processor for flag '%#x'") % (flag) - raise revlog.RevlogError(message) - readfunc, writefunc, rawfunc = revlog._flagprocessors[flag] - if raw: - vhash = rawfunc(self, text) - elif operation == 'read': - text, vhash = readfunc(self, text) - elif operation == 'write': - text, vhash = writefunc(self, text) - validatehash = validatehash and vhash - return text, validatehash - def _read(self, id): """reads the raw file blob from disk, cache, or server""" fileservice = self.repo.fileservice