diff options
author | Junio C Hamano <gitster@pobox.com> | 2022-09-05 18:39:12 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2022-09-05 18:39:12 -0700 |
commit | c4f7799fb198cf50c4132036d5c9eb79184ee00b (patch) | |
tree | d45c9bfcd95009139dc61fee3e0a9132d697b1b0 | |
parent | f7f8f21e826283e7a8109e0ae1743ffd5ea5815d (diff) | |
download | git-htmldocs-c4f7799fb198cf50c4132036d5c9eb79184ee00b.tar.gz |
Autogenerated HTML docs for v2.37.3-518-g79f2
-rw-r--r-- | RelNotes/2.38.0.txt | 17 | ||||
-rw-r--r-- | git-config.html | 12 | ||||
-rw-r--r-- | howto/coordinate-embargoed-releases.html | 2 | ||||
-rw-r--r-- | howto/keep-canonical-history-correct.html | 2 | ||||
-rw-r--r-- | howto/maintain-git.html | 2 | ||||
-rw-r--r-- | howto/new-command.html | 2 | ||||
-rw-r--r-- | howto/rebase-from-internal-branch.html | 2 | ||||
-rw-r--r-- | howto/rebuild-from-update-hook.html | 2 | ||||
-rw-r--r-- | howto/recover-corrupted-blob-object.html | 2 | ||||
-rw-r--r-- | howto/recover-corrupted-object-harder.html | 2 | ||||
-rw-r--r-- | howto/revert-a-faulty-merge.html | 2 | ||||
-rw-r--r-- | howto/revert-branch-rebase.html | 2 | ||||
-rw-r--r-- | howto/separating-topic-branches.html | 2 | ||||
-rw-r--r-- | howto/setup-git-server-over-http.html | 2 | ||||
-rw-r--r-- | howto/update-hook-example.html | 2 | ||||
-rw-r--r-- | howto/use-git-daemon.html | 2 | ||||
-rw-r--r-- | howto/using-merge-subtree.html | 2 | ||||
-rw-r--r-- | howto/using-signed-tag-in-pull-request.html | 2 | ||||
-rw-r--r-- | technical/bitmap-format.html | 89 | ||||
-rw-r--r-- | technical/bitmap-format.txt | 39 |
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> <commit_pos, offset, xor_row>
+ 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> <commit_pos, offset, xor_row> triplets
+(sorted in the ascending order of <code>commit_pos</code>). The content of i’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’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. |