125 r = self.index_format.unpack(data) |
125 r = self.index_format.unpack(data) |
126 if self._lgt and i == 0: |
126 if self._lgt and i == 0: |
127 r = (offset_type(0, gettype(r[0])),) + r[1:] |
127 r = (offset_type(0, gettype(r[0])),) + r[1:] |
128 return r |
128 return r |
129 |
129 |
|
130 def entry_binary(self, rev, header): |
|
131 """return the raw binary string representing a revision""" |
|
132 entry = self[rev] |
|
133 p = revlog_constants.INDEX_ENTRY_V1.pack(*entry) |
|
134 if rev == 0: |
|
135 v_fmt = revlog_constants.INDEX_HEADER |
|
136 v_bin = v_fmt.pack(header) |
|
137 p = v_bin + p[v_fmt.size :] |
|
138 return p |
|
139 |
130 |
140 |
131 class IndexObject(BaseIndexObject): |
141 class IndexObject(BaseIndexObject): |
132 def __init__(self, data): |
142 def __init__(self, data): |
133 assert len(data) % self.entry_size == 0 |
143 assert len(data) % self.entry_size == 0, ( |
|
144 len(data), |
|
145 self.entry_size, |
|
146 len(data) % self.entry_size, |
|
147 ) |
134 self._data = data |
148 self._data = data |
135 self._lgt = len(data) // self.entry_size |
149 self._lgt = len(data) // self.entry_size |
136 self._extra = [] |
150 self._extra = [] |
137 |
151 |
138 def _calculate_index(self, i): |
152 def _calculate_index(self, i): |
269 new = old[:64] + packed + old[64 + packed_size :] |
283 new = old[:64] + packed + old[64 + packed_size :] |
270 self._extra[i - self._lgt] = new |
284 self._extra[i - self._lgt] = new |
271 else: |
285 else: |
272 msg = b"cannot rewrite entries outside of this transaction" |
286 msg = b"cannot rewrite entries outside of this transaction" |
273 raise KeyError(msg) |
287 raise KeyError(msg) |
|
288 |
|
289 def entry_binary(self, rev, header): |
|
290 """return the raw binary string representing a revision""" |
|
291 entry = self[rev] |
|
292 p = revlog_constants.INDEX_ENTRY_V2.pack(*entry) |
|
293 if rev == 0: |
|
294 v_fmt = revlog_constants.INDEX_HEADER |
|
295 v_bin = v_fmt.pack(header) |
|
296 p = v_bin + p[v_fmt.size :] |
|
297 return p |
274 |
298 |
275 |
299 |
276 class IndexObject2(Index2Mixin, IndexObject): |
300 class IndexObject2(Index2Mixin, IndexObject): |
277 pass |
301 pass |
278 |
302 |