comparison mercurial/bundlerepo.py @ 31836:4598e8f43e20

bundlerepo: fix raw handling in revision() Similar to fixes in revlog.py, this patch uses "rawtext" to explicitly label contents expected to be raw, and makes sure content stored in _cache is raw text. Now test-flagprocessor.t points us to another issue.
author Jun Wu <quark@fb.com>
date Thu, 06 Apr 2017 17:45:47 -0700
parents 4bafc80f827e
children 37e793918c07
comparison
equal deleted inserted replaced
31835:4bafc80f827e 31836:4598e8f43e20
129 rev = self.rev(node) 129 rev = self.rev(node)
130 130
131 if node == nullid: 131 if node == nullid:
132 return "" 132 return ""
133 133
134 text = None 134 rawtext = None
135 chain = [] 135 chain = []
136 iterrev = rev 136 iterrev = rev
137 # reconstruct the revision if it is from a changegroup 137 # reconstruct the revision if it is from a changegroup
138 while iterrev > self.repotiprev: 138 while iterrev > self.repotiprev:
139 if self._cache and self._cache[1] == iterrev: 139 if self._cache and self._cache[1] == iterrev:
140 text = self._cache[2] 140 rawtext = self._cache[2]
141 break 141 break
142 chain.append(iterrev) 142 chain.append(iterrev)
143 iterrev = self.index[iterrev][3] 143 iterrev = self.index[iterrev][3]
144 if text is None: 144 if rawtext is None:
145 text = self.baserevision(iterrev) 145 rawtext = self.baserevision(iterrev)
146 146
147 while chain: 147 while chain:
148 delta = self._chunk(chain.pop()) 148 delta = self._chunk(chain.pop())
149 text = mdiff.patches(text, [delta]) 149 rawtext = mdiff.patches(rawtext, [delta])
150 150
151 text, validatehash = self._processflags(text, self.flags(rev), 151 text, validatehash = self._processflags(rawtext, self.flags(rev),
152 'read', raw=raw) 152 'read', raw=raw)
153 if validatehash: 153 if validatehash:
154 self.checkhash(text, node, rev=rev) 154 self.checkhash(text, node, rev=rev)
155 self._cache = (node, rev, text) 155 self._cache = (node, rev, rawtext)
156 return text 156 return text
157 157
158 def baserevision(self, nodeorrev): 158 def baserevision(self, nodeorrev):
159 # Revlog subclasses may override 'revision' method to modify format of 159 # Revlog subclasses may override 'revision' method to modify format of
160 # content retrieved from revlog. To use bundlerevlog with such class one 160 # content retrieved from revlog. To use bundlerevlog with such class one