[PATCH 1 of 9] bundlerepo: simplify code to take advantage of `_rawtext`
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Fri Aug 30 16:39:30 UTC 2019
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at octobus.net>
# Date 1567170294 -7200
# Fri Aug 30 15:04:54 2019 +0200
# Node ID 151b3d3e5176e4f9f4ab1b68756f4ba73dfcf7c4
# Parent 2c4f656c8e9f61afd8590d6daf59d5593eeaa29c
# EXP-Topic sidedata-prep
# Available At https://bitbucket.org/octobus/mercurial-devel/
# hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 151b3d3e5176
bundlerepo: simplify code to take advantage of `_rawtext`
In the revlog code, the code getting the raw text is now isolated. We take
advantage of this to simplify the bundlerepo code.
update bundlerepo code
diff --git a/mercurial/bundlerepo.py b/mercurial/bundlerepo.py
--- a/mercurial/bundlerepo.py
+++ b/mercurial/bundlerepo.py
@@ -17,7 +17,10 @@ import os
import shutil
from .i18n import _
-from .node import nullid
+from .node import (
+ nullid,
+ nullrev
+)
from . import (
bundle2,
@@ -108,20 +111,10 @@ class bundlerevlog(revlog.revlog):
return mdiff.textdiff(self.rawdata(rev1),
self.rawdata(rev2))
- def revision(self, nodeorrev, _df=None, raw=False):
- """return an uncompressed revision of a given node or revision
- number.
- """
- if isinstance(nodeorrev, int):
- rev = nodeorrev
- node = self.node(rev)
- else:
- node = nodeorrev
+ def _rawtext(self, node, rev, _df=None):
+ if rev is None:
rev = self.rev(node)
-
- if node == nullid:
- return ""
-
+ validated = False
rawtext = None
chain = []
iterrev = rev
@@ -132,19 +125,19 @@ class bundlerevlog(revlog.revlog):
break
chain.append(iterrev)
iterrev = self.index[iterrev][3]
- if rawtext is None:
- rawtext = self.baserevision(iterrev)
-
+ if iterrev == nullrev:
+ rawtext = ''
+ elif rawtext is None:
+ r = super(bundlerevlog, self)._rawtext(self.node(iterrev),
+ iterrev,
+ _df=_df)
+ __, rawtext, validated = r
+ if chain:
+ validated = False
while chain:
delta = self._chunk(chain.pop())
rawtext = mdiff.patches(rawtext, [delta])
-
- text, validatehash = self._processflags(rawtext, self.flags(rev),
- 'read', raw=raw)
- if validatehash:
- self.checkhash(text, node, rev=rev)
- self._revisioncache = (node, rev, rawtext)
- return text
+ return rev, rawtext, validated
def rawdata(self, nodeorrev, _df=None):
return self.revision(nodeorrev, _df=_df, raw=True)
More information about the Mercurial-devel
mailing list