@@ -39,7 +39,7 @@ MIDXs, both the bit-cache and rev-cache extensions are required.
39
39
40
40
== On-disk format
41
41
42
- - A header appears at the beginning:
42
+ * A header appears at the beginning:
43
43
44
44
4-byte signature: {'B', 'I', 'T', 'M'}
45
45
@@ -48,9 +48,7 @@ MIDXs, both the bit-cache and rev-cache extensions are required.
48
48
of the bitmap index (the same one as JGit).
49
49
50
50
2-byte flags (network byte order)
51
-
52
51
The following flags are supported:
53
-
54
52
- BITMAP_OPT_FULL_DAG (0x1) REQUIRED
55
53
This flag must always be present. It implies that the
56
54
bitmap index has been generated for a packfile or
@@ -60,31 +58,27 @@ MIDXs, both the bit-cache and rev-cache extensions are required.
60
58
requirement for the bitmap index format, also present in
61
59
JGit, that greatly reduces the complexity of the
62
60
implementation.
63
-
64
61
- BITMAP_OPT_HASH_CACHE (0x4)
65
62
If present, the end of the bitmap file contains
66
63
`N` 32-bit name-hash values, one per object in the
67
64
pack/MIDX. The format and meaning of the name-hash is
68
65
described below.
69
66
70
67
4-byte entry count (network byte order)
71
-
72
68
The total count of entries (bitmapped commits) in this bitmap index.
73
69
74
70
20-byte checksum
75
-
76
71
The SHA1 checksum of the pack/MIDX this bitmap index
77
72
belongs to.
78
73
79
- - 4 EWAH bitmaps that act as type indexes
74
+ * 4 EWAH bitmaps that act as type indexes
80
75
81
76
Type indexes are serialized after the hash cache in the shape
82
77
of four EWAH bitmaps stored consecutively (see Appendix A for
83
78
the serialization format of an EWAH bitmap).
84
79
85
80
There is a bitmap for each Git object type, stored in the following
86
81
order:
87
-
88
82
- Commits
89
83
- Trees
90
84
- Blobs
@@ -97,17 +91,17 @@ MIDXs, both the bit-cache and rev-cache extensions are required.
97
91
in a full set (all bits set), and the AND of all 4 bitmaps will
98
92
result in an empty bitmap (no bits set).
99
93
100
- - N entries with compressed bitmaps, one for each indexed commit
94
+ * N entries with compressed bitmaps, one for each indexed commit
101
95
102
96
Where `N` is the total amount of entries in this bitmap index.
103
97
Each entry contains the following:
104
98
105
- - 4-byte object position (network byte order)
99
+ ** 4-byte object position (network byte order)
106
100
The position **in the index for the packfile or
107
101
multi-pack index** where the bitmap for this commit is
108
102
found.
109
103
110
- - 1-byte XOR-offset
104
+ ** 1-byte XOR-offset
111
105
The xor offset used to compress this bitmap. For an entry
112
106
in position `x`, a XOR offset of `y` means that the actual
113
107
bitmap representing this commit is composed by XORing the
@@ -124,12 +118,12 @@ MIDXs, both the bit-cache and rev-cache extensions are required.
124
118
with **previous** bitmaps, not bitmaps that will come afterwards
125
119
in the index.
126
120
127
- - 1-byte flags for this bitmap
121
+ ** 1-byte flags for this bitmap
128
122
At the moment the only available flag is `0x1`, which hints
129
123
that this bitmap can be re-used when rebuilding bitmap indexes
130
124
for the repository.
131
125
132
- - The compressed bitmap itself, see Appendix A.
126
+ ** The compressed bitmap itself, see Appendix A.
133
127
134
128
== Appendix A: Serialization format for an EWAH bitmap
135
129
0 commit comments