annotate mercurial/revlogutils/revlogv0.py @ 52049:af54626bf358

dirstate-map: add a missing debug wait point when accessing the v2 docket fc8e37c380d3 added synchronization points to the dirstate to allow for race condition testing without actually requiring a time-based race condition to happen. This changes adds the `pre-read-file` wait point before we read the docket, since callers might ask for the parents before anything else is read, leading to the first read being done before the wait point. This removes some differences in test output which were presumed to be speed related, but weren't.
author Rapha?l Gom?s <rgomes@octobus.net>
date Mon, 14 Oct 2024 14:14:21 +0200
parents 609700e5d8df
children 5cc8deb96b48
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47038
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
1 # revlogv0 - code related to revlog format "V0"
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
2 #
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
3 # Copyright 2005-2007 Olivia Mackall <olivia@selenic.com>
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
4 #
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
5 # This software may be used and distributed according to the terms of the
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
6 # GNU General Public License version 2 or any later version.
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
7
51859
f4733654f144 typing: add `from __future__ import annotations` to most files
Matt Harbison <matt_harbison@yahoo.com>
parents: 49284
diff changeset
8 from __future__ import annotations
47038
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
9
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
10 from ..node import sha1nodeconstants
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
11 from .constants import (
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
12 INDEX_ENTRY_V0,
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
13 )
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
14 from ..i18n import _
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
15
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
16 from .. import (
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
17 error,
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
18 node,
47394
ac60a1366a49 revlog: move `offset_type` to `revlogutils`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47268
diff changeset
19 revlogutils,
47038
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
20 util,
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
21 )
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
22
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
23 from . import (
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
24 nodemap as nodemaputil,
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
25 )
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
26
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
27
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
28 def getoffset(q):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
29 return int(q >> 16)
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
30
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
31
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
32 def gettype(q):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
33 return int(q & 0xFFFF)
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
34
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
35
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
36 class revlogoldindex(list):
47268
9d1a8829f959 revlog: signal which revlog index are compatible with Rust
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47256
diff changeset
37 rust_ext_compat = 0
47038
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
38 entry_size = INDEX_ENTRY_V0.size
47397
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
39 null_item = revlogutils.entry(
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
40 data_offset=0,
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
41 data_compressed_length=0,
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
42 data_delta_base=node.nullrev,
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
43 link_rev=node.nullrev,
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
44 parent_rev_1=node.nullrev,
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
45 parent_rev_2=node.nullrev,
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
46 node_id=sha1nodeconstants.nullid,
47249
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47248
diff changeset
47 )
47038
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
48
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
49 @util.propertycache
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
50 def _nodemap(self):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
51 nodemap = nodemaputil.NodeMap({sha1nodeconstants.nullid: node.nullrev})
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
52 for r in range(0, len(self)):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
53 n = self[r][7]
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
54 nodemap[n] = r
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
55 return nodemap
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
56
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
57 def has_node(self, node):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
58 """return True if the node exist in the index"""
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
59 return node in self._nodemap
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
60
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
61 def rev(self, node):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
62 """return a revision for a node
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
63
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
64 If the node is unknown, raise a RevlogError"""
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
65 return self._nodemap[node]
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
66
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
67 def get_rev(self, node):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
68 """return a revision for a node
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
69
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
70 If the node is unknown, return None"""
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
71 return self._nodemap.get(node)
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
72
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
73 def append(self, tup):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
74 self._nodemap[tup[7]] = len(self)
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
75 super(revlogoldindex, self).append(tup)
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
76
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
77 def __delitem__(self, i):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
78 if not isinstance(i, slice) or not i.stop == -1 or i.step is not None:
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
79 raise ValueError(b"deleting slices only supports a:-1 with step 1")
49284
d44e3c45f0e4 py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents: 48875
diff changeset
80 for r in range(i.start, len(self)):
47038
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
81 del self._nodemap[self[r][7]]
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
82 super(revlogoldindex, self).__delitem__(i)
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
83
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
84 def clearcaches(self):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
85 self.__dict__.pop('_nodemap', None)
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
86
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
87 def __getitem__(self, i):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
88 if i == -1:
47247
ba21cfd9b044 revlog: create a create `null_item` attribute for V0
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47142
diff changeset
89 return self.null_item
47038
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
90 return list.__getitem__(self, i)
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
91
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
92 def pack_header(self, header):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
93 """pack header information in binary"""
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
94 return b''
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
95
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
96 def entry_binary(self, rev):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
97 """return the raw binary string representing a revision"""
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
98 entry = self[rev]
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
99 if gettype(entry[0]):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
100 raise error.RevlogError(
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
101 _(b'index entry flags need revlog version 1')
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
102 )
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
103 e2 = (
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
104 getoffset(entry[0]),
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
105 entry[1],
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
106 entry[3],
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
107 entry[4],
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
108 self[entry[5]][7],
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
109 self[entry[6]][7],
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
110 entry[7],
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
111 )
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
112 return INDEX_ENTRY_V0.pack(*e2)
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
113
51975
609700e5d8df head-revs: add a native implementation of the `stop_rev` parameter
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51965
diff changeset
114 def headrevs(self, excluded_revs=None, stop_rev=None):
51965
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
115 count = len(self)
51975
609700e5d8df head-revs: add a native implementation of the `stop_rev` parameter
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51965
diff changeset
116 if stop_rev is not None:
609700e5d8df head-revs: add a native implementation of the `stop_rev` parameter
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51965
diff changeset
117 count = min(count, stop_rev)
51965
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
118 if not count:
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
119 return [node.nullrev]
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
120 # we won't iter over filtered rev so nobody is a head at start
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
121 ishead = [0] * (count + 1)
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
122 revs = range(count)
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
123 if excluded_revs is not None:
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
124 revs = (r for r in revs if r not in excluded_revs)
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
125
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
126 for r in revs:
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
127 ishead[r] = 1 # I may be an head
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
128 e = self[r]
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
129 ishead[e[5]] = ishead[e[6]] = 0 # my parent are not
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
130 return [r for r, val in enumerate(ishead) if val]
22da1dc97281 head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51859
diff changeset
131
47038
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
132
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
133 def parse_index_v0(data, inline):
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
134 s = INDEX_ENTRY_V0.size
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
135 index = []
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
136 nodemap = nodemaputil.NodeMap({node.nullid: node.nullrev})
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
137 n = off = 0
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
138 l = len(data)
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
139 while off + s <= l:
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
140 cur = data[off : off + s]
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
141 off += s
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
142 e = INDEX_ENTRY_V0.unpack(cur)
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
143 # transform to revlogv1 format
47397
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
144 e2 = revlogutils.entry(
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
145 data_offset=e[0],
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
146 data_compressed_length=e[1],
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
147 data_delta_base=e[2],
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
148 link_rev=e[3],
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
149 parent_rev_1=nodemap.get(e[4], node.nullrev),
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
150 parent_rev_2=nodemap.get(e[5], node.nullrev),
8f87dcb46f53 revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47394
diff changeset
151 node_id=e[6],
47038
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
152 )
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
153 index.append(e2)
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
154 nodemap[e[6]] = n
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
155 n += 1
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
156
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
157 index = revlogoldindex(index)
724db234b790 revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
158 return index, None