Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revlog.py @ 47256:de63be070e02
revlog: simplify entry update logic in `rewrite_sidedata`
We don't need to rebuild the full entry. So lets just gather the data we need
to pass to `replace_sidedata_info`.
Differential Revision: https://phab.mercurial-scm.org/D10642
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 03 May 2021 23:45:05 +0200 |
parents | 4abd474a10af |
children | 02a4463565ea |
comparison
equal
deleted
inserted
replaced
47255:78230d036e5d | 47256:de63be070e02 |
---|---|
3238 raise error.Abort(msg) | 3238 raise error.Abort(msg) |
3239 | 3239 |
3240 # Apply (potential) flags to add and to remove after running | 3240 # Apply (potential) flags to add and to remove after running |
3241 # the sidedata helpers | 3241 # the sidedata helpers |
3242 new_offset_flags = entry[0] | flags[0] & ~flags[1] | 3242 new_offset_flags = entry[0] | flags[0] & ~flags[1] |
3243 entry = (new_offset_flags,) + entry[1:8] | 3243 entry_update = ( |
3244 entry += (current_offset, len(serialized_sidedata)) | 3244 current_offset, |
3245 len(serialized_sidedata), | |
3246 new_offset_flags, | |
3247 ) | |
3245 | 3248 |
3246 # the sidedata computation might have move the file cursors around | 3249 # the sidedata computation might have move the file cursors around |
3247 dfh.seek(current_offset, os.SEEK_SET) | 3250 dfh.seek(current_offset, os.SEEK_SET) |
3248 dfh.write(serialized_sidedata) | 3251 dfh.write(serialized_sidedata) |
3249 new_entries.append(entry) | 3252 new_entries.append(entry_update) |
3250 current_offset += len(serialized_sidedata) | 3253 current_offset += len(serialized_sidedata) |
3251 if self._docket is not None: | 3254 if self._docket is not None: |
3252 self._docket.data_end = dfh.tell() | 3255 self._docket.data_end = dfh.tell() |
3253 | 3256 |
3254 # rewrite the new index entries | 3257 # rewrite the new index entries |
3255 ifh.seek(startrev * self.index.entry_size) | 3258 ifh.seek(startrev * self.index.entry_size) |
3256 for i, e in enumerate(new_entries): | 3259 for i, e in enumerate(new_entries): |
3257 rev = startrev + i | 3260 rev = startrev + i |
3258 self.index.replace_sidedata_info(rev, e[8], e[9], e[0]) | 3261 self.index.replace_sidedata_info(rev, *e) |
3259 packed = self.index.entry_binary(rev) | 3262 packed = self.index.entry_binary(rev) |
3260 if rev == 0 and self._docket is None: | 3263 if rev == 0 and self._docket is None: |
3261 header = self._format_flags | self._format_version | 3264 header = self._format_flags | self._format_version |
3262 header = self.index.pack_header(header) | 3265 header = self.index.pack_header(header) |
3263 packed = header + packed | 3266 packed = header + packed |