summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-09-05 18:39:12 -0700
committerJunio C Hamano <gitster@pobox.com>2022-09-05 18:39:12 -0700
commitc4f7799fb198cf50c4132036d5c9eb79184ee00b (patch)
treed45c9bfcd95009139dc61fee3e0a9132d697b1b0
parentf7f8f21e826283e7a8109e0ae1743ffd5ea5815d (diff)
downloadgit-htmldocs-c4f7799fb198cf50c4132036d5c9eb79184ee00b.tar.gz
Autogenerated HTML docs for v2.37.3-518-g79f2
-rw-r--r--RelNotes/2.38.0.txt17
-rw-r--r--git-config.html12
-rw-r--r--howto/coordinate-embargoed-releases.html2
-rw-r--r--howto/keep-canonical-history-correct.html2
-rw-r--r--howto/maintain-git.html2
-rw-r--r--howto/new-command.html2
-rw-r--r--howto/rebase-from-internal-branch.html2
-rw-r--r--howto/rebuild-from-update-hook.html2
-rw-r--r--howto/recover-corrupted-blob-object.html2
-rw-r--r--howto/recover-corrupted-object-harder.html2
-rw-r--r--howto/revert-a-faulty-merge.html2
-rw-r--r--howto/revert-branch-rebase.html2
-rw-r--r--howto/separating-topic-branches.html2
-rw-r--r--howto/setup-git-server-over-http.html2
-rw-r--r--howto/update-hook-example.html2
-rw-r--r--howto/use-git-daemon.html2
-rw-r--r--howto/using-merge-subtree.html2
-rw-r--r--howto/using-signed-tag-in-pull-request.html2
-rw-r--r--technical/bitmap-format.html89
-rw-r--r--technical/bitmap-format.txt39
20 files changed, 172 insertions, 17 deletions
diff --git a/RelNotes/2.38.0.txt b/RelNotes/2.38.0.txt
index 71e1731dd..f521e930b 100644
--- a/RelNotes/2.38.0.txt
+++ b/RelNotes/2.38.0.txt
@@ -145,6 +145,9 @@ Performance, Internal Implementation, Development Support etc.
* The "subcommand" mode is introduced to parse-options API and update
the command line parser of Git commands with subcommands.
+ * The pack bitmap file gained a bitmap-lookup table to speed up
+ locating the necessary bitmap for a given commit.
+
Fixes since v2.37
-----------------
@@ -307,5 +310,19 @@ Fixes since v2.37
has been corrected.
(merge d3a9295ada en/merge-unstash-only-on-clean-merge later to maint).
+ * Multi-pack index got corrupted when preferred pack changed from one
+ pack to another in a certain way, which has been corrected.
+ (merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).
+
+ * The clean-up of temporary files created via mks_tempfile_dt() was
+ racy and attempted to unlink() the leading directory when signals
+ are involved, which has been corrected.
+ (merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).
+
+ * FreeBSD portability fix for "git maintenance" that spawns "crontab"
+ to schedule tasks.
+ (merge ee69e7884e bc/gc-crontab-fix later to maint).
+
* Other code cleanup, docfix, build fix, etc.
(merge 77b9e85c0f vd/fix-perf-tests later to maint).
+ (merge 0682bc43f5 jk/test-crontab-fixes later to maint).
diff --git a/git-config.html b/git-config.html
index 4e69ece38..7a4a40c93 100644
--- a/git-config.html
+++ b/git-config.html
@@ -8850,6 +8850,18 @@ computed; instead, any namehashes stored in an existing bitmap are
permuted into their appropriate location when writing a new bitmap.</p></div>
</dd>
<dt class="hdlist1">
+pack.writeBitmapLookupTable
+</dt>
+<dd>
+<p>
+ When true, Git will include a "lookup table" section in the
+ bitmap index (if one is written). This table is used to defer
+ loading individual bitmaps as late as possible. This can be
+ beneficial in repositories that have relatively large bitmap
+ indexes. Defaults to false.
+</p>
+</dd>
+<dt class="hdlist1">
pack.writeReverseIndex
</dt>
<dd>
diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html
index 8dd3a0455..32897da96 100644
--- a/howto/coordinate-embargoed-releases.html
+++ b/howto/coordinate-embargoed-releases.html
@@ -873,7 +873,7 @@ Thanks,
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:57 PDT
+ 2022-09-05 18:36:45 PDT
</div>
</div>
</body>
diff --git a/howto/keep-canonical-history-correct.html b/howto/keep-canonical-history-correct.html
index 4847c4f63..5bb11b5e7 100644
--- a/howto/keep-canonical-history-correct.html
+++ b/howto/keep-canonical-history-correct.html
@@ -938,7 +938,7 @@ tip of your <em>master</em> again and redo the two merges:</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:57 PDT
+ 2022-09-05 18:36:44 PDT
</div>
</div>
</body>
diff --git a/howto/maintain-git.html b/howto/maintain-git.html
index bd6c65d22..fd297effc 100644
--- a/howto/maintain-git.html
+++ b/howto/maintain-git.html
@@ -1469,7 +1469,7 @@ $ git update-ref -d $mf/ai/topic</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:57 PDT
+ 2022-09-05 18:36:44 PDT
</div>
</div>
</body>
diff --git a/howto/new-command.html b/howto/new-command.html
index d4c8c3cda..ef652848c 100644
--- a/howto/new-command.html
+++ b/howto/new-command.html
@@ -863,7 +863,7 @@ letter [PATCH 0/n].
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:55 PDT
+ 2022-09-05 18:36:41 PDT
</div>
</div>
</body>
diff --git a/howto/rebase-from-internal-branch.html b/howto/rebase-from-internal-branch.html
index 243a7c598..f368df7e8 100644
--- a/howto/rebase-from-internal-branch.html
+++ b/howto/rebase-from-internal-branch.html
@@ -895,7 +895,7 @@ the #1' commit.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:57 PDT
+ 2022-09-05 18:36:44 PDT
</div>
</div>
</body>
diff --git a/howto/rebuild-from-update-hook.html b/howto/rebuild-from-update-hook.html
index 7f7d72b74..847d0d053 100644
--- a/howto/rebuild-from-update-hook.html
+++ b/howto/rebuild-from-update-hook.html
@@ -847,7 +847,7 @@ This is still crude and does not protect against simultaneous
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:57 PDT
+ 2022-09-05 18:36:44 PDT
</div>
</div>
</body>
diff --git a/howto/recover-corrupted-blob-object.html b/howto/recover-corrupted-blob-object.html
index 523b02981..c652752a6 100644
--- a/howto/recover-corrupted-blob-object.html
+++ b/howto/recover-corrupted-blob-object.html
@@ -880,7 +880,7 @@ thing.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:57 PDT
+ 2022-09-05 18:36:43 PDT
</div>
</div>
</body>
diff --git a/howto/recover-corrupted-object-harder.html b/howto/recover-corrupted-object-harder.html
index a287aec05..799f1aa2b 100644
--- a/howto/recover-corrupted-object-harder.html
+++ b/howto/recover-corrupted-object-harder.html
@@ -1189,7 +1189,7 @@ int main(int argc, char **argv)
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:57 PDT
+ 2022-09-05 18:36:44 PDT
</div>
</div>
</body>
diff --git a/howto/revert-a-faulty-merge.html b/howto/revert-a-faulty-merge.html
index a66fa5f26..1132e4784 100644
--- a/howto/revert-a-faulty-merge.html
+++ b/howto/revert-a-faulty-merge.html
@@ -1025,7 +1025,7 @@ P---o---o---M---x---x---W---x---M2
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:57 PDT
+ 2022-09-05 18:36:43 PDT
</div>
</div>
</body>
diff --git a/howto/revert-branch-rebase.html b/howto/revert-branch-rebase.html
index bf501a71f..e02bd2418 100644
--- a/howto/revert-branch-rebase.html
+++ b/howto/revert-branch-rebase.html
@@ -907,7 +907,7 @@ Committed merge 7fb9b7262a1d1e0a47bbfdcbbcf50ce0635d3f8f
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:55 PDT
+ 2022-09-05 18:36:41 PDT
</div>
</div>
</body>
diff --git a/howto/separating-topic-branches.html b/howto/separating-topic-branches.html
index 9b294f32a..60dcf3eeb 100644
--- a/howto/separating-topic-branches.html
+++ b/howto/separating-topic-branches.html
@@ -841,7 +841,7 @@ o---o"master"</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:56 PDT
+ 2022-09-05 18:36:43 PDT
</div>
</div>
</body>
diff --git a/howto/setup-git-server-over-http.html b/howto/setup-git-server-over-http.html
index 25106e915..7224fe463 100644
--- a/howto/setup-git-server-over-http.html
+++ b/howto/setup-git-server-over-http.html
@@ -1071,7 +1071,7 @@ help diagnosing the problem, but removes security checks.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:56 PDT
+ 2022-09-05 18:36:42 PDT
</div>
</div>
</body>
diff --git a/howto/update-hook-example.html b/howto/update-hook-example.html
index 60cf0a461..451e5d965 100644
--- a/howto/update-hook-example.html
+++ b/howto/update-hook-example.html
@@ -930,7 +930,7 @@ that JC can make non-fast-forward pushes on it.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:56 PDT
+ 2022-09-05 18:36:42 PDT
</div>
</div>
</body>
diff --git a/howto/use-git-daemon.html b/howto/use-git-daemon.html
index 76110f745..e4e9daf51 100644
--- a/howto/use-git-daemon.html
+++ b/howto/use-git-daemon.html
@@ -791,7 +791,7 @@ a good practice to put the paths after a "--" separator.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:56 PDT
+ 2022-09-05 18:36:42 PDT
</div>
</div>
</body>
diff --git a/howto/using-merge-subtree.html b/howto/using-merge-subtree.html
index e0fd5ada8..05a0c23e8 100644
--- a/howto/using-merge-subtree.html
+++ b/howto/using-merge-subtree.html
@@ -848,7 +848,7 @@ Please note that if the other project merges from you, then it will
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:55 PDT
+ 2022-09-05 18:36:41 PDT
</div>
</div>
</body>
diff --git a/howto/using-signed-tag-in-pull-request.html b/howto/using-signed-tag-in-pull-request.html
index b66e7a854..013164cb8 100644
--- a/howto/using-signed-tag-in-pull-request.html
+++ b/howto/using-signed-tag-in-pull-request.html
@@ -952,7 +952,7 @@ as part of the merge commit.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-09-01 13:55:56 PDT
+ 2022-09-05 18:36:42 PDT
</div>
</div>
</body>
diff --git a/technical/bitmap-format.html b/technical/bitmap-format.html
index 064d14f25..3a06697df 100644
--- a/technical/bitmap-format.html
+++ b/technical/bitmap-format.html
@@ -854,6 +854,33 @@ BITMAP_OPT_HASH_CACHE (0x4):
</dd>
</dl></div>
</li>
+<li>
+<p>
+</p>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+BITMAP_OPT_LOOKUP_TABLE (0x10):
+</dt>
+<dd>
+<p>
+ If present, the end of the bitmap file contains a table
+ containing a list of <code>N</code> &lt;commit_pos, offset, xor_row&gt;
+ triplets. The format and meaning of the table is described
+ below.
+</p>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">Unlike the xor_offset used to compress an individual bitmap,
+<code>xor_row</code> stores an <strong>absolute</strong> index into the lookup table, not a location
+relative to the current entry.</td>
+</tr></table>
+</div>
+</dd>
+</dl></div>
+</li>
</ul></div>
</dd>
<dt class="hdlist1">
@@ -1116,12 +1143,72 @@ free to do so, but MUST allocate a new header flag (because comparing
hashes made under two different schemes would be pointless).</p></div>
</div>
</div>
+<div class="sect1">
+<h2 id="_commit_lookup_table">Commit lookup table</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>If the BITMAP_OPT_LOOKUP_TABLE flag is set, the last <code>N * (4 + 8 + 4)</code>
+bytes (preceding the name-hash cache and trailing hash) of the <code>.bitmap</code>
+file contains a lookup table specifying the information needed to get
+the desired bitmap from the entries without parsing previous unnecessary
+bitmaps.</p></div>
+<div class="paragraph"><p>For a <code>.bitmap</code> containing <code>nr_entries</code> reachability bitmaps, the table
+contains a list of <code>nr_entries</code> &lt;commit_pos, offset, xor_row&gt; triplets
+(sorted in the ascending order of <code>commit_pos</code>). The content of i&#8217;th
+triplet is -</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+</p>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+commit_pos (4 byte integer, network byte order):
+</dt>
+<dd>
+<p>
+ It stores the object position of a commit (in the midx or pack
+ index).
+</p>
+</dd>
+</dl></div>
+</li>
+<li>
+<p>
+</p>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+offset (8 byte integer, network byte order):
+</dt>
+<dd>
+<p>
+ The offset from which that commit&#8217;s bitmap can be read.
+</p>
+</dd>
+</dl></div>
+</li>
+<li>
+<p>
+</p>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+xor_row (4 byte integer, network byte order):
+</dt>
+<dd>
+<p>
+ The position of the triplet whose bitmap is used to compress
+ this one, or <code>0xffffffff</code> if no such bitmap exists.
+</p>
+</dd>
+</dl></div>
+</li>
+</ul></div>
+</div>
+</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-07-11 16:06:18 PDT
+ 2022-09-05 18:35:54 PDT
</div>
</div>
</body>
diff --git a/technical/bitmap-format.txt b/technical/bitmap-format.txt
index a85f58f51..c2e652b71 100644
--- a/technical/bitmap-format.txt
+++ b/technical/bitmap-format.txt
@@ -72,6 +72,17 @@ MIDXs, both the bit-cache and rev-cache extensions are required.
pack/MIDX. The format and meaning of the name-hash is
described below.
+ ** {empty}
+ BITMAP_OPT_LOOKUP_TABLE (0x10): :::
+ If present, the end of the bitmap file contains a table
+ containing a list of `N` <commit_pos, offset, xor_row>
+ triplets. The format and meaning of the table is described
+ below.
++
+NOTE: Unlike the xor_offset used to compress an individual bitmap,
+`xor_row` stores an *absolute* index into the lookup table, not a location
+relative to the current entry.
+
4-byte entry count (network byte order): ::
The total count of entries (bitmapped commits) in this bitmap index.
@@ -216,3 +227,31 @@ Note that this hashing scheme is tied to the BITMAP_OPT_HASH_CACHE flag.
If implementations want to choose a different hashing scheme, they are
free to do so, but MUST allocate a new header flag (because comparing
hashes made under two different schemes would be pointless).
+
+Commit lookup table
+-------------------
+
+If the BITMAP_OPT_LOOKUP_TABLE flag is set, the last `N * (4 + 8 + 4)`
+bytes (preceding the name-hash cache and trailing hash) of the `.bitmap`
+file contains a lookup table specifying the information needed to get
+the desired bitmap from the entries without parsing previous unnecessary
+bitmaps.
+
+For a `.bitmap` containing `nr_entries` reachability bitmaps, the table
+contains a list of `nr_entries` <commit_pos, offset, xor_row> triplets
+(sorted in the ascending order of `commit_pos`). The content of i'th
+triplet is -
+
+ * {empty}
+ commit_pos (4 byte integer, network byte order): ::
+ It stores the object position of a commit (in the midx or pack
+ index).
+
+ * {empty}
+ offset (8 byte integer, network byte order): ::
+ The offset from which that commit's bitmap can be read.
+
+ * {empty}
+ xor_row (4 byte integer, network byte order): ::
+ The position of the triplet whose bitmap is used to compress
+ this one, or `0xffffffff` if no such bitmap exists.