Mercurial > public > mercurial-scm > hg
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 |