Mercurial > hg
annotate mercurial/revlogutils/constants.py @ 49677:05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
The idea is to give higher level code more control to what will happens with
the cache delta passed. This should help with controling how we treat delta's
from different sources.
The final goal of this change is to allow for server modes where the client can
blindly accept any server delta without regards to any local constraints. This
will be implemented in later changesets.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 07 Nov 2022 22:12:59 -0500 |
parents | 6000f5b25c9b |
children | bcae90c53def |
rev | line source |
---|---|
47249
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47234
diff
changeset
|
1 # revlogdeltas.py - constant used for revlog logic. |
39329
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
2 # |
46819
d4ba4d51f85f
contributor: change mentions of mpm to olivia
Raphaël Gomès <rgomes@octobus.net>
parents:
46704
diff
changeset
|
3 # Copyright 2005-2007 Olivia Mackall <olivia@selenic.com> |
39329
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
4 # Copyright 2018 Octobus <contact@octobus.net> |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
5 # |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
6 # This software may be used and distributed according to the terms of the |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
7 # GNU General Public License version 2 or any later version. |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
8 """Helper class to compute deltas stored inside revlogs""" |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
9 |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
10 |
46856
34e1fa4b548a
revlog: move the details of revlog "v0" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46855
diff
changeset
|
11 import struct |
34e1fa4b548a
revlog: move the details of revlog "v0" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46855
diff
changeset
|
12 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
13 from ..interfaces import repository |
47395
a669404f0f4a
revlog: add a function to build index entry tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47393
diff
changeset
|
14 from .. import revlogutils |
39329
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
15 |
47072
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46859
diff
changeset
|
16 ### Internal utily constants |
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46859
diff
changeset
|
17 |
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46859
diff
changeset
|
18 KIND_CHANGELOG = 1001 # over 256 to not be comparable with a bytes |
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46859
diff
changeset
|
19 KIND_MANIFESTLOG = 1002 |
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46859
diff
changeset
|
20 KIND_FILELOG = 1003 |
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46859
diff
changeset
|
21 KIND_OTHER = 1004 |
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46859
diff
changeset
|
22 |
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46859
diff
changeset
|
23 ALL_KINDS = { |
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46859
diff
changeset
|
24 KIND_CHANGELOG, |
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46859
diff
changeset
|
25 KIND_MANIFESTLOG, |
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46859
diff
changeset
|
26 KIND_FILELOG, |
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46859
diff
changeset
|
27 KIND_OTHER, |
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46859
diff
changeset
|
28 } |
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46859
diff
changeset
|
29 |
47393
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
30 ### Index entry key |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
31 # |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
32 # |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
33 # Internal details |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
34 # ---------------- |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
35 # |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
36 # A large part of the revlog logic deals with revisions' "index entries", tuple |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
37 # objects that contains the same "items" whatever the revlog version. |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
38 # Different versions will have different ways of storing these items (sometimes |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
39 # not having them at all), but the tuple will always be the same. New fields |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
40 # are usually added at the end to avoid breaking existing code that relies |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
41 # on the existing order. The field are defined as follows: |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
42 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
43 # [0] offset: |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
44 # The byte index of the start of revision data chunk. |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
45 # That value is shifted up by 16 bits. use "offset = field >> 16" to |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
46 # retrieve it. |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
47 # |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
48 # flags: |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
49 # A flag field that carries special information or changes the behavior |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
50 # of the revision. (see `REVIDX_*` constants for details) |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
51 # The flag field only occupies the first 16 bits of this field, |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
52 # use "flags = field & 0xFFFF" to retrieve the value. |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
53 ENTRY_DATA_OFFSET = 0 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
54 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
55 # [1] compressed length: |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
56 # The size, in bytes, of the chunk on disk |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
57 ENTRY_DATA_COMPRESSED_LENGTH = 1 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
58 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
59 # [2] uncompressed length: |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
60 # The size, in bytes, of the full revision once reconstructed. |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
61 ENTRY_DATA_UNCOMPRESSED_LENGTH = 2 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
62 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
63 # [3] base rev: |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
64 # Either the base of the revision delta chain (without general |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
65 # delta), or the base of the delta (stored in the data chunk) |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
66 # with general delta. |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
67 ENTRY_DELTA_BASE = 3 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
68 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
69 # [4] link rev: |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
70 # Changelog revision number of the changeset introducing this |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
71 # revision. |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
72 ENTRY_LINK_REV = 4 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
73 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
74 # [5] parent 1 rev: |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
75 # Revision number of the first parent |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
76 ENTRY_PARENT_1 = 5 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
77 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
78 # [6] parent 2 rev: |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
79 # Revision number of the second parent |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
80 ENTRY_PARENT_2 = 6 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
81 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
82 # [7] node id: |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
83 # The node id of the current revision |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
84 ENTRY_NODE_ID = 7 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
85 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
86 # [8] sidedata offset: |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
87 # The byte index of the start of the revision's side-data chunk. |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
88 ENTRY_SIDEDATA_OFFSET = 8 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
89 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
90 # [9] sidedata chunk length: |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
91 # The size, in bytes, of the revision's side-data chunk. |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
92 ENTRY_SIDEDATA_COMPRESSED_LENGTH = 9 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
93 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
94 # [10] data compression mode: |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
95 # two bits that detail the way the data chunk is compressed on disk. |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
96 # (see "COMP_MODE_*" constants for details). For revlog version 0 and |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
97 # 1 this will always be COMP_MODE_INLINE. |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
98 ENTRY_DATA_COMPRESSION_MODE = 10 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
99 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
100 # [11] side-data compression mode: |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
101 # two bits that detail the way the sidedata chunk is compressed on disk. |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
102 # (see "COMP_MODE_*" constants for details) |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
103 ENTRY_SIDEDATA_COMPRESSION_MODE = 11 |
7a0ec25d5836
revlog: move entry documentation alongside new related constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47371
diff
changeset
|
104 |
48499
52034c42c09d
rank: add a "rank" value to the revlog-entry tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48498
diff
changeset
|
105 # [12] Revision rank: |
52034c42c09d
rank: add a "rank" value to the revlog-entry tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48498
diff
changeset
|
106 # The number of revision under this one. |
52034c42c09d
rank: add a "rank" value to the revlog-entry tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48498
diff
changeset
|
107 # |
52034c42c09d
rank: add a "rank" value to the revlog-entry tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48498
diff
changeset
|
108 # Formally this is defined as : rank(X) = len(ancestors(X) + X) |
52034c42c09d
rank: add a "rank" value to the revlog-entry tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48498
diff
changeset
|
109 # |
52034c42c09d
rank: add a "rank" value to the revlog-entry tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48498
diff
changeset
|
110 # If rank == -1; then we do not have this information available. |
52034c42c09d
rank: add a "rank" value to the revlog-entry tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48498
diff
changeset
|
111 # Only `null` has a rank of 0. |
52034c42c09d
rank: add a "rank" value to the revlog-entry tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48498
diff
changeset
|
112 ENTRY_RANK = 12 |
52034c42c09d
rank: add a "rank" value to the revlog-entry tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48498
diff
changeset
|
113 |
52034c42c09d
rank: add a "rank" value to the revlog-entry tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48498
diff
changeset
|
114 RANK_UNKNOWN = -1 |
52034c42c09d
rank: add a "rank" value to the revlog-entry tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48498
diff
changeset
|
115 |
46855
aba724bf550e
revlog: add some comment in the header sections
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46819
diff
changeset
|
116 ### main revlog header |
aba724bf550e
revlog: add some comment in the header sections
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46819
diff
changeset
|
117 |
47371
298d4400ea68
index: use an explicit constant for INDEX_HEADER format and use it for docket
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47270
diff
changeset
|
118 # We cannot rely on Struct.format is inconsistent for python <=3.6 versus above |
298d4400ea68
index: use an explicit constant for INDEX_HEADER format and use it for docket
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47270
diff
changeset
|
119 INDEX_HEADER_FMT = b">I" |
298d4400ea68
index: use an explicit constant for INDEX_HEADER format and use it for docket
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47270
diff
changeset
|
120 INDEX_HEADER = struct.Struct(INDEX_HEADER_FMT) |
46859
c6e23fb4bfb4
revlog: move the "index header" struct inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46858
diff
changeset
|
121 |
46855
aba724bf550e
revlog: add some comment in the header sections
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46819
diff
changeset
|
122 ## revlog version |
39329
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
123 REVLOGV0 = 0 |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
124 REVLOGV1 = 1 |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
125 # Dummy value until file format is finalized. |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
126 REVLOGV2 = 0xDEAD |
47266
921648d31553
changelogv2: use a dedicated version number
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47255
diff
changeset
|
127 # Dummy value until file format is finalized. |
921648d31553
changelogv2: use a dedicated version number
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47255
diff
changeset
|
128 CHANGELOGV2 = 0xD34D |
46855
aba724bf550e
revlog: add some comment in the header sections
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46819
diff
changeset
|
129 |
aba724bf550e
revlog: add some comment in the header sections
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46819
diff
changeset
|
130 ## global revlog header flags |
41202
e7a2cc84dbc0
revlog: always enable generaldelta on version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40047
diff
changeset
|
131 # Shared across v1 and v2. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
132 FLAG_INLINE_DATA = 1 << 16 |
41202
e7a2cc84dbc0
revlog: always enable generaldelta on version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40047
diff
changeset
|
133 # Only used by v1, implied by v2. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43032
diff
changeset
|
134 FLAG_GENERALDELTA = 1 << 17 |
39329
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
135 REVLOG_DEFAULT_FLAGS = FLAG_INLINE_DATA |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
136 REVLOG_DEFAULT_FORMAT = REVLOGV1 |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
137 REVLOG_DEFAULT_VERSION = REVLOG_DEFAULT_FORMAT | REVLOG_DEFAULT_FLAGS |
47230
0e9105bf54cb
revlog: unify checks for supported flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47077
diff
changeset
|
138 REVLOGV0_FLAGS = 0 |
39329
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
139 REVLOGV1_FLAGS = FLAG_INLINE_DATA | FLAG_GENERALDELTA |
41202
e7a2cc84dbc0
revlog: always enable generaldelta on version 2 revlogs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40047
diff
changeset
|
140 REVLOGV2_FLAGS = FLAG_INLINE_DATA |
47266
921648d31553
changelogv2: use a dedicated version number
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47255
diff
changeset
|
141 CHANGELOGV2_FLAGS = 0 |
39329
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
142 |
46855
aba724bf550e
revlog: add some comment in the header sections
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46819
diff
changeset
|
143 ### individual entry |
aba724bf550e
revlog: add some comment in the header sections
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46819
diff
changeset
|
144 |
46856
34e1fa4b548a
revlog: move the details of revlog "v0" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46855
diff
changeset
|
145 ## index v0: |
34e1fa4b548a
revlog: move the details of revlog "v0" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46855
diff
changeset
|
146 # 4 bytes: offset |
34e1fa4b548a
revlog: move the details of revlog "v0" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46855
diff
changeset
|
147 # 4 bytes: compressed length |
34e1fa4b548a
revlog: move the details of revlog "v0" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46855
diff
changeset
|
148 # 4 bytes: base rev |
34e1fa4b548a
revlog: move the details of revlog "v0" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46855
diff
changeset
|
149 # 4 bytes: link rev |
34e1fa4b548a
revlog: move the details of revlog "v0" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46855
diff
changeset
|
150 # 20 bytes: parent 1 nodeid |
34e1fa4b548a
revlog: move the details of revlog "v0" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46855
diff
changeset
|
151 # 20 bytes: parent 2 nodeid |
34e1fa4b548a
revlog: move the details of revlog "v0" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46855
diff
changeset
|
152 # 20 bytes: nodeid |
34e1fa4b548a
revlog: move the details of revlog "v0" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46855
diff
changeset
|
153 INDEX_ENTRY_V0 = struct.Struct(b">4l20s20s20s") |
34e1fa4b548a
revlog: move the details of revlog "v0" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46855
diff
changeset
|
154 |
46857
cc65cea90edb
revlog: move the details of revlog "v1" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46856
diff
changeset
|
155 ## index v1 |
cc65cea90edb
revlog: move the details of revlog "v1" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46856
diff
changeset
|
156 # 6 bytes: offset |
cc65cea90edb
revlog: move the details of revlog "v1" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46856
diff
changeset
|
157 # 2 bytes: flags |
cc65cea90edb
revlog: move the details of revlog "v1" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46856
diff
changeset
|
158 # 4 bytes: compressed length |
cc65cea90edb
revlog: move the details of revlog "v1" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46856
diff
changeset
|
159 # 4 bytes: uncompressed length |
cc65cea90edb
revlog: move the details of revlog "v1" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46856
diff
changeset
|
160 # 4 bytes: base rev |
cc65cea90edb
revlog: move the details of revlog "v1" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46856
diff
changeset
|
161 # 4 bytes: link rev |
cc65cea90edb
revlog: move the details of revlog "v1" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46856
diff
changeset
|
162 # 4 bytes: parent 1 rev |
cc65cea90edb
revlog: move the details of revlog "v1" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46856
diff
changeset
|
163 # 4 bytes: parent 2 rev |
cc65cea90edb
revlog: move the details of revlog "v1" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46856
diff
changeset
|
164 # 32 bytes: nodeid |
cc65cea90edb
revlog: move the details of revlog "v1" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46856
diff
changeset
|
165 INDEX_ENTRY_V1 = struct.Struct(b">Qiiiiii20s12x") |
cc65cea90edb
revlog: move the details of revlog "v1" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46856
diff
changeset
|
166 assert INDEX_ENTRY_V1.size == 32 * 2 |
cc65cea90edb
revlog: move the details of revlog "v1" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46856
diff
changeset
|
167 |
46858
85e3a630cad9
revlog: move the details of revlog "v2" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46857
diff
changeset
|
168 # 6 bytes: offset |
85e3a630cad9
revlog: move the details of revlog "v2" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46857
diff
changeset
|
169 # 2 bytes: flags |
85e3a630cad9
revlog: move the details of revlog "v2" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46857
diff
changeset
|
170 # 4 bytes: compressed length |
85e3a630cad9
revlog: move the details of revlog "v2" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46857
diff
changeset
|
171 # 4 bytes: uncompressed length |
85e3a630cad9
revlog: move the details of revlog "v2" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46857
diff
changeset
|
172 # 4 bytes: base rev |
85e3a630cad9
revlog: move the details of revlog "v2" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46857
diff
changeset
|
173 # 4 bytes: link rev |
85e3a630cad9
revlog: move the details of revlog "v2" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46857
diff
changeset
|
174 # 4 bytes: parent 1 rev |
85e3a630cad9
revlog: move the details of revlog "v2" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46857
diff
changeset
|
175 # 4 bytes: parent 2 rev |
85e3a630cad9
revlog: move the details of revlog "v2" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46857
diff
changeset
|
176 # 32 bytes: nodeid |
85e3a630cad9
revlog: move the details of revlog "v2" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46857
diff
changeset
|
177 # 8 bytes: sidedata offset |
85e3a630cad9
revlog: move the details of revlog "v2" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46857
diff
changeset
|
178 # 4 bytes: sidedata compressed length |
47251
6bfa6c2c5f15
revlogv2: preserve the compression mode on disk
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47249
diff
changeset
|
179 # 1 bytes: compression mode (2 lower bit are data_compression_mode) |
6bfa6c2c5f15
revlogv2: preserve the compression mode on disk
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47249
diff
changeset
|
180 # 19 bytes: Padding to align to 96 bytes (see RevlogV2Plan wiki page) |
6bfa6c2c5f15
revlogv2: preserve the compression mode on disk
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47249
diff
changeset
|
181 INDEX_ENTRY_V2 = struct.Struct(b">Qiiiiii20s12xQiB19x") |
6bfa6c2c5f15
revlogv2: preserve the compression mode on disk
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47249
diff
changeset
|
182 assert INDEX_ENTRY_V2.size == 32 * 3, INDEX_ENTRY_V2.size |
46858
85e3a630cad9
revlog: move the details of revlog "v2" index inside revlog.utils.constants
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46857
diff
changeset
|
183 |
47270
25ce16bf724b
changelogv2: use a dedicated on disk format for changelogv2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47266
diff
changeset
|
184 # 6 bytes: offset |
25ce16bf724b
changelogv2: use a dedicated on disk format for changelogv2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47266
diff
changeset
|
185 # 2 bytes: flags |
25ce16bf724b
changelogv2: use a dedicated on disk format for changelogv2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47266
diff
changeset
|
186 # 4 bytes: compressed length |
25ce16bf724b
changelogv2: use a dedicated on disk format for changelogv2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47266
diff
changeset
|
187 # 4 bytes: uncompressed length |
25ce16bf724b
changelogv2: use a dedicated on disk format for changelogv2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47266
diff
changeset
|
188 # 4 bytes: parent 1 rev |
25ce16bf724b
changelogv2: use a dedicated on disk format for changelogv2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47266
diff
changeset
|
189 # 4 bytes: parent 2 rev |
25ce16bf724b
changelogv2: use a dedicated on disk format for changelogv2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47266
diff
changeset
|
190 # 32 bytes: nodeid |
25ce16bf724b
changelogv2: use a dedicated on disk format for changelogv2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47266
diff
changeset
|
191 # 8 bytes: sidedata offset |
25ce16bf724b
changelogv2: use a dedicated on disk format for changelogv2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47266
diff
changeset
|
192 # 4 bytes: sidedata compressed length |
25ce16bf724b
changelogv2: use a dedicated on disk format for changelogv2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47266
diff
changeset
|
193 # 1 bytes: compression mode (2 lower bit are data_compression_mode) |
48500
c5d6c874766a
rank: actually persist revision's rank in changelog-v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48499
diff
changeset
|
194 # 4 bytes: changeset rank (i.e. `len(::REV)`) |
c5d6c874766a
rank: actually persist revision's rank in changelog-v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48499
diff
changeset
|
195 # 23 bytes: Padding to align to 96 bytes (see RevlogV2Plan wiki page) |
c5d6c874766a
rank: actually persist revision's rank in changelog-v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48499
diff
changeset
|
196 INDEX_ENTRY_CL_V2 = struct.Struct(b">Qiiii20s12xQiBi23x") |
48498
d5137c00ab17
changelog-v2: fix an assertion error to display the right data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48497
diff
changeset
|
197 assert INDEX_ENTRY_CL_V2.size == 32 * 3, INDEX_ENTRY_CL_V2.size |
48497
2c6084f67a86
changelog-v2: use helper constant in the code to pack/unpack entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47395
diff
changeset
|
198 INDEX_ENTRY_V2_IDX_OFFSET = 0 |
2c6084f67a86
changelog-v2: use helper constant in the code to pack/unpack entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47395
diff
changeset
|
199 INDEX_ENTRY_V2_IDX_COMPRESSED_LENGTH = 1 |
2c6084f67a86
changelog-v2: use helper constant in the code to pack/unpack entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47395
diff
changeset
|
200 INDEX_ENTRY_V2_IDX_UNCOMPRESSED_LENGTH = 2 |
2c6084f67a86
changelog-v2: use helper constant in the code to pack/unpack entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47395
diff
changeset
|
201 INDEX_ENTRY_V2_IDX_PARENT_1 = 3 |
2c6084f67a86
changelog-v2: use helper constant in the code to pack/unpack entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47395
diff
changeset
|
202 INDEX_ENTRY_V2_IDX_PARENT_2 = 4 |
2c6084f67a86
changelog-v2: use helper constant in the code to pack/unpack entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47395
diff
changeset
|
203 INDEX_ENTRY_V2_IDX_NODEID = 5 |
2c6084f67a86
changelog-v2: use helper constant in the code to pack/unpack entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47395
diff
changeset
|
204 INDEX_ENTRY_V2_IDX_SIDEDATA_OFFSET = 6 |
2c6084f67a86
changelog-v2: use helper constant in the code to pack/unpack entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47395
diff
changeset
|
205 INDEX_ENTRY_V2_IDX_SIDEDATA_COMPRESSED_LENGTH = 7 |
2c6084f67a86
changelog-v2: use helper constant in the code to pack/unpack entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47395
diff
changeset
|
206 INDEX_ENTRY_V2_IDX_COMPRESSION_MODE = 8 |
48500
c5d6c874766a
rank: actually persist revision's rank in changelog-v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48499
diff
changeset
|
207 INDEX_ENTRY_V2_IDX_RANK = 9 |
47270
25ce16bf724b
changelogv2: use a dedicated on disk format for changelogv2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47266
diff
changeset
|
208 |
39329
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
209 # revlog index flags |
40047
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39506
diff
changeset
|
210 |
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39506
diff
changeset
|
211 # For historical reasons, revlog's internal flags were exposed via the |
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39506
diff
changeset
|
212 # wire protocol and are even exposed in parts of the storage APIs. |
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39506
diff
changeset
|
213 |
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39506
diff
changeset
|
214 # revision has censor metadata, must be verified |
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39506
diff
changeset
|
215 REVIDX_ISCENSORED = repository.REVISION_FLAG_CENSORED |
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39506
diff
changeset
|
216 # revision hash does not match data (narrowhg) |
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39506
diff
changeset
|
217 REVIDX_ELLIPSIS = repository.REVISION_FLAG_ELLIPSIS |
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39506
diff
changeset
|
218 # revision data is stored externally |
8e398628a3f2
repository: define and use revision flag constants
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39506
diff
changeset
|
219 REVIDX_EXTSTORED = repository.REVISION_FLAG_EXTSTORED |
45671
2d6aea053153
copies: add a HASCOPIESINFO flag to highlight rev with useful data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
220 # revision changes files in a way that could affect copy tracing. |
2d6aea053153
copies: add a HASCOPIESINFO flag to highlight rev with useful data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
221 REVIDX_HASCOPIESINFO = repository.REVISION_FLAG_HASCOPIESINFO |
39329
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
222 REVIDX_DEFAULT_FLAGS = 0 |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
223 # stable order in which flags need to be processed and their processors applied |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
224 REVIDX_FLAGS_ORDER = [ |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
225 REVIDX_ISCENSORED, |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
226 REVIDX_ELLIPSIS, |
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
227 REVIDX_EXTSTORED, |
45671
2d6aea053153
copies: add a HASCOPIESINFO flag to highlight rev with useful data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
228 REVIDX_HASCOPIESINFO, |
39329
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
229 ] |
42730
92ac6b1697a7
flagutil: move REVIDX_KNOWN_FLAGS source of truth in flagutil (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41202
diff
changeset
|
230 |
39329
729082bb9938
revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
231 # bitmark for flags that could cause rawdata content change |
47077
119790e1c67c
cg4: introduce protocol flag to signify the presence of sidedata
Raphaël Gomès <rgomes@octobus.net>
parents:
47072
diff
changeset
|
232 REVIDX_RAWTEXT_CHANGING_FLAGS = REVIDX_ISCENSORED | REVIDX_EXTSTORED |
39506
b66ea3fc3a86
sparse-revlog: set max delta chain length to on thousand
Boris Feld <boris.feld@octobus.net>
parents:
39330
diff
changeset
|
233 |
47249
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47234
diff
changeset
|
234 ## chunk compression mode constants: |
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47234
diff
changeset
|
235 # These constants are used in revlog version >=2 to denote the compression used |
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47234
diff
changeset
|
236 # for a chunk. |
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47234
diff
changeset
|
237 |
47253
b876f0bf7366
revlog: introduce a plain compression mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47251
diff
changeset
|
238 # Chunk use no compression, the data stored on disk can be directly use as |
b876f0bf7366
revlog: introduce a plain compression mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47251
diff
changeset
|
239 # chunk value. Without any header information prefixed. |
b876f0bf7366
revlog: introduce a plain compression mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47251
diff
changeset
|
240 COMP_MODE_PLAIN = 0 |
b876f0bf7366
revlog: introduce a plain compression mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47251
diff
changeset
|
241 |
47255
ff9fd7107d11
revlog: implement a "default compression" mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47253
diff
changeset
|
242 # Chunk use the "default compression" for the revlog (usually defined in the |
ff9fd7107d11
revlog: implement a "default compression" mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47253
diff
changeset
|
243 # revlog docket). A header is still used. |
ff9fd7107d11
revlog: implement a "default compression" mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47253
diff
changeset
|
244 # |
ff9fd7107d11
revlog: implement a "default compression" mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47253
diff
changeset
|
245 # XXX: keeping a header is probably not useful and we should probably drop it. |
ff9fd7107d11
revlog: implement a "default compression" mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47253
diff
changeset
|
246 # |
ff9fd7107d11
revlog: implement a "default compression" mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47253
diff
changeset
|
247 # XXX: The value of allow mixed type of compression in the revlog is unclear |
ff9fd7107d11
revlog: implement a "default compression" mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47253
diff
changeset
|
248 # and we should consider making PLAIN/DEFAULT the only available mode for |
ff9fd7107d11
revlog: implement a "default compression" mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47253
diff
changeset
|
249 # revlog v2, disallowing INLINE mode. |
ff9fd7107d11
revlog: implement a "default compression" mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47253
diff
changeset
|
250 COMP_MODE_DEFAULT = 1 |
ff9fd7107d11
revlog: implement a "default compression" mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47253
diff
changeset
|
251 |
47249
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47234
diff
changeset
|
252 # Chunk use a compression mode stored "inline" at the start of the chunk |
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47234
diff
changeset
|
253 # itself. This is the mode always used for revlog version "0" and "1" |
47395
a669404f0f4a
revlog: add a function to build index entry tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47393
diff
changeset
|
254 COMP_MODE_INLINE = revlogutils.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:
47234
diff
changeset
|
255 |
47230
0e9105bf54cb
revlog: unify checks for supported flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47077
diff
changeset
|
256 SUPPORTED_FLAGS = { |
0e9105bf54cb
revlog: unify checks for supported flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47077
diff
changeset
|
257 REVLOGV0: REVLOGV0_FLAGS, |
0e9105bf54cb
revlog: unify checks for supported flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47077
diff
changeset
|
258 REVLOGV1: REVLOGV1_FLAGS, |
0e9105bf54cb
revlog: unify checks for supported flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47077
diff
changeset
|
259 REVLOGV2: REVLOGV2_FLAGS, |
47266
921648d31553
changelogv2: use a dedicated version number
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47255
diff
changeset
|
260 CHANGELOGV2: CHANGELOGV2_FLAGS, |
47230
0e9105bf54cb
revlog: unify checks for supported flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47077
diff
changeset
|
261 } |
0e9105bf54cb
revlog: unify checks for supported flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47077
diff
changeset
|
262 |
47231
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
263 _no = lambda flags: False |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
264 _yes = lambda flags: True |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
265 |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
266 |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
267 def _from_flag(flag): |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
268 return lambda flags: bool(flags & flag) |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
269 |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
270 |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
271 FEATURES_BY_VERSION = { |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
272 REVLOGV0: { |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
273 b'inline': _no, |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
274 b'generaldelta': _no, |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
275 b'sidedata': False, |
47234
616b8f412676
revlogv2: introduce a very basic docket file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47231
diff
changeset
|
276 b'docket': False, |
47231
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
277 }, |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
278 REVLOGV1: { |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
279 b'inline': _from_flag(FLAG_INLINE_DATA), |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
280 b'generaldelta': _from_flag(FLAG_GENERALDELTA), |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
281 b'sidedata': False, |
47234
616b8f412676
revlogv2: introduce a very basic docket file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47231
diff
changeset
|
282 b'docket': False, |
47231
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
283 }, |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
284 REVLOGV2: { |
47234
616b8f412676
revlogv2: introduce a very basic docket file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47231
diff
changeset
|
285 # The point of inline-revlog is to reduce the number of files used in |
616b8f412676
revlogv2: introduce a very basic docket file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47231
diff
changeset
|
286 # the store. Using a docket defeat this purpose. So we needs other |
616b8f412676
revlogv2: introduce a very basic docket file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47231
diff
changeset
|
287 # means to reduce the number of files for revlogv2. |
47231
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
288 b'inline': _no, |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
289 b'generaldelta': _yes, |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
290 b'sidedata': True, |
47234
616b8f412676
revlogv2: introduce a very basic docket file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47231
diff
changeset
|
291 b'docket': True, |
47231
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
292 }, |
47266
921648d31553
changelogv2: use a dedicated version number
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47255
diff
changeset
|
293 CHANGELOGV2: { |
921648d31553
changelogv2: use a dedicated version number
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47255
diff
changeset
|
294 b'inline': _no, |
921648d31553
changelogv2: use a dedicated version number
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47255
diff
changeset
|
295 # General delta is useless for changelog since we don't do any delta |
921648d31553
changelogv2: use a dedicated version number
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47255
diff
changeset
|
296 b'generaldelta': _no, |
921648d31553
changelogv2: use a dedicated version number
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47255
diff
changeset
|
297 b'sidedata': True, |
921648d31553
changelogv2: use a dedicated version number
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47255
diff
changeset
|
298 b'docket': True, |
921648d31553
changelogv2: use a dedicated version number
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47255
diff
changeset
|
299 }, |
47231
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
300 } |
4d1c893b9095
revlog: unify flag processing when loading index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47230
diff
changeset
|
301 |
47249
130c9f7ed914
revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47234
diff
changeset
|
302 |
39506
b66ea3fc3a86
sparse-revlog: set max delta chain length to on thousand
Boris Feld <boris.feld@octobus.net>
parents:
39330
diff
changeset
|
303 SPARSE_REVLOG_MAX_CHAIN_LENGTH = 1000 |
49677
05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
304 |
05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
305 ### What should be done with a cached delta and its base ? |
05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
306 |
05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
307 # Ignore the cache when considering candidates. |
05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
308 # |
05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
309 # The cached delta might be used, but the delta base will not be scheduled for |
05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
310 # usage earlier than in "normal" order. |
05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
311 DELTA_BASE_REUSE_NO = 0 |
05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
312 |
05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
313 # Prioritize trying the cached delta base |
05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
314 # |
05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
315 # The delta base will be tested for validy first. So that the cached deltas get |
05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
316 # used when possible. |
05db41701ece
find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
317 DELTA_BASE_REUSE_TRY = 1 |