changeset 47245: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 78230d036e5d
children 02a4463565ea
files mercurial/revlog.py
diffstat 1 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/revlog.py	Tue May 04 00:02:48 2021 +0200
+++ b/mercurial/revlog.py	Mon May 03 23:45:05 2021 +0200
@@ -3240,13 +3240,16 @@
                 # Apply (potential) flags to add and to remove after running
                 # the sidedata helpers
                 new_offset_flags = entry[0] | flags[0] & ~flags[1]
-                entry = (new_offset_flags,) + entry[1:8]
-                entry += (current_offset, len(serialized_sidedata))
+                entry_update = (
+                    current_offset,
+                    len(serialized_sidedata),
+                    new_offset_flags,
+                )
 
                 # the sidedata computation might have move the file cursors around
                 dfh.seek(current_offset, os.SEEK_SET)
                 dfh.write(serialized_sidedata)
-                new_entries.append(entry)
+                new_entries.append(entry_update)
                 current_offset += len(serialized_sidedata)
                 if self._docket is not None:
                     self._docket.data_end = dfh.tell()
@@ -3255,7 +3258,7 @@
             ifh.seek(startrev * self.index.entry_size)
             for i, e in enumerate(new_entries):
                 rev = startrev + i
-                self.index.replace_sidedata_info(rev, e[8], e[9], e[0])
+                self.index.replace_sidedata_info(rev, *e)
                 packed = self.index.entry_binary(rev)
                 if rev == 0 and self._docket is None:
                     header = self._format_flags | self._format_version