From patchwork Thu Aug 8 01:47:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [7,of,9] flagutil: use the new mixin use in remotefilelog From: Pierre-Yves David X-Patchwork-Id: 41218 Message-Id: <2e87598264f883b252a3.1565228843@nodosa.octopoid.net> To: mercurial-devel@mercurial-scm.org Date: Thu, 08 Aug 2019 03:47:23 +0200 # HG changeset patch # User Pierre-Yves David # Date 1565219856 -7200 # Thu Aug 08 01:17:36 2019 +0200 # Node ID 2e87598264f883b252a39664f2e2618e9de13e42 # Parent 466943d2fed3602e08ac9117afef1c727bcb98a5 # EXP-Topic flag-processors # Available At https://bitbucket.org/octobus/mercurial-devel/ # hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 2e87598264f8 flagutil: use the new mixin use in remotefilelog This remove one of the code duplication. Hooray \o/. diff --git a/hgext/remotefilelog/remotefilelog.py b/hgext/remotefilelog/remotefilelog.py --- a/hgext/remotefilelog/remotefilelog.py +++ b/hgext/remotefilelog/remotefilelog.py @@ -25,6 +25,8 @@ from mercurial import ( ) from mercurial.utils import storageutil +from mercurial.revlogutils import flagutil + from . import ( constants, fileserverclient, @@ -45,7 +47,7 @@ class remotefilelognodemap(object): raise KeyError(node) return node -class remotefilelog(object): +class remotefilelog(flagutil.flagprocessorsmixin): _generaldelta = True @@ -57,6 +59,8 @@ class remotefilelog(object): self.version = 1 + self._flagprocessors = dict(flagutil.flagprocessors) + def read(self, node): """returns the file contents at this node""" t = self.revision(node) @@ -324,28 +328,6 @@ class remotefilelog(object): text, verifyhash = self._processflags(rawtext, flags, 'read') return text - 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