comparison mercurial/revlog.py @ 47133:5e5fad5166e6

revlog: adjust rewrite_sidedata code to not delete existing revlog content The "w+" file mode is deleting all the content of the opened file. Which is bad? This is not caught by the test because the test only check for a full, initial pull where not pre-existing content exists. So we need to fix our test coverage here. However they are another issue that prevent "incremental" pull to work here. See next changeset for details. Differential Revision: https://phab.mercurial-scm.org/D10543
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 03 May 2021 12:18:48 +0200
parents 8bd769b5c941
children 1b33e38d4b6d
comparison
equal deleted inserted replaced
47132:65e6970042c5 47133:5e5fad5166e6
3116 fp.write(serialized_sidedata) 3116 fp.write(serialized_sidedata)
3117 new_entries.append(entry) 3117 new_entries.append(entry)
3118 current_offset += len(serialized_sidedata) 3118 current_offset += len(serialized_sidedata)
3119 3119
3120 # rewrite the new index entries 3120 # rewrite the new index entries
3121 with self._indexfp(b'w+') as fp: 3121 with self._indexfp(b'r+') as fp:
3122 fp.seek(startrev * self.index.entry_size) 3122 fp.seek(startrev * self.index.entry_size)
3123 for i, e in enumerate(new_entries): 3123 for i, e in enumerate(new_entries):
3124 rev = startrev + i 3124 rev = startrev + i
3125 self.index.replace_sidedata_info(rev, e[8], e[9], e[0]) 3125 self.index.replace_sidedata_info(rev, e[8], e[9], e[0])
3126 packed = self.index.entry_binary(rev) 3126 packed = self.index.entry_binary(rev)