Mercurial > hg
annotate mercurial/revlogutils/revlogv0.py @ 47256:2b69555e4875
revlog: introduce a compression mode for sidedata in the revlog index
We will use this for compression for the sidedata payload.
Differential Revision: https://phab.mercurial-scm.org/D10653
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 03 May 2021 21:34:02 +0200 |
parents | 130c9f7ed914 |
children | 9d1a8829f959 |
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 from __future__ import absolute_import |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
8 |
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 ( |
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
|
12 COMP_MODE_INLINE, |
47038
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
13 INDEX_ENTRY_V0, |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
14 ) |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
15 from ..i18n import _ |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
16 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
17 from .. import ( |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
18 error, |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
19 node, |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
20 pycompat, |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
21 util, |
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 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
24 from . import ( |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
25 flagutil, |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
26 nodemap as nodemaputil, |
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 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
29 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
30 def getoffset(q): |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
31 return int(q >> 16) |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
32 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
33 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
34 def gettype(q): |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
35 return int(q & 0xFFFF) |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
36 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
37 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
38 def offset_type(offset, type): |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
39 if (type & ~flagutil.REVIDX_KNOWN_FLAGS) != 0: |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
40 raise ValueError(b'unknown revlog index flags') |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
41 return int(int(offset) << 16 | type) |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
42 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
43 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
44 class revlogoldindex(list): |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
45 entry_size = INDEX_ENTRY_V0.size |
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
|
46 null_item = ( |
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 0, |
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47248
diff
changeset
|
48 0, |
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47248
diff
changeset
|
49 0, |
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47248
diff
changeset
|
50 -1, |
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47248
diff
changeset
|
51 -1, |
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47248
diff
changeset
|
52 -1, |
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47248
diff
changeset
|
53 -1, |
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47248
diff
changeset
|
54 sha1nodeconstants.nullid, |
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47248
diff
changeset
|
55 0, |
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47248
diff
changeset
|
56 0, |
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47248
diff
changeset
|
57 COMP_MODE_INLINE, |
47256
2b69555e4875
revlog: introduce a compression mode for sidedata in the revlog index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47249
diff
changeset
|
58 COMP_MODE_INLINE, |
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
|
59 ) |
47038
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 @property |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
62 def nodemap(self): |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
63 msg = b"index.nodemap is deprecated, use index.[has_node|rev|get_rev]" |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
64 util.nouideprecwarn(msg, b'5.3', stacklevel=2) |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
65 return self._nodemap |
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 @util.propertycache |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
68 def _nodemap(self): |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
69 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
|
70 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
|
71 n = self[r][7] |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
72 nodemap[n] = r |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
73 return nodemap |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
74 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
75 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
|
76 """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
|
77 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
|
78 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
79 def rev(self, node): |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
80 """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
|
81 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
82 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
|
83 return self._nodemap[node] |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
84 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
85 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
|
86 """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
|
87 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
88 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
|
89 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
|
90 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
91 def append(self, tup): |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
92 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
|
93 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
|
94 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
95 def __delitem__(self, i): |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
96 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
|
97 raise ValueError(b"deleting slices only supports a:-1 with step 1") |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
98 for r in pycompat.xrange(i.start, len(self)): |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
99 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
|
100 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
|
101 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
102 def clearcaches(self): |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
103 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
|
104 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
105 def __getitem__(self, i): |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
106 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
|
107 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
|
108 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
|
109 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
110 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
|
111 """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
|
112 return b'' |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
113 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
114 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
|
115 """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
|
116 entry = self[rev] |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
117 if gettype(entry[0]): |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
118 raise error.RevlogError( |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
119 _(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
|
120 ) |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
121 e2 = ( |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
122 getoffset(entry[0]), |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
123 entry[1], |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
124 entry[3], |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
125 entry[4], |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
126 self[entry[5]][7], |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
127 self[entry[6]][7], |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
128 entry[7], |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
129 ) |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
130 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
|
131 |
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 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
144 e2 = ( |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
145 offset_type(e[0], 0), |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
146 e[1], |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
147 -1, |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
148 e[2], |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
149 e[3], |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
150 nodemap.get(e[4], node.nullrev), |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
151 nodemap.get(e[5], node.nullrev), |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
152 e[6], |
47142
4292bed8da7c
revlog: make the index always return the same tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47038
diff
changeset
|
153 0, # no side data support |
4292bed8da7c
revlog: make the index always return the same tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47038
diff
changeset
|
154 0, # no side data support |
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
|
155 COMP_MODE_INLINE, |
47038
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.append(e2) |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
158 nodemap[e[6]] = n |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
159 n += 1 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
160 |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
161 index = revlogoldindex(index) |
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
162 return index, None |