mercurial/revlogutils/constants.py
changeset 47393 7a0ec25d5836
parent 47371 298d4400ea68
child 47395 a669404f0f4a
--- a/mercurial/revlogutils/constants.py	Fri May 21 20:08:11 2021 +0200
+++ b/mercurial/revlogutils/constants.py	Sat May 22 00:06:22 2021 +0200
@@ -27,6 +27,81 @@
     KIND_OTHER,
 }
 
+### Index entry key
+#
+#
+#    Internal details
+#    ----------------
+#
+#    A large part of the revlog logic deals with revisions' "index entries", tuple
+#    objects that contains the same "items" whatever the revlog version.
+#    Different versions will have different ways of storing these items (sometimes
+#    not having them at all), but the tuple will always be the same. New fields
+#    are usually added at the end to avoid breaking existing code that relies
+#    on the existing order. The field are defined as follows:
+
+#    [0] offset:
+#            The byte index of the start of revision data chunk.
+#            That value is shifted up by 16 bits. use "offset = field >> 16" to
+#            retrieve it.
+#
+#        flags:
+#            A flag field that carries special information or changes the behavior
+#            of the revision. (see `REVIDX_*` constants for details)
+#            The flag field only occupies the first 16 bits of this field,
+#            use "flags = field & 0xFFFF" to retrieve the value.
+ENTRY_DATA_OFFSET = 0
+
+#    [1] compressed length:
+#            The size, in bytes, of the chunk on disk
+ENTRY_DATA_COMPRESSED_LENGTH = 1
+
+#    [2] uncompressed length:
+#            The size, in bytes, of the full revision once reconstructed.
+ENTRY_DATA_UNCOMPRESSED_LENGTH = 2
+
+#    [3] base rev:
+#            Either the base of the revision delta chain (without general
+#            delta), or the base of the delta (stored in the data chunk)
+#            with general delta.
+ENTRY_DELTA_BASE = 3
+
+#    [4] link rev:
+#            Changelog revision number of the changeset introducing this
+#            revision.
+ENTRY_LINK_REV = 4
+
+#    [5] parent 1 rev:
+#            Revision number of the first parent
+ENTRY_PARENT_1 = 5
+
+#    [6] parent 2 rev:
+#            Revision number of the second parent
+ENTRY_PARENT_2 = 6
+
+#    [7] node id:
+#            The node id of the current revision
+ENTRY_NODE_ID = 7
+
+#    [8] sidedata offset:
+#            The byte index of the start of the revision's side-data chunk.
+ENTRY_SIDEDATA_OFFSET = 8
+
+#    [9] sidedata chunk length:
+#            The size, in bytes, of the revision's side-data chunk.
+ENTRY_SIDEDATA_COMPRESSED_LENGTH = 9
+
+#    [10] data compression mode:
+#            two bits that detail the way the data chunk is compressed on disk.
+#            (see "COMP_MODE_*" constants for details). For revlog version 0 and
+#            1 this will always be COMP_MODE_INLINE.
+ENTRY_DATA_COMPRESSION_MODE = 10
+
+#    [11] side-data compression mode:
+#            two bits that detail the way the sidedata chunk is compressed on disk.
+#            (see "COMP_MODE_*" constants for details)
+ENTRY_SIDEDATA_COMPRESSION_MODE = 11
+
 ### main revlog header
 
 # We cannot rely on  Struct.format is inconsistent for python <=3.6 versus above