summaryrefslogtreecommitdiffstats
path: root/technical
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-02-16 17:32:33 -0800
committerJunio C Hamano <gitster@pobox.com>2022-02-16 17:32:33 -0800
commitf1fc6ca2d27889be2f7829e15054bc8067ae9bc6 (patch)
tree3fb51df8e90ddd23c17c8a61a25df915ca6e7d73 /technical
parent0170485c457d7e861874a761fb76ee8de1a79d89 (diff)
downloadgit-htmldocs-f1fc6ca2d27889be2f7829e15054bc8067ae9bc6.tar.gz
Autogenerated HTML docs for v2.35.1-193-g45fe28
Diffstat (limited to 'technical')
-rw-r--r--technical/multi-pack-index.html9
-rw-r--r--technical/multi-pack-index.txt1
-rw-r--r--technical/pack-format.html17
-rw-r--r--technical/pack-format.txt13
4 files changed, 26 insertions, 14 deletions
diff --git a/technical/multi-pack-index.html b/technical/multi-pack-index.html
index 574fd6257..41c16d409 100644
--- a/technical/multi-pack-index.html
+++ b/technical/multi-pack-index.html
@@ -786,6 +786,13 @@ An offset within the jth packfile for the object.
If large offsets are required, we use another list of large
offsets similar to version 2 pack-indexes.
</p>
+<div class="ulist"><ul>
+<li>
+<p>
+An optional list of objects in pseudo-pack order (used with MIDX bitmaps).
+</p>
+</li>
+</ul></div>
</li>
</ul></div>
<div class="paragraph"><p>Thus, we can provide O(log N) lookup time for any number
@@ -905,7 +912,7 @@ Packfiles can be marked as "special" using empty files that share
<div id="footer">
<div id="footer-text">
Last updated
- 2021-12-10 14:52:03 PST
+ 2022-02-16 17:29:08 PST
</div>
</div>
</body>
diff --git a/technical/multi-pack-index.txt b/technical/multi-pack-index.txt
index b39c69da8..f2221d2b4 100644
--- a/technical/multi-pack-index.txt
+++ b/technical/multi-pack-index.txt
@@ -24,6 +24,7 @@ and their offsets into multiple packfiles. It contains:
** An offset within the jth packfile for the object.
* If large offsets are required, we use another list of large
offsets similar to version 2 pack-indexes.
+- An optional list of objects in pseudo-pack order (used with MIDX bitmaps).
Thus, we can provide O(log N) lookup time for any number
of packfiles.
diff --git a/technical/pack-format.html b/technical/pack-format.html
index f332f12ea..6f99008ae 100644
--- a/technical/pack-format.html
+++ b/technical/pack-format.html
@@ -1273,6 +1273,13 @@ otherwise specified.</code></pre>
<pre><code>[Optional] Object Large Offsets (ID: {'L', 'O', 'F', 'F'})
8-byte offsets into large packfiles.</code></pre>
</div></div>
+<div class="literalblock">
+<div class="content">
+<pre><code>[Optional] Bitmap pack order (ID: {'R', 'I', 'D', 'X'})
+ A list of MIDX positions (one per object in the MIDX, num_objects in
+ total, each a 4-byte unsigned integer in network byte order), sorted
+ according to their relative bitmap/pseudo-pack positions.</code></pre>
+</div></div>
<div class="paragraph"><p>TRAILER:</p></div>
<div class="literalblock">
<div class="content">
@@ -1359,12 +1366,8 @@ Otherwise, <code>pack(o1) = pack(o2)</code>, and the objects are sorted in
<div class="paragraph"><p>In short, a MIDX&#8217;s pseudo-pack is the de-duplicated concatenation of
objects in packs stored by the MIDX, laid out in pack order, and the
packs arranged in MIDX order (with the preferred pack coming first).</p></div>
-<div class="paragraph"><p>Finally, note that the MIDX&#8217;s reverse index is not stored as a chunk in
-the multi-pack-index itself. This is done because the reverse index
-includes the checksum of the pack or MIDX to which it belongs, which
-makes it impossible to write in the MIDX. To avoid races when rewriting
-the MIDX, a MIDX reverse index includes the MIDX&#8217;s checksum in its
-filename (e.g., <code>multi-pack-index-xyz.rev</code>).</p></div>
+<div class="paragraph"><p>The MIDX&#8217;s reverse index is stored in the optional <em>RIDX</em> chunk within
+the MIDX itself.</p></div>
</div>
</div>
</div>
@@ -1372,7 +1375,7 @@ filename (e.g., <code>multi-pack-index-xyz.rev</code>).</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-04-08 14:46:44 PDT
+ 2022-02-16 17:29:08 PST
</div>
</div>
</body>
diff --git a/technical/pack-format.txt b/technical/pack-format.txt
index 8d2f42f29..6d3efb7d1 100644
--- a/technical/pack-format.txt
+++ b/technical/pack-format.txt
@@ -376,6 +376,11 @@ CHUNK DATA:
[Optional] Object Large Offsets (ID: {'L', 'O', 'F', 'F'})
8-byte offsets into large packfiles.
+ [Optional] Bitmap pack order (ID: {'R', 'I', 'D', 'X'})
+ A list of MIDX positions (one per object in the MIDX, num_objects in
+ total, each a 4-byte unsigned integer in network byte order), sorted
+ according to their relative bitmap/pseudo-pack positions.
+
TRAILER:
Index checksum of the above contents.
@@ -456,9 +461,5 @@ In short, a MIDX's pseudo-pack is the de-duplicated concatenation of
objects in packs stored by the MIDX, laid out in pack order, and the
packs arranged in MIDX order (with the preferred pack coming first).
-Finally, note that the MIDX's reverse index is not stored as a chunk in
-the multi-pack-index itself. This is done because the reverse index
-includes the checksum of the pack or MIDX to which it belongs, which
-makes it impossible to write in the MIDX. To avoid races when rewriting
-the MIDX, a MIDX reverse index includes the MIDX's checksum in its
-filename (e.g., `multi-pack-index-xyz.rev`).
+The MIDX's reverse index is stored in the optional 'RIDX' chunk within
+the MIDX itself.