Mercurial > public > mercurial-scm > hg
comparison mercurial/revlog.py @ 51188:13f58ce70299
rust-revlog: teach the revlog opening code to read the repo options
This will become necessary as we start writing revlog data from Rust.
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Mon, 18 Sep 2023 17:11:11 +0200 |
parents | 6ec8387eb0be |
children | 633408a0f2e2 |
comparison
equal
deleted
inserted
replaced
51187:6ec8387eb0be | 51188:13f58ce70299 |
---|---|
14 | 14 |
15 | 15 |
16 import binascii | 16 import binascii |
17 import collections | 17 import collections |
18 import contextlib | 18 import contextlib |
19 import functools | |
19 import io | 20 import io |
20 import os | 21 import os |
21 import struct | 22 import struct |
22 import weakref | 23 import weakref |
23 import zlib | 24 import zlib |
222 | 223 |
223 else: | 224 else: |
224 parse_index_v1_nodemap = None | 225 parse_index_v1_nodemap = None |
225 | 226 |
226 | 227 |
227 def parse_index_v1_mixed(data, inline): | 228 def parse_index_v1_mixed(data, inline, default_header): |
228 index, cache = parse_index_v1(data, inline) | 229 index, cache = parse_index_v1(data, inline) |
229 return rustrevlog.MixedIndex(index, data), cache | 230 return rustrevlog.MixedIndex(index, data, default_header), cache |
230 | 231 |
231 | 232 |
232 # corresponds to uncompressed length of indexformatng (2 gigs, 4-byte | 233 # corresponds to uncompressed length of indexformatng (2 gigs, 4-byte |
233 # signed integer) | 234 # signed integer) |
234 _maxentrysize = 0x7FFFFFFF | 235 _maxentrysize = 0x7FFFFFFF |
1692 elif self._format_version == CHANGELOGV2: | 1693 elif self._format_version == CHANGELOGV2: |
1693 self._parse_index = parse_index_cl_v2 | 1694 self._parse_index = parse_index_cl_v2 |
1694 elif devel_nodemap: | 1695 elif devel_nodemap: |
1695 self._parse_index = parse_index_v1_nodemap | 1696 self._parse_index = parse_index_v1_nodemap |
1696 elif use_rust_index: | 1697 elif use_rust_index: |
1697 self._parse_index = parse_index_v1_mixed | 1698 self._parse_index = functools.partial( |
1699 parse_index_v1_mixed, default_header=new_header | |
1700 ) | |
1698 try: | 1701 try: |
1699 d = self._parse_index(index_data, self._inline) | 1702 d = self._parse_index(index_data, self._inline) |
1700 index, chunkcache = d | 1703 index, chunkcache = d |
1701 use_nodemap = ( | 1704 use_nodemap = ( |
1702 not self._inline | 1705 not self._inline |