Comments
Patch
@@ -1288,12 +1288,8 @@ class revlog(object):
btext = [text]
def buildtext():
if btext[0] is not None:
return btext[0]
- # flush any pending writes here so we can read it in revision
- if dfh:
- dfh.flush()
- ifh.flush()
baserev = cachedelta[0]
delta = cachedelta[1]
# special case deltas which replace entire base; no need to decode
# base revision. this neatly avoids censored bases, which throw when
@@ -1302,9 +1298,13 @@ class revlog(object):
if delta[:hlen] == mdiff.replacediffheader(self.rawsize(baserev),
len(delta) - hlen):
btext[0] = delta[hlen:]
else:
- basetext = self.revision(self.node(baserev))
+ if self._inline:
+ fh = ifh
+ else:
+ fh = dfh
+ basetext = self.revision(self.node(baserev), _df=fh)
btext[0] = mdiff.patch(basetext, delta)
try:
self.checkhash(btext[0], p1, p2, node)
if flags & REVIDX_ISCENSORED:
@@ -1326,9 +1326,13 @@ class revlog(object):
# full content in one patch, so delta works everywhere
header = mdiff.replacediffheader(self.rawsize(rev), len(t))
delta = header + t
else:
- ptext = self.revision(self.node(rev))
+ if self._inline:
+ fh = ifh
+ else:
+ fh = dfh
+ ptext = self.revision(self.node(rev), _df=fh)
delta = mdiff.textdiff(ptext, t)
data = self.compress(delta)
l = len(data[1]) + len(data[0])
if basecache[0] == rev: