Mercurial > public > mercurial-scm > hg-stable
annotate mercurial/revlogutils/revlogv0.py @ 53040:cdd7bf612c7b stable tip
bundle-spec: properly format boolean parameter (issue6960)
This was breaking automatic clone bundle generation. This changeset fixes it and
add a test to catch it in the future.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 11 Mar 2025 02:29:42 +0100 |
parents | 8de68446a5bd |
children |
rev | line source |
---|---|
47079
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 |
51901
f4733654f144
typing: add `from __future__ import annotations` to most files
Matt Harbison <matt_harbison@yahoo.com>
parents:
49292
diff
changeset
|
8 from __future__ import annotations |
47079
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, |
47400
ac60a1366a49
revlog: move `offset_type` to `revlogutils`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47279
diff
changeset
|
19 revlogutils, |
47079
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): |
47279
9d1a8829f959
revlog: signal which revlog index are compatible with Rust
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47267
diff
changeset
|
37 rust_ext_compat = 0 |
47079
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 |
47403
8f87dcb46f53
revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47400
diff
changeset
|
39 null_item = revlogutils.entry( |
8f87dcb46f53
revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47400
diff
changeset
|
40 data_offset=0, |
8f87dcb46f53
revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47400
diff
changeset
|
41 data_compressed_length=0, |
8f87dcb46f53
revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47400
diff
changeset
|
42 data_delta_base=node.nullrev, |
8f87dcb46f53
revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47400
diff
changeset
|
43 link_rev=node.nullrev, |
8f87dcb46f53
revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47400
diff
changeset
|
44 parent_rev_1=node.nullrev, |
8f87dcb46f53
revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47400
diff
changeset
|
45 parent_rev_2=node.nullrev, |
8f87dcb46f53
revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47400
diff
changeset
|
46 node_id=sha1nodeconstants.nullid, |
47260
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47259
diff
changeset
|
47 ) |
47079
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) |
52668
5cc8deb96b48
pyupgrade: modernize calls to superclass methods
Matt Harbison <matt_harbison@yahoo.com>
parents:
52009
diff
changeset
|
75 super().append(tup) |
47079
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") |
49292
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48966
diff
changeset
|
80 for r in range(i.start, len(self)): |
47079
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]] |
52668
5cc8deb96b48
pyupgrade: modernize calls to superclass methods
Matt Harbison <matt_harbison@yahoo.com>
parents:
52009
diff
changeset
|
82 super().__delitem__(i) |
47079
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: |
47258
ba21cfd9b044
revlog: create a create `null_item` attribute for V0
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47156
diff
changeset
|
89 return self.null_item |
47079
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 |
52009
609700e5d8df
head-revs: add a native implementation of the `stop_rev` parameter
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51999
diff
changeset
|
114 def headrevs(self, excluded_revs=None, stop_rev=None): |
51999
22da1dc97281
head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51901
diff
changeset
|
115 count = len(self) |
52009
609700e5d8df
head-revs: add a native implementation of the `stop_rev` parameter
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51999
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:
51999
diff
changeset
|
117 count = min(count, stop_rev) |
51999
22da1dc97281
head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51901
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:
51901
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:
51901
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:
51901
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:
51901
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:
51901
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:
51901
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:
51901
diff
changeset
|
125 |
22da1dc97281
head-revs: teach the pure indexes about the `headrevs` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51901
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:
51901
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:
51901
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:
51901
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:
51901
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:
51901
diff
changeset
|
131 |
47079
724db234b790
revlog: code for `revlogv0` in its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
132 |
52896
8de68446a5bd
index: remember the generaldelta config instead of getting it from the revlog
Rapha?l Gom?s <rgomes@octobus.net>
parents:
52668
diff
changeset
|
133 def parse_index_v0(data, inline, uses_generaldelta): |
47079
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 |
47403
8f87dcb46f53
revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47400
diff
changeset
|
144 e2 = revlogutils.entry( |
8f87dcb46f53
revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47400
diff
changeset
|
145 data_offset=e[0], |
8f87dcb46f53
revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47400
diff
changeset
|
146 data_compressed_length=e[1], |
8f87dcb46f53
revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47400
diff
changeset
|
147 data_delta_base=e[2], |
8f87dcb46f53
revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47400
diff
changeset
|
148 link_rev=e[3], |
8f87dcb46f53
revlog: use entry in revlogv0.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47400
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:
47400
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:
47400
diff
changeset
|
151 node_id=e[6], |
47079
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 |