summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2021-04-30 15:08:10 +0900
committerJunio C Hamano <gitster@pobox.com>2021-04-30 15:08:10 +0900
commit4078a55a6fb467915a2f03f271d1390b97eabc13 (patch)
tree94f9713738bf23d7a7bce9c87937558570412c71
parent9877648272f630de87aeee2e3a8b7f4ac1ad9c70 (diff)
downloadgit-htmldocs-4078a55a6fb467915a2f03f271d1390b97eabc13.tar.gz
Autogenerated HTML docs for v2.31.1-442-g7e391
-rw-r--r--MyFirstContribution.html2
-rw-r--r--MyFirstObjectWalk.html2
-rw-r--r--RelNotes/2.32.0.txt51
-rw-r--r--SubmittingPatches.html13
-rw-r--r--SubmittingPatches.txt11
-rw-r--r--diff-options.txt20
-rw-r--r--everyday.html2
-rw-r--r--fetch-options.txt5
-rw-r--r--git-add.html2
-rw-r--r--git-am.html2
-rw-r--r--git-annotate.html2
-rw-r--r--git-apply.html2
-rw-r--r--git-archimport.html2
-rw-r--r--git-archive.html2
-rw-r--r--git-bisect.html2
-rw-r--r--git-blame.html2
-rw-r--r--git-branch.html2
-rw-r--r--git-bugreport.html2
-rw-r--r--git-bundle.html2
-rw-r--r--git-cat-file.html2
-rw-r--r--git-check-attr.html2
-rw-r--r--git-check-ignore.html2
-rw-r--r--git-check-mailmap.html2
-rw-r--r--git-check-ref-format.html2
-rw-r--r--git-checkout-index.html2
-rw-r--r--git-checkout.html2
-rw-r--r--git-cherry-pick.html2
-rw-r--r--git-cherry.html2
-rw-r--r--git-citool.html2
-rw-r--r--git-clean.html2
-rw-r--r--git-clone.html2
-rw-r--r--git-column.html2
-rw-r--r--git-commit-graph.html2
-rw-r--r--git-commit-tree.html2
-rw-r--r--git-commit.html2
-rw-r--r--git-config.html52
-rw-r--r--git-count-objects.html2
-rw-r--r--git-credential-cache--daemon.html2
-rw-r--r--git-credential-cache.html2
-rw-r--r--git-credential-store.html2
-rw-r--r--git-credential.html2
-rw-r--r--git-cvsexportcommit.html2
-rw-r--r--git-cvsimport.html2
-rw-r--r--git-cvsserver.html2
-rw-r--r--git-daemon.html2
-rw-r--r--git-describe.html2
-rw-r--r--git-diff-files.html7
-rw-r--r--git-diff-index.html7
-rw-r--r--git-diff-tree.html7
-rw-r--r--git-diff.html7
-rw-r--r--git-difftool.html2
-rw-r--r--git-fast-export.html2
-rw-r--r--git-fast-import.html2
-rw-r--r--git-fetch-pack.html2
-rw-r--r--git-fetch.html12
-rw-r--r--git-filter-branch.html2
-rw-r--r--git-fmt-merge-msg.html2
-rw-r--r--git-for-each-ref.html2
-rw-r--r--git-for-each-repo.html2
-rw-r--r--git-format-patch.html2
-rw-r--r--git-fsck-objects.html2
-rw-r--r--git-fsck.html2
-rw-r--r--git-gc.html2
-rw-r--r--git-get-tar-commit-id.html2
-rw-r--r--git-grep.html2
-rw-r--r--git-gui.html2
-rw-r--r--git-hash-object.html2
-rw-r--r--git-help.html2
-rw-r--r--git-http-backend.html2
-rw-r--r--git-http-fetch.html2
-rw-r--r--git-http-push.html2
-rw-r--r--git-imap-send.html2
-rw-r--r--git-index-pack.html2
-rw-r--r--git-init-db.html2
-rw-r--r--git-init.html2
-rw-r--r--git-instaweb.html2
-rw-r--r--git-interpret-trailers.html2
-rw-r--r--git-log.html35
-rw-r--r--git-ls-files.html2
-rw-r--r--git-ls-remote.html2
-rw-r--r--git-ls-tree.html2
-rw-r--r--git-mailinfo.html2
-rw-r--r--git-mailsplit.html2
-rw-r--r--git-maintenance.html8
-rw-r--r--git-maintenance.txt6
-rw-r--r--git-merge-base.html2
-rw-r--r--git-merge-file.html2
-rw-r--r--git-merge-index.html2
-rw-r--r--git-merge-one-file.html2
-rw-r--r--git-merge-tree.html2
-rw-r--r--git-merge.html2
-rw-r--r--git-mergetool--lib.html2
-rw-r--r--git-mergetool.html2
-rw-r--r--git-mktag.html2
-rw-r--r--git-mktree.html2
-rw-r--r--git-multi-pack-index.html2
-rw-r--r--git-mv.html2
-rw-r--r--git-name-rev.html2
-rw-r--r--git-notes.html2
-rw-r--r--git-p4.html2
-rw-r--r--git-pack-objects.html2
-rw-r--r--git-pack-redundant.html2
-rw-r--r--git-pack-refs.html2
-rw-r--r--git-patch-id.html2
-rw-r--r--git-prune-packed.html2
-rw-r--r--git-prune.html2
-rw-r--r--git-pull.html12
-rw-r--r--git-push.html2
-rw-r--r--git-quiltimport.html2
-rw-r--r--git-range-diff.html2
-rw-r--r--git-read-tree.html2
-rw-r--r--git-rebase.html2
-rw-r--r--git-receive-pack.html2
-rw-r--r--git-reflog.html2
-rw-r--r--git-remote-ext.html2
-rw-r--r--git-remote-fd.html2
-rw-r--r--git-remote-helpers.html2
-rw-r--r--git-remote.html2
-rw-r--r--git-repack.html2
-rw-r--r--git-replace.html2
-rw-r--r--git-request-pull.html2
-rw-r--r--git-rerere.html2
-rw-r--r--git-reset.html2
-rw-r--r--git-restore.html2
-rw-r--r--git-rev-list.html2
-rw-r--r--git-rev-parse.html2
-rw-r--r--git-revert.html2
-rw-r--r--git-rm.html2
-rw-r--r--git-send-email.html2
-rw-r--r--git-send-pack.html2
-rw-r--r--git-sh-i18n--envsubst.html2
-rw-r--r--git-sh-i18n.html2
-rw-r--r--git-sh-setup.html2
-rw-r--r--git-shell.html2
-rw-r--r--git-shortlog.html2
-rw-r--r--git-show-branch.html2
-rw-r--r--git-show-index.html2
-rw-r--r--git-show-ref.html2
-rw-r--r--git-show.html35
-rw-r--r--git-sparse-checkout.html14
-rw-r--r--git-sparse-checkout.txt14
-rw-r--r--git-stage.html2
-rw-r--r--git-stash.html2
-rw-r--r--git-status.html2
-rw-r--r--git-stripspace.html2
-rw-r--r--git-submodule.html2
-rw-r--r--git-svn.html2
-rw-r--r--git-switch.html2
-rw-r--r--git-symbolic-ref.html2
-rw-r--r--git-tag.html2
-rw-r--r--git-unpack-file.html2
-rw-r--r--git-unpack-objects.html2
-rw-r--r--git-update-index.html2
-rw-r--r--git-update-ref.html2
-rw-r--r--git-update-server-info.html2
-rw-r--r--git-upload-archive.html2
-rw-r--r--git-upload-pack.html2
-rw-r--r--git-var.html2
-rw-r--r--git-verify-commit.html2
-rw-r--r--git-verify-pack.html2
-rw-r--r--git-verify-tag.html2
-rw-r--r--git-web--browse.html2
-rw-r--r--git-whatchanged.html2
-rw-r--r--git-worktree.html2
-rw-r--r--git-write-tree.html2
-rw-r--r--git.html2
-rw-r--r--gitattributes.html7
-rw-r--r--gitattributes.txt2
-rw-r--r--gitcli.html2
-rw-r--r--gitcore-tutorial.html2
-rw-r--r--gitcredentials.html2
-rw-r--r--gitcvs-migration.html2
-rw-r--r--gitdiffcore.html2
-rw-r--r--giteveryday.html2
-rw-r--r--gitfaq.html2
-rw-r--r--gitglossary.html2
-rw-r--r--githooks.html2
-rw-r--r--gitignore.html2
-rw-r--r--gitk.html2
-rw-r--r--gitmailmap.html2
-rw-r--r--gitmodules.html2
-rw-r--r--gitnamespaces.html2
-rw-r--r--gitremote-helpers.html2
-rw-r--r--gitrepository-layout.html2
-rw-r--r--gitrevisions.html2
-rw-r--r--gitsubmodules.html2
-rw-r--r--gittutorial-2.html2
-rw-r--r--gittutorial.html2
-rw-r--r--gitweb.conf.html2
-rw-r--r--gitweb.html2
-rw-r--r--gitworkflows.html2
-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/api-error-handling.html14
-rw-r--r--technical/api-error-handling.txt10
-rw-r--r--technical/api-index.html2
-rw-r--r--technical/api-merge.html2
-rw-r--r--technical/api-parse-options.html2
-rw-r--r--technical/api-simple-ipc.html2
-rw-r--r--technical/api-trace2.html4
-rw-r--r--technical/api-trace2.txt2
-rw-r--r--technical/hash-function-transition.html2
-rw-r--r--technical/http-protocol.html2
-rw-r--r--technical/index-format.html28
-rw-r--r--technical/index-format.txt19
-rw-r--r--technical/long-running-process-protocol.html2
-rw-r--r--technical/multi-pack-index.html2
-rw-r--r--technical/pack-format.html2
-rw-r--r--technical/pack-heuristics.html2
-rw-r--r--technical/pack-protocol.html2
-rw-r--r--technical/parallel-checkout.html1082
-rw-r--r--technical/parallel-checkout.txt270
-rw-r--r--technical/partial-clone.html2
-rw-r--r--technical/protocol-capabilities.html2
-rw-r--r--technical/protocol-common.html2
-rw-r--r--technical/protocol-v2.html2
-rw-r--r--technical/racy-git.html2
-rw-r--r--technical/reftable.html34
-rw-r--r--technical/reftable.txt9
-rw-r--r--technical/send-pack-pipeline.html2
-rw-r--r--technical/shallow.html2
-rw-r--r--technical/signature-format.html2
-rw-r--r--technical/sparse-index.txt208
-rw-r--r--technical/trivial-merge.html2
238 files changed, 2142 insertions, 277 deletions
diff --git a/MyFirstContribution.html b/MyFirstContribution.html
index 4d3d0c423..256cc3f98 100644
--- a/MyFirstContribution.html
+++ b/MyFirstContribution.html
@@ -1912,7 +1912,7 @@ should generate your diffs from <code>&lt;topic&gt;..&lt;mybranch&gt;</code> and
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-10 15:27:55 PST
+ 2021-02-11 08:27:55 JST
</div>
</div>
</body>
diff --git a/MyFirstObjectWalk.html b/MyFirstObjectWalk.html
index 602f9268d..bec13b7fb 100644
--- a/MyFirstObjectWalk.html
+++ b/MyFirstObjectWalk.html
@@ -1717,7 +1717,7 @@ Changed the display order of the filtered object walk
<div id="footer">
<div id="footer-text">
Last updated
- 2020-12-08 16:10:07 PST
+ 2020-12-09 09:10:07 JST
</div>
</div>
</body>
diff --git a/RelNotes/2.32.0.txt b/RelNotes/2.32.0.txt
index c746ad11c..f4e5191ae 100644
--- a/RelNotes/2.32.0.txt
+++ b/RelNotes/2.32.0.txt
@@ -75,6 +75,11 @@ UI, Workflows & Features
* The command line completion (in contrib/) has learned that
CHERRY_PICK_HEAD is a possible pseudo-ref.
+ * Userdiff patterns for "Scheme" has been added.
+
+ * "git log" learned "--diff-merges=<style>" option, with an
+ associated configuration variable log.diffMerges.
+
Performance, Internal Implementation, Development Support etc.
@@ -126,6 +131,24 @@ Performance, Internal Implementation, Development Support etc.
primarily to enhance its test coverage (the strategy has been
available as an explicit "-s ort" choice).
+ * A bit of code clean-up and a lot of test clean-up around userdiff
+ area.
+
+ * Handling of "promisor packs" that allows certain objects to be
+ missing and lazily retrievable has been optimized (a bit).
+
+ * When packet_write() fails, we gave an extra error message
+ unnecessarily, which has been corrected.
+
+ * The checkout machinery has been taught to perform the actual
+ write-out of the files in parallel when able.
+
+ * Show errno in the trace output in the error codepath that calls
+ read_raw_ref method.
+
+ * Effort to make the command line completion (in contrib/) safe with
+ "set -u" continues.
+
Fixes since v2.31
-----------------
@@ -215,6 +238,30 @@ Fixes since v2.31
option.
(merge c5c0548d79 vs/completion-with-set-u later to maint).
+ * When "git pack-objects" makes a literal copy of a part of existing
+ packfile using the reachability bitmaps, its update to the progress
+ meter was broken.
+ (merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).
+
+ * The dependencies for config-list.h and command-list.h were broken
+ when the former was split out of the latter, which has been
+ corrected.
+ (merge 56550ea718 sg/bugreport-fixes later to maint).
+
+ * "git push --quiet --set-upstream" was not quiet when setting the
+ upstream branch configuration, which has been corrected.
+ (merge f3cce896a8 ow/push-quiet-set-upstream later to maint).
+
+ * The prefetch task in "git maintenance" assumed that "git fetch"
+ from any remote would fetch all its local branches, which would
+ fetch too much if the user is interested in only a subset of
+ branches there.
+ (merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).
+
+ * Clarify that pathnames recorded in Git trees are most often (but
+ not necessarily) encoded in UTF-8.
+ (merge 9364bf465d ab/pathname-encoding-doc later to maint).
+
* Other code cleanup, docfix, build fix, etc.
(merge f451960708 dl/cat-file-doc-cleanup later to maint).
(merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
@@ -229,3 +276,7 @@ Fixes since v2.31
(merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
(merge fc12b6fdde fm/user-manual-use-preface later to maint).
(merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
+ (merge 61a7660516 hn/reftable-tables-doc-update later to maint).
+ (merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
+ (merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
+ (merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
diff --git a/SubmittingPatches.html b/SubmittingPatches.html
index 9ef70702a..f4f59235a 100644
--- a/SubmittingPatches.html
+++ b/SubmittingPatches.html
@@ -862,10 +862,13 @@ githooks.txt: improve the intro section
</ul></div>
<div class="paragraph"><p>If in doubt which identifier to use, run <code>git log --no-merges</code> on the
files you are modifying to see the current conventions.</p></div>
-<div class="paragraph" id="summary-section"><p>It&#8217;s customary to start the remainder of the first line after "area: "
-with a lower-case letter. E.g. "doc: clarify&#8230;", not "doc:
-Clarify&#8230;", or "githooks.txt: improve&#8230;", not "githooks.txt:
-Improve&#8230;".</p></div>
+<div class="paragraph" id="summary-section"><p>The title sentence after the "area:" prefix omits the full stop at the
+end, and its first word is not capitalized unless there is a reason to
+capitalize it other than because it is the first word in the sentence.
+E.g. "doc: clarify&#8230;", not "doc: Clarify&#8230;", or "githooks.txt:
+improve&#8230;", not "githooks.txt: Improve&#8230;". But "refs: HEAD is also
+treated as a ref" is correct, as we spell <code>HEAD</code> in all caps even when
+it appears in the middle of a sentence.</p></div>
<div class="paragraph" id="meaningful-message"><p>The body should provide a meaningful commit message, which:</p></div>
<div class="olist arabic"><ol class="arabic">
<li>
@@ -1393,7 +1396,7 @@ this problem around.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-17 15:51:21 PDT
+ 2021-04-30 15:03:36 JST
</div>
</div>
</body>
diff --git a/SubmittingPatches.txt b/SubmittingPatches.txt
index 0452db2e6..55287d72e 100644
--- a/SubmittingPatches.txt
+++ b/SubmittingPatches.txt
@@ -117,10 +117,13 @@ If in doubt which identifier to use, run `git log --no-merges` on the
files you are modifying to see the current conventions.
[[summary-section]]
-It's customary to start the remainder of the first line after "area: "
-with a lower-case letter. E.g. "doc: clarify...", not "doc:
-Clarify...", or "githooks.txt: improve...", not "githooks.txt:
-Improve...".
+The title sentence after the "area:" prefix omits the full stop at the
+end, and its first word is not capitalized unless there is a reason to
+capitalize it other than because it is the first word in the sentence.
+E.g. "doc: clarify...", not "doc: Clarify...", or "githooks.txt:
+improve...", not "githooks.txt: Improve...". But "refs: HEAD is also
+treated as a ref" is correct, as we spell `HEAD` in all caps even when
+it appears in the middle of a sentence.
[[meaningful-message]]
The body should provide a meaningful commit message, which:
diff --git a/diff-options.txt b/diff-options.txt
index aa2b5c11f..530d11591 100644
--- a/diff-options.txt
+++ b/diff-options.txt
@@ -34,7 +34,7 @@ endif::git-diff[]
endif::git-format-patch[]
ifdef::git-log[]
---diff-merges=(off|none|first-parent|1|separate|m|combined|c|dense-combined|cc)::
+--diff-merges=(off|none|on|first-parent|1|separate|m|combined|c|dense-combined|cc)::
--no-diff-merges::
Specify diff format to be used for merge commits. Default is
{diff-merges-default} unless `--first-parent` is in use, in which case
@@ -45,17 +45,24 @@ ifdef::git-log[]
Disable output of diffs for merge commits. Useful to override
implied value.
+
+--diff-merges=on:::
+--diff-merges=m:::
+-m:::
+ This option makes diff output for merge commits to be shown in
+ the default format. `-m` will produce the output only if `-p`
+ is given as well. The default format could be changed using
+ `log.diffMerges` configuration parameter, which default value
+ is `separate`.
++
--diff-merges=first-parent:::
--diff-merges=1:::
This option makes merge commits show the full diff with
respect to the first parent only.
+
--diff-merges=separate:::
---diff-merges=m:::
--m:::
This makes merge commits show the full diff with respect to
each of the parents. Separate log entry and diff is generated
- for each parent. `-m` doesn't produce any output without `-p`.
+ for each parent.
+
--diff-merges=combined:::
--diff-merges=c:::
@@ -293,11 +300,14 @@ explained for the configuration variable `core.quotePath` (see
linkgit:git-config[1]).
--name-only::
- Show only names of changed files.
+ Show only names of changed files. The file names are often encoded in UTF-8.
+ For more information see the discussion about encoding in the linkgit:git-log[1]
+ manual page.
--name-status::
Show only names and status of changed files. See the description
of the `--diff-filter` option on what the status letters mean.
+ Just like `--name-only` the file names are often encoded in UTF-8.
--submodule[=<format>]::
Specify how differences in submodules are shown. When specifying
diff --git a/everyday.html b/everyday.html
index 171f2bec1..0c67470df 100644
--- a/everyday.html
+++ b/everyday.html
@@ -750,7 +750,7 @@ link you clicked to get here.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2016-05-17 15:26:41 PDT
+ 2016-05-18 07:26:41 JST
</div>
</div>
</body>
diff --git a/fetch-options.txt b/fetch-options.txt
index 07783deee..9e7b4e189 100644
--- a/fetch-options.txt
+++ b/fetch-options.txt
@@ -110,6 +110,11 @@ ifndef::git-pull[]
setting `fetch.writeCommitGraph`.
endif::git-pull[]
+--prefetch::
+ Modify the configured refspec to place all refs into the
+ `refs/prefetch/` namespace. See the `prefetch` task in
+ linkgit:git-maintenance[1].
+
-p::
--prune::
Before fetching, remove any remote-tracking references that no
diff --git a/git-add.html b/git-add.html
index 008a001fb..26a25289d 100644
--- a/git-add.html
+++ b/git-add.html
@@ -1375,7 +1375,7 @@ modifying the contents of context or removal lines
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-am.html b/git-am.html
index d15e32b83..89b62e432 100644
--- a/git-am.html
+++ b/git-am.html
@@ -1198,7 +1198,7 @@ information.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-25 17:29:29 PST
+ 2021-02-26 10:29:29 JST
</div>
</div>
</body>
diff --git a/git-annotate.html b/git-annotate.html
index 466b2d7cb..5df2facda 100644
--- a/git-annotate.html
+++ b/git-annotate.html
@@ -1070,7 +1070,7 @@ take effect.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-apply.html b/git-apply.html
index f7a3cd87a..3f9ab406f 100644
--- a/git-apply.html
+++ b/git-apply.html
@@ -1221,7 +1221,7 @@ subdirectory is checked and (if possible) updated.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-04-15 14:08:03 PDT
+ 2021-04-16 06:08:03 JST
</div>
</div>
</body>
diff --git a/git-archimport.html b/git-archimport.html
index db7a8416c..6aac06b6e 100644
--- a/git-archimport.html
+++ b/git-archimport.html
@@ -905,7 +905,7 @@ patches that have been traded out-of-sequence between the branches.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-archive.html b/git-archive.html
index f2dd90a8c..41ecef3d0 100644
--- a/git-archive.html
+++ b/git-archive.html
@@ -1106,7 +1106,7 @@ while archiving any tree in your <code>$GIT_DIR/info/attributes</code> file.</p>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-10-05 15:17:53 PDT
+ 2020-10-06 07:17:53 JST
</div>
</div>
</body>
diff --git a/git-bisect.html b/git-bisect.html
index 2c963dc00..229244459 100644
--- a/git-bisect.html
+++ b/git-bisect.html
@@ -1240,7 +1240,7 @@ help</code> or <code>git bisect -h</code> to get a long usage description.</p></
<div id="footer">
<div id="footer-text">
Last updated
- 2020-09-03 13:19:53 PDT
+ 2020-09-04 05:19:53 JST
</div>
</div>
</body>
diff --git a/git-blame.html b/git-blame.html
index 796138435..dff2c14cc 100644
--- a/git-blame.html
+++ b/git-blame.html
@@ -1365,7 +1365,7 @@ commit commentary), a blame viewer will not care.</td>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-01-25 15:29:19 PST
+ 2021-01-26 08:29:19 JST
</div>
</div>
</body>
diff --git a/git-branch.html b/git-branch.html
index 455198c69..c8ee1f6fe 100644
--- a/git-branch.html
+++ b/git-branch.html
@@ -1397,7 +1397,7 @@ a branch?&#8221;</a> in the Git User&#8217;s Manual.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-25 17:29:29 PST
+ 2021-02-26 10:29:29 JST
</div>
</div>
</body>
diff --git a/git-bugreport.html b/git-bugreport.html
index caf04f5ce..92482e850 100644
--- a/git-bugreport.html
+++ b/git-bugreport.html
@@ -856,7 +856,7 @@ the kind of information listed above when manually asking for help.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-06-08 18:30:54 PDT
+ 2020-06-09 10:30:54 JST
</div>
</div>
</body>
diff --git a/git-bundle.html b/git-bundle.html
index a93337548..9ce142573 100644
--- a/git-bundle.html
+++ b/git-bundle.html
@@ -1046,7 +1046,7 @@ references when fetching:</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-08-11 18:39:25 PDT
+ 2020-08-12 10:39:25 JST
</div>
</div>
</body>
diff --git a/git-cat-file.html b/git-cat-file.html
index 93762990a..45d717def 100644
--- a/git-cat-file.html
+++ b/git-cat-file.html
@@ -1186,7 +1186,7 @@ will be reported.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-22 14:17:33 PDT
+ 2021-03-23 06:17:33 JST
</div>
</div>
</body>
diff --git a/git-check-attr.html b/git-check-attr.html
index 731e57d14..c4c38fe6f 100644
--- a/git-check-attr.html
+++ b/git-check-attr.html
@@ -960,7 +960,7 @@ README: caveat: unspecified</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-check-ignore.html b/git-check-ignore.html
index 0b792ee81..8c3f2f54e 100644
--- a/git-check-ignore.html
+++ b/git-check-ignore.html
@@ -924,7 +924,7 @@ buffer.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-check-mailmap.html b/git-check-mailmap.html
index db4d1bd8b..7bf7df549 100644
--- a/git-check-mailmap.html
+++ b/git-check-mailmap.html
@@ -811,7 +811,7 @@ to specify a custom <code>.mailmap</code> target file or object.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-01-25 15:29:19 PST
+ 2021-01-26 08:29:19 JST
</div>
</div>
</body>
diff --git a/git-check-ref-format.html b/git-check-ref-format.html
index c721c116e..bb6ed365f 100644
--- a/git-check-ref-format.html
+++ b/git-check-ref-format.html
@@ -963,7 +963,7 @@ Determine the reference name to use for a new branch:
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-checkout-index.html b/git-checkout-index.html
index 291b33e96..160aa1fd8 100644
--- a/git-checkout-index.html
+++ b/git-checkout-index.html
@@ -1009,7 +1009,7 @@ into the file <code>.merged-Makefile</code>.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/git-checkout.html b/git-checkout.html
index 4afa59e7e..b3f96d3a0 100644
--- a/git-checkout.html
+++ b/git-checkout.html
@@ -1560,7 +1560,7 @@ $ git add frotz</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-10-27 15:58:27 PDT
+ 2020-10-28 07:58:27 JST
</div>
</div>
</body>
diff --git a/git-cherry-pick.html b/git-cherry-pick.html
index 4390f65cd..3527697d7 100644
--- a/git-cherry-pick.html
+++ b/git-cherry-pick.html
@@ -1212,7 +1212,7 @@ try to apply the change introduced by <code>topic^</code> again,
<div id="footer">
<div id="footer-text">
Last updated
- 2020-11-02 14:02:22 PST
+ 2020-11-03 07:02:22 JST
</div>
</div>
</body>
diff --git a/git-cherry.html b/git-cherry.html
index 4dcf809b3..4ec5d2b59 100644
--- a/git-cherry.html
+++ b/git-cherry.html
@@ -915,7 +915,7 @@ between <code>base</code> and <code>topic</code>:</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2013-12-12 16:55:14 PST
+ 2013-12-13 09:55:14 JST
</div>
</div>
</body>
diff --git a/git-citool.html b/git-citool.html
index 846b53aab..5bd454eea 100644
--- a/git-citool.html
+++ b/git-citool.html
@@ -776,7 +776,7 @@ See <a href="git-gui.html">git-gui(1)</a> for more details.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/git-clean.html b/git-clean.html
index bcd2c6ad2..f65917044 100644
--- a/git-clean.html
+++ b/git-clean.html
@@ -973,7 +973,7 @@ help
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-clone.html b/git-clone.html
index 0acf3e828..56f36da0f 100644
--- a/git-clone.html
+++ b/git-clone.html
@@ -1430,7 +1430,7 @@ Create a bare repository to publish your changes to the public:
<div id="footer">
<div id="footer-text">
Last updated
- 2021-04-08 14:45:29 PDT
+ 2021-04-09 06:45:29 JST
</div>
</div>
</body>
diff --git a/git-column.html b/git-column.html
index b36d79d10..e8b1ec3e1 100644
--- a/git-column.html
+++ b/git-column.html
@@ -873,7 +873,7 @@ v2.4.8 v2.4.9</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-commit-graph.html b/git-commit-graph.html
index de21e2ae7..a087d1dcd 100644
--- a/git-commit-graph.html
+++ b/git-commit-graph.html
@@ -940,7 +940,7 @@ Write a commit-graph file containing all commits in the current
<div id="footer">
<div id="footer-text">
Last updated
- 2020-11-02 14:02:22 PST
+ 2020-11-03 07:02:22 JST
</div>
</div>
</body>
diff --git a/git-commit-tree.html b/git-commit-tree.html
index dadb3d61d..659248af5 100644
--- a/git-commit-tree.html
+++ b/git-commit-tree.html
@@ -1029,7 +1029,7 @@ reversible operation.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-04-22 14:37:28 PDT
+ 2020-04-23 06:37:28 JST
</div>
</div>
</body>
diff --git a/git-commit.html b/git-commit.html
index 6b6c0e418..db33aaa62 100644
--- a/git-commit.html
+++ b/git-commit.html
@@ -1780,7 +1780,7 @@ information.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-04-07 17:16:19 PDT
+ 2021-04-08 09:16:19 JST
</div>
</div>
</body>
diff --git a/git-config.html b/git-config.html
index 9b29bc85a..6eecdd531 100644
--- a/git-config.html
+++ b/git-config.html
@@ -3430,6 +3430,36 @@ checkout.guess
</p>
</dd>
<dt class="hdlist1">
+checkout.workers
+</dt>
+<dd>
+<p>
+ The number of parallel workers to use when updating the working tree.
+ The default is one, i.e. sequential execution. If set to a value less
+ than one, Git will use as many workers as the number of logical cores
+ available. This setting and <code>checkout.thresholdForParallelism</code> affect
+ all commands that perform checkout. E.g. checkout, clone, reset,
+ sparse-checkout, etc.
+</p>
+<div class="paragraph"><p>Note: parallel checkout usually delivers better performance for repositories
+located on SSDs or over NFS. For repositories on spinning disks and/or machines
+with a small number of cores, the default sequential checkout often performs
+better. The size and compression level of a repository might also influence how
+well the parallel version performs.</p></div>
+</dd>
+<dt class="hdlist1">
+checkout.thresholdForParallelism
+</dt>
+<dd>
+<p>
+ When running parallel checkout with a small number of files, the cost
+ of subprocess spawning and inter-process communication might outweigh
+ the parallelization gains. This setting allows to define the minimum
+ number of files for which parallel checkout should be attempted. The
+ default is 100.
+</p>
+</dd>
+<dt class="hdlist1">
clean.requireForce
</dt>
<dd>
@@ -6819,6 +6849,16 @@ index.recordOffsetTable
</p>
</dd>
<dt class="hdlist1">
+index.sparse
+</dt>
+<dd>
+<p>
+ When enabled, write the index using sparse-directory entries. This
+ has no effect unless <code>core.sparseCheckout</code> and
+ <code>core.sparseCheckoutCone</code> are both enabled. Defaults to <em>false</em>.
+</p>
+</dd>
+<dt class="hdlist1">
index.threads
</dt>
<dd>
@@ -6979,6 +7019,16 @@ log.excludeDecoration
</p>
</dd>
<dt class="hdlist1">
+log.diffMerges
+</dt>
+<dd>
+<p>
+ Set default diff format to be used for merge commits. See
+ <code>--diff-merges</code> in <a href="git-log.html">git-log(1)</a> for details.
+ Defaults to <code>separate</code>.
+</p>
+</dd>
+<dt class="hdlist1">
log.follow
</dt>
<dd>
@@ -10307,7 +10357,7 @@ looks like</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-01-25 15:29:19 PST
+ 2021-01-26 08:29:19 JST
</div>
</div>
</body>
diff --git a/git-count-objects.html b/git-count-objects.html
index 8a2f46e2c..ce501f8f6 100644
--- a/git-count-objects.html
+++ b/git-count-objects.html
@@ -815,7 +815,7 @@ Print sizes in human readable format
<div id="footer">
<div id="footer-text">
Last updated
- 2016-10-17 15:22:26 PDT
+ 2016-10-18 07:22:26 JST
</div>
</div>
</body>
diff --git a/git-credential-cache--daemon.html b/git-credential-cache--daemon.html
index adcefeca4..4abd8d951 100644
--- a/git-credential-cache--daemon.html
+++ b/git-credential-cache--daemon.html
@@ -786,7 +786,7 @@ begun listening for clients.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2014-09-26 15:36:58 PDT
+ 2014-09-27 07:36:58 JST
</div>
</div>
</body>
diff --git a/git-credential-cache.html b/git-credential-cache.html
index b7129542d..b70c45f75 100644
--- a/git-credential-cache.html
+++ b/git-credential-cache.html
@@ -842,7 +842,7 @@ variable (this example drops the cache time to 5 minutes):</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-credential-store.html b/git-credential-store.html
index a506e17cc..04bf7c8e3 100644
--- a/git-credential-store.html
+++ b/git-credential-store.html
@@ -882,7 +882,7 @@ for more information.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-05-08 15:24:24 PDT
+ 2020-05-09 07:24:24 JST
</div>
</div>
</body>
diff --git a/git-credential.html b/git-credential.html
index 525cd660e..e6ed8551d 100644
--- a/git-credential.html
+++ b/git-credential.html
@@ -940,7 +940,7 @@ username in the example above) will be left unset.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-05-26 11:29:03 PDT
+ 2020-05-27 03:29:03 JST
</div>
</div>
</body>
diff --git a/git-cvsexportcommit.html b/git-cvsexportcommit.html
index 3b74804ce..1c8cc477f 100644
--- a/git-cvsexportcommit.html
+++ b/git-cvsexportcommit.html
@@ -951,7 +951,7 @@ $ git cherry cvshead myhead | sed -n 's/^+ //p' | xargs -l1 git cvsexportcommit
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/git-cvsimport.html b/git-cvsimport.html
index 780ed1bb8..e6c31e8c2 100644
--- a/git-cvsimport.html
+++ b/git-cvsimport.html
@@ -1107,7 +1107,7 @@ cvs2git (part of cvs2svn), <code>http://subversion.apache.org/</code>
<div id="footer">
<div id="footer-text">
Last updated
- 2016-09-26 16:43:51 PDT
+ 2016-09-27 08:43:51 JST
</div>
</div>
</body>
diff --git a/git-cvsserver.html b/git-cvsserver.html
index 46260426c..326ef5d16 100644
--- a/git-cvsserver.html
+++ b/git-cvsserver.html
@@ -1313,7 +1313,7 @@ and <code>gitcvs.allBinary</code> to "guess".</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-daemon.html b/git-daemon.html
index 3db96108a..e51fd0e89 100644
--- a/git-daemon.html
+++ b/git-daemon.html
@@ -1280,7 +1280,7 @@ services are performed.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-describe.html b/git-describe.html
index cfaf589d8..206ff9c61 100644
--- a/git-describe.html
+++ b/git-describe.html
@@ -1038,7 +1038,7 @@ tag being favorable.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-diff-files.html b/git-diff-files.html
index 3c9ea32b8..072671cc1 100644
--- a/git-diff-files.html
+++ b/git-diff-files.html
@@ -1142,7 +1142,9 @@ explained for the configuration variable <code>core.quotePath</code> (see
</dt>
<dd>
<p>
- Show only names of changed files.
+ Show only names of changed files. The file names are often encoded in UTF-8.
+ For more information see the discussion about encoding in the <a href="git-log.html">git-log(1)</a>
+ manual page.
</p>
</dd>
<dt class="hdlist1">
@@ -1152,6 +1154,7 @@ explained for the configuration variable <code>core.quotePath</code> (see
<p>
Show only names and status of changed files. See the description
of the <code>--diff-filter</code> option on what the status letters mean.
+ Just like <code>--name-only</code> the file names are often encoded in UTF-8.
</p>
</dd>
<dt class="hdlist1">
@@ -2689,7 +2692,7 @@ the pathname, but if that is <code>NUL</code>, the record will show two paths.</
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/git-diff-index.html b/git-diff-index.html
index 6bae1816a..f78cd1afb 100644
--- a/git-diff-index.html
+++ b/git-diff-index.html
@@ -1143,7 +1143,9 @@ explained for the configuration variable <code>core.quotePath</code> (see
</dt>
<dd>
<p>
- Show only names of changed files.
+ Show only names of changed files. The file names are often encoded in UTF-8.
+ For more information see the discussion about encoding in the <a href="git-log.html">git-log(1)</a>
+ manual page.
</p>
</dd>
<dt class="hdlist1">
@@ -1153,6 +1155,7 @@ explained for the configuration variable <code>core.quotePath</code> (see
<p>
Show only names and status of changed files. See the description
of the <code>--diff-filter</code> option on what the status letters mean.
+ Just like <code>--name-only</code> the file names are often encoded in UTF-8.
</p>
</dd>
<dt class="hdlist1">
@@ -2783,7 +2786,7 @@ always have the special all-zero sha1.</td>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-11-02 14:02:22 PST
+ 2020-11-03 07:02:22 JST
</div>
</div>
</body>
diff --git a/git-diff-tree.html b/git-diff-tree.html
index fc76e7b03..4d144de26 100644
--- a/git-diff-tree.html
+++ b/git-diff-tree.html
@@ -1144,7 +1144,9 @@ explained for the configuration variable <code>core.quotePath</code> (see
</dt>
<dd>
<p>
- Show only names of changed files.
+ Show only names of changed files. The file names are often encoded in UTF-8.
+ For more information see the discussion about encoding in the <a href="git-log.html">git-log(1)</a>
+ manual page.
</p>
</dd>
<dt class="hdlist1">
@@ -1154,6 +1156,7 @@ explained for the configuration variable <code>core.quotePath</code> (see
<p>
Show only names and status of changed files. See the description
of the <code>--diff-filter</code> option on what the status letters mean.
+ Just like <code>--name-only</code> the file names are often encoded in UTF-8.
</p>
</dd>
<dt class="hdlist1">
@@ -3926,7 +3929,7 @@ the pathname, but if that is <code>NUL</code>, the record will show two paths.</
<div id="footer">
<div id="footer-text">
Last updated
- 2020-11-02 14:02:22 PST
+ 2020-11-03 07:02:22 JST
</div>
</div>
</body>
diff --git a/git-diff.html b/git-diff.html
index 2320b66df..7cbaef3c2 100644
--- a/git-diff.html
+++ b/git-diff.html
@@ -1272,7 +1272,9 @@ explained for the configuration variable <code>core.quotePath</code> (see
</dt>
<dd>
<p>
- Show only names of changed files.
+ Show only names of changed files. The file names are often encoded in UTF-8.
+ For more information see the discussion about encoding in the <a href="git-log.html">git-log(1)</a>
+ manual page.
</p>
</dd>
<dt class="hdlist1">
@@ -1282,6 +1284,7 @@ explained for the configuration variable <code>core.quotePath</code> (see
<p>
Show only names and status of changed files. See the description
of the <code>--diff-filter</code> option on what the status letters mean.
+ Just like <code>--name-only</code> the file names are often encoded in UTF-8.
</p>
</dd>
<dt class="hdlist1">
@@ -2980,7 +2983,7 @@ Output diff in reverse.
<div id="footer">
<div id="footer-text">
Last updated
- 2020-11-02 14:02:22 PST
+ 2020-11-03 07:02:22 JST
</div>
</div>
</body>
diff --git a/git-difftool.html b/git-difftool.html
index 2893f527a..2fdee3cf3 100644
--- a/git-difftool.html
+++ b/git-difftool.html
@@ -1024,7 +1024,7 @@ difftool.trustExitCode
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-25 17:29:29 PST
+ 2021-02-26 10:29:29 JST
</div>
</div>
</body>
diff --git a/git-fast-export.html b/git-fast-export.html
index 08958f95f..de0bb2ec9 100644
--- a/git-fast-export.html
+++ b/git-fast-export.html
@@ -1120,7 +1120,7 @@ a tag referencing a tree instead of a commit.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-07-06 22:33:22 PDT
+ 2020-07-07 14:33:22 JST
</div>
</div>
</body>
diff --git a/git-fast-import.html b/git-fast-import.html
index 53381ed80..bc7a7b692 100644
--- a/git-fast-import.html
+++ b/git-fast-import.html
@@ -2616,7 +2616,7 @@ compression.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-10-05 15:17:53 PDT
+ 2020-10-06 07:17:53 JST
</div>
</div>
</body>
diff --git a/git-fetch-pack.html b/git-fetch-pack.html
index e2450015b..dca1071e6 100644
--- a/git-fetch-pack.html
+++ b/git-fetch-pack.html
@@ -974,7 +974,7 @@ they may alternatively be 40-hex sha1s present on the remote.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-fetch.html b/git-fetch.html
index 06880c6fd..465003548 100644
--- a/git-fetch.html
+++ b/git-fetch.html
@@ -978,6 +978,16 @@ documented in <a href="git-config.html">git-config(1)</a>.</p></div>
</p>
</dd>
<dt class="hdlist1">
+--prefetch
+</dt>
+<dd>
+<p>
+ Modify the configured refspec to place all refs into the
+ <code>refs/prefetch/</code> namespace. See the <code>prefetch</code> task in
+ <a href="git-maintenance.html">git-maintenance(1)</a>.
+</p>
+</dd>
+<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
@@ -1977,7 +1987,7 @@ version.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-09-03 13:19:53 PDT
+ 2020-09-04 05:19:53 JST
</div>
</div>
</body>
diff --git a/git-filter-branch.html b/git-filter-branch.html
index 66001c7ab..06843da99 100644
--- a/git-filter-branch.html
+++ b/git-filter-branch.html
@@ -1626,7 +1626,7 @@ To top it all off, even when users finally find working commands,
<div id="footer">
<div id="footer-text">
Last updated
- 2020-10-26 15:41:26 PDT
+ 2020-10-27 07:41:26 JST
</div>
</div>
</body>
diff --git a/git-fmt-merge-msg.html b/git-fmt-merge-msg.html
index 7c4537354..1953b1084 100644
--- a/git-fmt-merge-msg.html
+++ b/git-fmt-merge-msg.html
@@ -908,7 +908,7 @@ the "origin" remote.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-for-each-ref.html b/git-for-each-ref.html
index 0dbb45fa5..2f3699cad 100644
--- a/git-for-each-ref.html
+++ b/git-for-each-ref.html
@@ -1324,7 +1324,7 @@ commits and from none of the <code>--no-merged</code> commits are shown.</p></di
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-02 23:05:01 PST
+ 2021-03-03 16:05:01 JST
</div>
</div>
</body>
diff --git a/git-for-each-repo.html b/git-for-each-repo.html
index b724dd7c9..453016c43 100644
--- a/git-for-each-repo.html
+++ b/git-for-each-repo.html
@@ -812,7 +812,7 @@ descriptors <code>stdin</code>, <code>stdout</code>, and <code>stderr</code>.</p
<div id="footer">
<div id="footer-text">
Last updated
- 2020-11-18 14:12:24 PST
+ 2020-11-19 07:12:24 JST
</div>
</div>
</body>
diff --git a/git-format-patch.html b/git-format-patch.html
index 964cd671b..a61d3cdb5 100644
--- a/git-format-patch.html
+++ b/git-format-patch.html
@@ -2554,7 +2554,7 @@ Extract three topmost commits from the current branch and format them
<div id="footer">
<div id="footer-text">
Last updated
- 2021-04-02 15:10:10 PDT
+ 2021-04-03 07:10:10 JST
</div>
</div>
</body>
diff --git a/git-fsck-objects.html b/git-fsck-objects.html
index 8129b86c4..cc977b3f5 100644
--- a/git-fsck-objects.html
+++ b/git-fsck-objects.html
@@ -772,7 +772,7 @@ documentation of that command.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/git-fsck.html b/git-fsck.html
index de2d0fc31..fe40cf78b 100644
--- a/git-fsck.html
+++ b/git-fsck.html
@@ -1103,7 +1103,7 @@ GIT_ALTERNATE_OBJECT_DIRECTORIES
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-03 16:00:11 PST
+ 2021-02-04 09:00:11 JST
</div>
</div>
</body>
diff --git a/git-gc.html b/git-gc.html
index f974a07f4..501d032b3 100644
--- a/git-gc.html
+++ b/git-gc.html
@@ -1165,7 +1165,7 @@ seems to be low in practice).</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-25 17:29:29 PST
+ 2021-02-26 10:29:29 JST
</div>
</div>
</body>
diff --git a/git-get-tar-commit-id.html b/git-get-tar-commit-id.html
index ee2ecbc8e..184ed9fc8 100644
--- a/git-get-tar-commit-id.html
+++ b/git-get-tar-commit-id.html
@@ -778,7 +778,7 @@ a tree ID instead of a commit ID or tag.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2015-10-26 16:13:38 PDT
+ 2015-10-27 08:13:38 JST
</div>
</div>
</body>
diff --git a/git-grep.html b/git-grep.html
index 4940851e8..5686c91bb 100644
--- a/git-grep.html
+++ b/git-grep.html
@@ -1469,7 +1469,7 @@ performance in this case, it might be desirable to use <code>--threads=1</code>.
<div id="footer">
<div id="footer-text">
Last updated
- 2020-11-18 14:12:24 PST
+ 2020-11-19 07:12:24 JST
</div>
</div>
</body>
diff --git a/git-gui.html b/git-gui.html
index 62a6760c2..688e6d7b8 100644
--- a/git-gui.html
+++ b/git-gui.html
@@ -945,7 +945,7 @@ of end users.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-hash-object.html b/git-hash-object.html
index 0e8535c2d..80eff48d1 100644
--- a/git-hash-object.html
+++ b/git-hash-object.html
@@ -853,7 +853,7 @@ When &lt;type&gt; is not specified, it defaults to "blob".</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-help.html b/git-help.html
index d677482b0..904e7f084 100644
--- a/git-help.html
+++ b/git-help.html
@@ -1011,7 +1011,7 @@ See <a href="git-config.html">git-config(1)</a> for more information about this.
<div id="footer">
<div id="footer-text">
Last updated
- 2020-08-10 16:30:08 PDT
+ 2020-08-11 08:30:08 JST
</div>
</div>
</body>
diff --git a/git-http-backend.html b/git-http-backend.html
index b5a7421a9..c3be17b5a 100644
--- a/git-http-backend.html
+++ b/git-http-backend.html
@@ -1079,7 +1079,7 @@ invoked by the <em>git-receive-pack</em>.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-http-fetch.html b/git-http-fetch.html
index 7e4411ab1..20437cfbd 100644
--- a/git-http-fetch.html
+++ b/git-http-fetch.html
@@ -860,7 +860,7 @@ commit-id
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-02 23:05:01 PST
+ 2021-03-03 16:05:01 JST
</div>
</div>
</body>
diff --git a/git-http-push.html b/git-http-push.html
index d0db43c4f..ba80273c2 100644
--- a/git-http-push.html
+++ b/git-http-push.html
@@ -909,7 +909,7 @@ to disable the fast-forward check only on that ref.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-imap-send.html b/git-imap-send.html
index 565ae0ff9..a7bd8f55d 100644
--- a/git-imap-send.html
+++ b/git-imap-send.html
@@ -1025,7 +1025,7 @@ users may wish to visit this web page for more information:
<div id="footer">
<div id="footer-text">
Last updated
- 2020-09-09 15:23:32 PDT
+ 2020-09-10 07:23:32 JST
</div>
</div>
</body>
diff --git a/git-index-pack.html b/git-index-pack.html
index 6169e4ae2..168ac5c92 100644
--- a/git-index-pack.html
+++ b/git-index-pack.html
@@ -958,7 +958,7 @@ mentioned above.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-02 23:05:01 PST
+ 2021-03-03 16:05:01 JST
</div>
</div>
</body>
diff --git a/git-init-db.html b/git-init-db.html
index 5eae98f7e..ad273603c 100644
--- a/git-init-db.html
+++ b/git-init-db.html
@@ -772,7 +772,7 @@ documentation of that command.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/git-init.html b/git-init.html
index 2db5bed47..55213016c 100644
--- a/git-init.html
+++ b/git-init.html
@@ -1003,7 +1003,7 @@ Record the pristine state as the first commit in the history.
<div id="footer">
<div id="footer-text">
Last updated
- 2020-12-18 16:26:08 PST
+ 2020-12-19 09:26:08 JST
</div>
</div>
</body>
diff --git a/git-instaweb.html b/git-instaweb.html
index 31f3bc21b..3fdec6bad 100644
--- a/git-instaweb.html
+++ b/git-instaweb.html
@@ -907,7 +907,7 @@ restart
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-interpret-trailers.html b/git-interpret-trailers.html
index 1fdaa2596..19fea0387 100644
--- a/git-interpret-trailers.html
+++ b/git-interpret-trailers.html
@@ -1255,7 +1255,7 @@ $ chmod +x .git/hooks/commit-msg</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-log.html b/git-log.html
index 78a53414d..64e863173 100644
--- a/git-log.html
+++ b/git-log.html
@@ -3408,7 +3408,7 @@ the default format.</p></div>
</p>
</dd>
<dt class="hdlist1">
---diff-merges=(off|none|first-parent|1|separate|m|combined|c|dense-combined|cc)
+--diff-merges=(off|none|on|first-parent|1|separate|m|combined|c|dense-combined|cc)
</dt>
<dt class="hdlist1">
--no-diff-merges
@@ -3433,6 +3433,24 @@ the default format.</p></div>
</p>
</dd>
<dt class="hdlist1">
+--diff-merges=on
+</dt>
+<dt class="hdlist1">
+--diff-merges=m
+</dt>
+<dt class="hdlist1">
+-m
+</dt>
+<dd>
+<p>
+ This option makes diff output for merge commits to be shown in
+ the default format. <code>-m</code> will produce the output only if <code>-p</code>
+ is given as well. The default format could be changed using
+ <code>log.diffMerges</code> configuration parameter, which default value
+ is <code>separate</code>.
+</p>
+</dd>
+<dt class="hdlist1">
--diff-merges=first-parent
</dt>
<dt class="hdlist1">
@@ -3447,17 +3465,11 @@ the default format.</p></div>
<dt class="hdlist1">
--diff-merges=separate
</dt>
-<dt class="hdlist1">
---diff-merges=m
-</dt>
-<dt class="hdlist1">
--m
-</dt>
<dd>
<p>
This makes merge commits show the full diff with respect to
each of the parents. Separate log entry and diff is generated
- for each parent. <code>-m</code> doesn&#8217;t produce any output without <code>-p</code>.
+ for each parent.
</p>
</dd>
<dt class="hdlist1">
@@ -3872,7 +3884,9 @@ explained for the configuration variable <code>core.quotePath</code> (see
</dt>
<dd>
<p>
- Show only names of changed files.
+ Show only names of changed files. The file names are often encoded in UTF-8.
+ For more information see the discussion about encoding in the <a href="git-log.html">git-log(1)</a>
+ manual page.
</p>
</dd>
<dt class="hdlist1">
@@ -3882,6 +3896,7 @@ explained for the configuration variable <code>core.quotePath</code> (see
<p>
Show only names and status of changed files. See the description
of the <code>--diff-filter</code> option on what the status letters mean.
+ Just like <code>--name-only</code> the file names are often encoded in UTF-8.
</p>
</dd>
<dt class="hdlist1">
@@ -5279,7 +5294,7 @@ and overridden by the <code>--notes=&lt;ref&gt;</code> option.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-05 17:34:58 PST
+ 2021-02-06 10:34:58 JST
</div>
</div>
</body>
diff --git a/git-ls-files.html b/git-ls-files.html
index 27c7e3152..815792a9d 100644
--- a/git-ls-files.html
+++ b/git-ls-files.html
@@ -1231,7 +1231,7 @@ pattern file appears in.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-05 17:34:58 PST
+ 2021-02-06 10:34:58 JST
</div>
</div>
</body>
diff --git a/git-ls-remote.html b/git-ls-remote.html
index 39d26f9b8..b9ad170d1 100644
--- a/git-ls-remote.html
+++ b/git-ls-remote.html
@@ -945,7 +945,7 @@ c5db5456ae3b0873fc659c19fafdde22313cc441 refs/tags/v0.99.2
<div id="footer">
<div id="footer-text">
Last updated
- 2020-07-06 22:33:22 PDT
+ 2020-07-07 14:33:22 JST
</div>
</div>
</body>
diff --git a/git-ls-tree.html b/git-ls-tree.html
index f0c4203c2..024ca461b 100644
--- a/git-ls-tree.html
+++ b/git-ls-tree.html
@@ -930,7 +930,7 @@ verbatim and the line is terminated by a NUL byte.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-11-11 14:07:52 PST
+ 2020-11-12 07:07:52 JST
</div>
</div>
</body>
diff --git a/git-mailinfo.html b/git-mailinfo.html
index 1d78c7a19..44df23174 100644
--- a/git-mailinfo.html
+++ b/git-mailinfo.html
@@ -914,7 +914,7 @@ beginning of the proposed commit log message with a scissors line.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-25 17:29:29 PST
+ 2021-02-26 10:29:29 JST
</div>
</div>
</body>
diff --git a/git-mailsplit.html b/git-mailsplit.html
index ee8c8c6b2..7887ef44c 100644
--- a/git-mailsplit.html
+++ b/git-mailsplit.html
@@ -860,7 +860,7 @@ patches in the correct order.</td>
<div id="footer">
<div id="footer-text">
Last updated
- 2016-07-06 14:33:48 PDT
+ 2016-07-07 06:33:48 JST
</div>
</div>
</body>
diff --git a/git-maintenance.html b/git-maintenance.html
index 639b907bd..434b53a6e 100644
--- a/git-maintenance.html
+++ b/git-maintenance.html
@@ -893,10 +893,8 @@ prefetch
<p>
The <code>prefetch</code> task updates the object directory with the latest
objects from all registered remotes. For each remote, a <code>git fetch</code>
- command is run. The refmap is custom to avoid updating local or remote
- branches (those in <code>refs/heads</code> or <code>refs/remotes</code>). Instead, the
- remote refs are stored in <code>refs/prefetch/&lt;remote&gt;/</code>. Also, tags are
- not updated.
+ command is run. The configured refspec is modified to place all
+ requested refs within <code>refs/prefetch/</code>. Also, tags are not updated.
</p>
<div class="paragraph"><p>This is done to avoid disrupting the remote-tracking branches. The end users
expect these refs to stay unmoved unless they initiate a fetch. With prefetch
@@ -1186,7 +1184,7 @@ custom tasks.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-22 16:54:23 PST
+ 2021-04-30 15:03:30 JST
</div>
</div>
</body>
diff --git a/git-maintenance.txt b/git-maintenance.txt
index 80ddd33ce..1e738ad39 100644
--- a/git-maintenance.txt
+++ b/git-maintenance.txt
@@ -92,10 +92,8 @@ commit-graph::
prefetch::
The `prefetch` task updates the object directory with the latest
objects from all registered remotes. For each remote, a `git fetch`
- command is run. The refmap is custom to avoid updating local or remote
- branches (those in `refs/heads` or `refs/remotes`). Instead, the
- remote refs are stored in `refs/prefetch/<remote>/`. Also, tags are
- not updated.
+ command is run. The configured refspec is modified to place all
+ requested refs within `refs/prefetch/`. Also, tags are not updated.
+
This is done to avoid disrupting the remote-tracking branches. The end users
expect these refs to stay unmoved unless they initiate a fetch. With prefetch
diff --git a/git-merge-base.html b/git-merge-base.html
index a7a4e37f4..9af4c0183 100644
--- a/git-merge-base.html
+++ b/git-merge-base.html
@@ -1017,7 +1017,7 @@ commits that used to be at the tip of origin/master).</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-merge-file.html b/git-merge-file.html
index a1a9f85d5..129e443df 100644
--- a/git-merge-file.html
+++ b/git-merge-file.html
@@ -886,7 +886,7 @@ implements all of RCS <em>merge</em>'s functionality which is needed by
<div id="footer">
<div id="footer-text">
Last updated
- 2015-10-30 14:57:17 PDT
+ 2015-10-31 06:57:17 JST
</div>
</div>
</body>
diff --git a/git-merge-index.html b/git-merge-index.html
index dbf458509..441bedce6 100644
--- a/git-merge-index.html
+++ b/git-merge-index.html
@@ -852,7 +852,7 @@ for the AA file, because it didn&#8217;t exist in the original, and thus
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-merge-one-file.html b/git-merge-one-file.html
index dd931f0e1..414cb47f5 100644
--- a/git-merge-one-file.html
+++ b/git-merge-one-file.html
@@ -772,7 +772,7 @@ to resolve a merge after the trivial merge done with <em>git read-tree -m</em>.<
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/git-merge-tree.html b/git-merge-tree.html
index 5fb42b318..ef0164830 100644
--- a/git-merge-tree.html
+++ b/git-merge-tree.html
@@ -779,7 +779,7 @@ entries that match the &lt;branch1&gt; tree.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2013-09-17 14:33:14 PDT
+ 2013-09-18 06:33:14 JST
</div>
</div>
</body>
diff --git a/git-merge.html b/git-merge.html
index ea93660f2..e5fa08d72 100644
--- a/git-merge.html
+++ b/git-merge.html
@@ -2151,7 +2151,7 @@ branch.&lt;name&gt;.mergeOptions
<div id="footer">
<div id="footer-text">
Last updated
- 2020-05-08 15:24:24 PDT
+ 2020-05-09 07:24:24 JST
</div>
</div>
</body>
diff --git a/git-mergetool--lib.html b/git-mergetool--lib.html
index 258a1aac3..5c143ff7a 100644
--- a/git-mergetool--lib.html
+++ b/git-mergetool--lib.html
@@ -832,7 +832,7 @@ run_merge_tool
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-22 16:54:23 PST
+ 2021-02-23 09:54:23 JST
</div>
</div>
</body>
diff --git a/git-mergetool.html b/git-mergetool.html
index bcb571579..4ef89ba9f 100644
--- a/git-mergetool.html
+++ b/git-mergetool.html
@@ -1047,7 +1047,7 @@ are successfully merged.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-17 15:50:25 PDT
+ 2021-03-18 07:50:25 JST
</div>
</div>
</body>
diff --git a/git-mktag.html b/git-mktag.html
index f3f61f978..d6c6a964c 100644
--- a/git-mktag.html
+++ b/git-mktag.html
@@ -828,7 +828,7 @@ care about, but that can be verified with gpg.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-01-25 15:29:19 PST
+ 2021-01-26 08:29:19 JST
</div>
</div>
</body>
diff --git a/git-mktree.html b/git-mktree.html
index afe9e70f5..dadc3a1c2 100644
--- a/git-mktree.html
+++ b/git-mktree.html
@@ -811,7 +811,7 @@ built is written to the standard output.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-multi-pack-index.html b/git-multi-pack-index.html
index 004a6ec2d..e96cee7cc 100644
--- a/git-multi-pack-index.html
+++ b/git-multi-pack-index.html
@@ -911,7 +911,7 @@ Format</a> for more information on the multi-pack-index feature.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-04-08 14:45:29 PDT
+ 2021-04-09 06:45:29 JST
</div>
</div>
</body>
diff --git a/git-mv.html b/git-mv.html
index 2af0eeeca..7296c02cd 100644
--- a/git-mv.html
+++ b/git-mv.html
@@ -857,7 +857,7 @@ been implemented.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2016-07-13 14:58:50 PDT
+ 2016-07-14 06:58:50 JST
</div>
</div>
</body>
diff --git a/git-name-rev.html b/git-name-rev.html
index 7899797dd..c39d70209 100644
--- a/git-name-rev.html
+++ b/git-name-rev.html
@@ -881,7 +881,7 @@ not the context.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-notes.html b/git-notes.html
index e478629a7..47a1cc789 100644
--- a/git-notes.html
+++ b/git-notes.html
@@ -1344,7 +1344,7 @@ on the <code>notes.rewrite.&lt;command&gt;</code> and <code>notes.rewriteRef</co
<div id="footer">
<div id="footer-text">
Last updated
- 2020-08-10 16:30:08 PDT
+ 2020-08-11 08:30:08 JST
</div>
</div>
</body>
diff --git a/git-p4.html b/git-p4.html
index cf1543f62..3efbc7031 100644
--- a/git-p4.html
+++ b/git-p4.html
@@ -1923,7 +1923,7 @@ Each commit imported by <em>git p4</em> has a line at the end of the log
<div id="footer">
<div id="footer-text">
Last updated
- 2021-01-15 16:12:09 PST
+ 2021-01-16 09:12:09 JST
</div>
</div>
</body>
diff --git a/git-pack-objects.html b/git-pack-objects.html
index 336b392ff..bfafb4521 100644
--- a/git-pack-objects.html
+++ b/git-pack-objects.html
@@ -1352,7 +1352,7 @@ attribute <code>delta</code> set to false.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-24 15:15:46 PDT
+ 2021-03-25 07:15:46 JST
</div>
</div>
</body>
diff --git a/git-pack-redundant.html b/git-pack-redundant.html
index 525ee9c71..ab3e0b287 100644
--- a/git-pack-redundant.html
+++ b/git-pack-redundant.html
@@ -819,7 +819,7 @@ git pack-redundant --all | xargs rm</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/git-pack-refs.html b/git-pack-refs.html
index e0982e62a..830cde08d 100644
--- a/git-pack-refs.html
+++ b/git-pack-refs.html
@@ -831,7 +831,7 @@ exists" when it means "branch &lt;branch&gt; exists".</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/git-patch-id.html b/git-patch-id.html
index 92a22625c..a167a9ffc 100644
--- a/git-patch-id.html
+++ b/git-patch-id.html
@@ -837,7 +837,7 @@ Result is different from the value produced by git 1.9 and older
<div id="footer">
<div id="footer-text">
Last updated
- 2017-08-04 09:39:17 PDT
+ 2017-08-05 01:39:17 JST
</div>
</div>
</body>
diff --git a/git-prune-packed.html b/git-prune-packed.html
index 1c6596829..59534cc42 100644
--- a/git-prune-packed.html
+++ b/git-prune-packed.html
@@ -814,7 +814,7 @@ disk storage, etc.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2014-10-20 14:13:43 PDT
+ 2014-10-21 06:13:43 JST
</div>
</div>
</body>
diff --git a/git-prune.html b/git-prune.html
index ed4711b45..f6ef946b8 100644
--- a/git-prune.html
+++ b/git-prune.html
@@ -884,7 +884,7 @@ many other housekeeping tasks.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-pull.html b/git-pull.html
index 77222c0e2..78f9bdf4f 100644
--- a/git-pull.html
+++ b/git-pull.html
@@ -1314,6 +1314,16 @@ documented in <a href="git-config.html">git-config(1)</a>.</p></div>
</p>
</dd>
<dt class="hdlist1">
+--prefetch
+</dt>
+<dd>
+<p>
+ Modify the configured refspec to place all refs into the
+ <code>refs/prefetch/</code> namespace. See the <code>prefetch</code> task in
+ <a href="git-maintenance.html">git-maintenance(1)</a>.
+</p>
+</dd>
+<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
@@ -2240,7 +2250,7 @@ version.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-04-29 16:59:10 PDT
+ 2020-04-30 08:59:10 JST
</div>
</div>
</body>
diff --git a/git-push.html b/git-push.html
index 3b375790d..e999b6d2d 100644
--- a/git-push.html
+++ b/git-push.html
@@ -1971,7 +1971,7 @@ As in #1, the attacker chooses an object ID X to steal. The victim sends
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-24 15:15:46 PDT
+ 2021-03-25 07:15:46 JST
</div>
</div>
</body>
diff --git a/git-quiltimport.html b/git-quiltimport.html
index 2c0bb55dc..05612c5d4 100644
--- a/git-quiltimport.html
+++ b/git-quiltimport.html
@@ -841,7 +841,7 @@ variable.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-range-diff.html b/git-range-diff.html
index b6232ce15..806beb6a1 100644
--- a/git-range-diff.html
+++ b/git-range-diff.html
@@ -1082,7 +1082,7 @@ found in this case will look like this:</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-22 16:54:23 PST
+ 2021-02-23 09:54:23 JST
</div>
</div>
</body>
diff --git a/git-read-tree.html b/git-read-tree.html
index 267719604..f25f73256 100644
--- a/git-read-tree.html
+++ b/git-read-tree.html
@@ -1306,7 +1306,7 @@ support.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-04-29 14:18:27 PDT
+ 2020-04-30 06:18:27 JST
</div>
</div>
</body>
diff --git a/git-rebase.html b/git-rebase.html
index 467b503fa..b5821bf35 100644
--- a/git-rebase.html
+++ b/git-rebase.html
@@ -2758,7 +2758,7 @@ Use <code>--rebase-merges</code> in such scenarios instead.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-26 15:44:23 PDT
+ 2021-03-27 07:44:23 JST
</div>
</div>
</body>
diff --git a/git-receive-pack.html b/git-receive-pack.html
index 5dadab0fa..033693c60 100644
--- a/git-receive-pack.html
+++ b/git-receive-pack.html
@@ -1084,7 +1084,7 @@ The <code>pre-receive</code> hook MUST NOT update any refs to point to
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-reflog.html b/git-reflog.html
index c2661482e..ff3bf776c 100644
--- a/git-reflog.html
+++ b/git-reflog.html
@@ -929,7 +929,7 @@ used with <code>expire</code>.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-remote-ext.html b/git-remote-ext.html
index fdb9d8cfd..aa4966a90 100644
--- a/git-remote-ext.html
+++ b/git-remote-ext.html
@@ -963,7 +963,7 @@ begins with <code>ext::</code>. Examples:</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-remote-fd.html b/git-remote-fd.html
index 37b6f48e6..71dd63794 100644
--- a/git-remote-fd.html
+++ b/git-remote-fd.html
@@ -843,7 +843,7 @@ GIT_TRANSLOOP_DEBUG
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-remote-helpers.html b/git-remote-helpers.html
index 050593480..6c3c40859 100644
--- a/git-remote-helpers.html
+++ b/git-remote-helpers.html
@@ -750,7 +750,7 @@ link you clicked to get here.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-remote.html b/git-remote.html
index 51129fe29..99b4e3959 100644
--- a/git-remote.html
+++ b/git-remote.html
@@ -1055,7 +1055,7 @@ $ git merge origin</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-11-09 14:46:20 PST
+ 2020-11-10 07:46:20 JST
</div>
</div>
</body>
diff --git a/git-repack.html b/git-repack.html
index 807d41359..980cffdc0 100644
--- a/git-repack.html
+++ b/git-repack.html
@@ -1070,7 +1070,7 @@ attribute <code>delta</code> set to false.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-24 15:15:46 PDT
+ 2021-03-25 07:15:46 JST
</div>
</div>
</body>
diff --git a/git-replace.html b/git-replace.html
index 625cd6e7a..b323b6c14 100644
--- a/git-replace.html
+++ b/git-replace.html
@@ -971,7 +971,7 @@ pending objects.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-request-pull.html b/git-request-pull.html
index 1251abb3f..22a238a52 100644
--- a/git-request-pull.html
+++ b/git-request-pull.html
@@ -855,7 +855,7 @@ the one you have locally, e.g.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-rerere.html b/git-rerere.html
index f1e658090..48c829377 100644
--- a/git-rerere.html
+++ b/git-rerere.html
@@ -990,7 +990,7 @@ setting in <a href="gitattributes.html">gitattributes(5)</a> can be used.</p></d
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-reset.html b/git-reset.html
index 83c4f8186..6c3e38f55 100644
--- a/git-reset.html
+++ b/git-reset.html
@@ -1499,7 +1499,7 @@ entries:</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-04-29 14:18:27 PDT
+ 2020-04-30 06:18:27 JST
</div>
</div>
</body>
diff --git a/git-restore.html b/git-restore.html
index a60693b22..a434323f6 100644
--- a/git-restore.html
+++ b/git-restore.html
@@ -1074,7 +1074,7 @@ as using <a href="git-checkout.html">git-checkout(1)</a>)</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-10-27 15:58:27 PDT
+ 2020-10-28 07:58:27 JST
</div>
</div>
</body>
diff --git a/git-rev-list.html b/git-rev-list.html
index f6c134e87..ed49781fb 100644
--- a/git-rev-list.html
+++ b/git-rev-list.html
@@ -3593,7 +3593,7 @@ Compare the on-disk size of branches in one group of refs, excluding
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-25 17:29:29 PST
+ 2021-02-26 10:29:29 JST
</div>
</div>
</body>
diff --git a/git-rev-parse.html b/git-rev-parse.html
index 6ab289921..e6739d667 100644
--- a/git-rev-parse.html
+++ b/git-rev-parse.html
@@ -2045,7 +2045,7 @@ Similar to above:
<div id="footer">
<div id="footer-text">
Last updated
- 2021-01-15 16:12:09 PST
+ 2021-01-16 09:12:09 JST
</div>
</div>
</body>
diff --git a/git-revert.html b/git-revert.html
index 89486b53c..f54097314 100644
--- a/git-revert.html
+++ b/git-revert.html
@@ -1022,7 +1022,7 @@ effect to your index in a row.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-11-02 14:02:22 PST
+ 2020-11-03 07:02:22 JST
</div>
</div>
</body>
diff --git a/git-rm.html b/git-rm.html
index 28d8f953a..9298e1410 100644
--- a/git-rm.html
+++ b/git-rm.html
@@ -1020,7 +1020,7 @@ obsolete when recursive submodule update has been implemented.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-send-email.html b/git-send-email.html
index c603a2712..eabc3b5d8 100644
--- a/git-send-email.html
+++ b/git-send-email.html
@@ -1631,7 +1631,7 @@ Authen::SASL and Mail::Address.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-01-25 15:29:19 PST
+ 2021-01-26 08:29:19 JST
</div>
</div>
</body>
diff --git a/git-send-pack.html b/git-send-pack.html
index dd2ef9067..40cf93ec8 100644
--- a/git-send-pack.html
+++ b/git-send-pack.html
@@ -993,7 +993,7 @@ to disable the fast-forward check only on that ref.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-sh-i18n--envsubst.html b/git-sh-i18n--envsubst.html
index a49bda3e4..43c4f7a97 100644
--- a/git-sh-i18n--envsubst.html
+++ b/git-sh-i18n--envsubst.html
@@ -785,7 +785,7 @@ of Git. Don&#8217;t use it.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/git-sh-i18n.html b/git-sh-i18n.html
index 603089ee8..34972a083 100644
--- a/git-sh-i18n.html
+++ b/git-sh-i18n.html
@@ -807,7 +807,7 @@ eval_gettext
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/git-sh-setup.html b/git-sh-setup.html
index 5c19dca78..4c369bcdb 100644
--- a/git-sh-setup.html
+++ b/git-sh-setup.html
@@ -902,7 +902,7 @@ create_virtual_base
<div id="footer">
<div id="footer-text">
Last updated
- 2016-06-27 11:04:05 PDT
+ 2016-06-28 03:04:05 JST
</div>
</div>
</body>
diff --git a/git-shell.html b/git-shell.html
index dba884723..d9938c325 100644
--- a/git-shell.html
+++ b/git-shell.html
@@ -873,7 +873,7 @@ contrib/git-shell-commands/README</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-shortlog.html b/git-shortlog.html
index e46788ebc..54b38ab37 100644
--- a/git-shortlog.html
+++ b/git-shortlog.html
@@ -1956,7 +1956,7 @@ the current directory.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-22 16:54:23 PST
+ 2021-02-23 09:54:23 JST
</div>
</div>
</body>
diff --git a/git-show-branch.html b/git-show-branch.html
index fd929862c..5577bd934 100644
--- a/git-show-branch.html
+++ b/git-show-branch.html
@@ -1047,7 +1047,7 @@ topologically related with each other.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-show-index.html b/git-show-index.html
index 0a158ccd1..bd1226469 100644
--- a/git-show-index.html
+++ b/git-show-index.html
@@ -824,7 +824,7 @@ repositories may change in backwards-incompatible ways. Only use
<div id="footer">
<div id="footer-text">
Last updated
- 2020-08-24 15:54:20 PDT
+ 2020-08-25 07:54:20 JST
</div>
</div>
</body>
diff --git a/git-show-ref.html b/git-show-ref.html
index 7f58a664d..046742c61 100644
--- a/git-show-ref.html
+++ b/git-show-ref.html
@@ -977,7 +977,7 @@ flag, so you can do</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-show.html b/git-show.html
index 3c4fdcedb..a7ba39e7f 100644
--- a/git-show.html
+++ b/git-show.html
@@ -1934,7 +1934,7 @@ diff output.</p></div>
</p>
</dd>
<dt class="hdlist1">
---diff-merges=(off|none|first-parent|1|separate|m|combined|c|dense-combined|cc)
+--diff-merges=(off|none|on|first-parent|1|separate|m|combined|c|dense-combined|cc)
</dt>
<dt class="hdlist1">
--no-diff-merges
@@ -1959,6 +1959,24 @@ diff output.</p></div>
</p>
</dd>
<dt class="hdlist1">
+--diff-merges=on
+</dt>
+<dt class="hdlist1">
+--diff-merges=m
+</dt>
+<dt class="hdlist1">
+-m
+</dt>
+<dd>
+<p>
+ This option makes diff output for merge commits to be shown in
+ the default format. <code>-m</code> will produce the output only if <code>-p</code>
+ is given as well. The default format could be changed using
+ <code>log.diffMerges</code> configuration parameter, which default value
+ is <code>separate</code>.
+</p>
+</dd>
+<dt class="hdlist1">
--diff-merges=first-parent
</dt>
<dt class="hdlist1">
@@ -1973,17 +1991,11 @@ diff output.</p></div>
<dt class="hdlist1">
--diff-merges=separate
</dt>
-<dt class="hdlist1">
---diff-merges=m
-</dt>
-<dt class="hdlist1">
--m
-</dt>
<dd>
<p>
This makes merge commits show the full diff with respect to
each of the parents. Separate log entry and diff is generated
- for each parent. <code>-m</code> doesn&#8217;t produce any output without <code>-p</code>.
+ for each parent.
</p>
</dd>
<dt class="hdlist1">
@@ -2398,7 +2410,9 @@ explained for the configuration variable <code>core.quotePath</code> (see
</dt>
<dd>
<p>
- Show only names of changed files.
+ Show only names of changed files. The file names are often encoded in UTF-8.
+ For more information see the discussion about encoding in the <a href="git-log.html">git-log(1)</a>
+ manual page.
</p>
</dd>
<dt class="hdlist1">
@@ -2408,6 +2422,7 @@ explained for the configuration variable <code>core.quotePath</code> (see
<p>
Show only names and status of changed files. See the description
of the <code>--diff-filter</code> option on what the status letters mean.
+ Just like <code>--name-only</code> the file names are often encoded in UTF-8.
</p>
</dd>
<dt class="hdlist1">
@@ -3658,7 +3673,7 @@ reversible operation.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-05 17:34:58 PST
+ 2021-02-06 10:34:58 JST
</div>
</div>
</body>
diff --git a/git-sparse-checkout.html b/git-sparse-checkout.html
index 893530ec2..3181cc4f2 100644
--- a/git-sparse-checkout.html
+++ b/git-sparse-checkout.html
@@ -794,6 +794,18 @@ THE FUTURE.</p></div>
<div class="paragraph"><p>When <code>--cone</code> is provided, the <code>core.sparseCheckoutCone</code> setting is
also set, allowing for better performance with a limited set of
patterns (see <em>CONE PATTERN SET</em> below).</p></div>
+<div class="paragraph"><p>Use the <code>--[no-]sparse-index</code> option to toggle the use of the sparse
+index format. This reduces the size of the index to be more closely
+aligned with your sparse-checkout definition. This can have significant
+performance advantages for commands such as <code>git status</code> or <code>git add</code>.
+This feature is still experimental. Some commands might be slower with
+a sparse index until they are properly integrated with the feature.</p></div>
+<div class="paragraph"><p><strong>WARNING:</strong> Using a sparse index requires modifying the index in a way
+that is not completely understood by external tools. If you have trouble
+with this compatibility, then run <code>git sparse-checkout init --no-sparse-index</code>
+to rewrite your index to not be sparse. Older versions of Git will not
+understand the sparse directory entries index extension and may fail to
+interact with your repository until it is disabled.</p></div>
</dd>
<dt class="hdlist1">
<em>set</em>
@@ -1009,7 +1021,7 @@ of these restrictions.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-06-22 16:55:13 PDT
+ 2021-04-30 15:03:30 JST
</div>
</div>
</body>
diff --git a/git-sparse-checkout.txt b/git-sparse-checkout.txt
index a0eeaeb02..fdcf43f87 100644
--- a/git-sparse-checkout.txt
+++ b/git-sparse-checkout.txt
@@ -45,6 +45,20 @@ To avoid interfering with other worktrees, it first enables the
When `--cone` is provided, the `core.sparseCheckoutCone` setting is
also set, allowing for better performance with a limited set of
patterns (see 'CONE PATTERN SET' below).
++
+Use the `--[no-]sparse-index` option to toggle the use of the sparse
+index format. This reduces the size of the index to be more closely
+aligned with your sparse-checkout definition. This can have significant
+performance advantages for commands such as `git status` or `git add`.
+This feature is still experimental. Some commands might be slower with
+a sparse index until they are properly integrated with the feature.
++
+**WARNING:** Using a sparse index requires modifying the index in a way
+that is not completely understood by external tools. If you have trouble
+with this compatibility, then run `git sparse-checkout init --no-sparse-index`
+to rewrite your index to not be sparse. Older versions of Git will not
+understand the sparse directory entries index extension and may fail to
+interact with your repository until it is disabled.
'set'::
Write a set of patterns to the sparse-checkout file, as given as
diff --git a/git-stage.html b/git-stage.html
index 506e61267..6c2d9766f 100644
--- a/git-stage.html
+++ b/git-stage.html
@@ -772,7 +772,7 @@ documentation of that command.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2014-10-20 14:13:43 PDT
+ 2014-10-21 06:13:43 JST
</div>
</div>
</body>
diff --git a/git-stash.html b/git-stash.html
index 9318b1295..d95469df2 100644
--- a/git-stash.html
+++ b/git-stash.html
@@ -1245,7 +1245,7 @@ xargs git log --merges --no-walk --grep=WIP</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-22 14:17:33 PDT
+ 2021-03-23 06:17:33 JST
</div>
</div>
</body>
diff --git a/git-status.html b/git-status.html
index 8035b752f..f4623f827 100644
--- a/git-status.html
+++ b/git-status.html
@@ -1361,7 +1361,7 @@ using <code>git --no-optional-locks status</code> (see <a href="git.html">git(1)
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-25 17:29:29 PST
+ 2021-02-26 10:29:29 JST
</div>
</div>
</body>
diff --git a/git-stripspace.html b/git-stripspace.html
index 8b27dd56e..4db3ac353 100644
--- a/git-stripspace.html
+++ b/git-stripspace.html
@@ -876,7 +876,7 @@ the repository.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2015-10-26 16:13:38 PDT
+ 2015-10-27 08:13:38 JST
</div>
</div>
</body>
diff --git a/git-submodule.html b/git-submodule.html
index c32b9a4a3..11bfd8261 100644
--- a/git-submodule.html
+++ b/git-submodule.html
@@ -1407,7 +1407,7 @@ for details.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-07-06 22:33:22 PDT
+ 2020-07-07 14:33:22 JST
</div>
</div>
</body>
diff --git a/git-svn.html b/git-svn.html
index c1984855a..490412dee 100644
--- a/git-svn.html
+++ b/git-svn.html
@@ -2517,7 +2517,7 @@ rewinds it.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-11-02 14:02:22 PST
+ 2020-11-03 07:02:22 JST
</div>
</div>
</body>
diff --git a/git-switch.html b/git-switch.html
index d27186cf3..22a818061 100644
--- a/git-switch.html
+++ b/git-switch.html
@@ -1127,7 +1127,7 @@ always create a new name for it (without switching away):</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-10-27 15:58:27 PDT
+ 2020-10-28 07:58:27 JST
</div>
</div>
</body>
diff --git a/git-symbolic-ref.html b/git-symbolic-ref.html
index 426453791..a83bb9bb5 100644
--- a/git-symbolic-ref.html
+++ b/git-symbolic-ref.html
@@ -847,7 +847,7 @@ name is not a symbolic ref, or 128 if another error occurs.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/git-tag.html b/git-tag.html
index 61c853b66..33d5f88ac 100644
--- a/git-tag.html
+++ b/git-tag.html
@@ -1339,7 +1339,7 @@ commits and from none of the <code>--no-merged</code> commits are shown.</p></di
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-25 17:29:29 PST
+ 2021-02-26 10:29:29 JST
</div>
</div>
</body>
diff --git a/git-unpack-file.html b/git-unpack-file.html
index 44bf6db51..ef61ee594 100644
--- a/git-unpack-file.html
+++ b/git-unpack-file.html
@@ -788,7 +788,7 @@ returns the name of the temporary file in the following format:
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/git-unpack-objects.html b/git-unpack-objects.html
index e623a7a62..b49625d10 100644
--- a/git-unpack-objects.html
+++ b/git-unpack-objects.html
@@ -830,7 +830,7 @@ new packs and replace existing ones.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2016-09-12 17:53:34 PDT
+ 2016-09-13 09:53:34 JST
</div>
</div>
</body>
diff --git a/git-update-index.html b/git-update-index.html
index 7f44b70fe..ef127e902 100644
--- a/git-update-index.html
+++ b/git-update-index.html
@@ -1518,7 +1518,7 @@ automatically.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-01-25 15:29:19 PST
+ 2021-01-26 08:29:19 JST
</div>
</div>
</body>
diff --git a/git-update-ref.html b/git-update-ref.html
index db27f94d5..22bef6167 100644
--- a/git-update-ref.html
+++ b/git-update-ref.html
@@ -974,7 +974,7 @@ or does not have committer information available.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-12-08 16:10:07 PST
+ 2020-12-09 09:10:07 JST
</div>
</div>
</body>
diff --git a/git-update-server-info.html b/git-update-server-info.html
index b985798e5..99ffe8b4c 100644
--- a/git-update-server-info.html
+++ b/git-update-server-info.html
@@ -795,7 +795,7 @@ info/refs
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-upload-archive.html b/git-upload-archive.html
index f3e825c04..b077afe05 100644
--- a/git-upload-archive.html
+++ b/git-upload-archive.html
@@ -832,7 +832,7 @@ access via non-smart-http.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2015-10-29 14:44:28 PDT
+ 2015-10-30 06:44:28 JST
</div>
</div>
</body>
diff --git a/git-upload-pack.html b/git-upload-pack.html
index bceb323dc..ba242df15 100644
--- a/git-upload-pack.html
+++ b/git-upload-pack.html
@@ -834,7 +834,7 @@ repository. For push operations, see <em>git send-pack</em>.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-var.html b/git-var.html
index b903ada8b..7bd3e3c58 100644
--- a/git-var.html
+++ b/git-var.html
@@ -856,7 +856,7 @@ GIT_PAGER
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-verify-commit.html b/git-verify-commit.html
index cdc047bbb..2709ee569 100644
--- a/git-verify-commit.html
+++ b/git-verify-commit.html
@@ -806,7 +806,7 @@ git-verify-commit(1) Manual Page
<div id="footer">
<div id="footer-text">
Last updated
- 2016-06-27 11:04:05 PDT
+ 2016-06-28 03:04:05 JST
</div>
</div>
</body>
diff --git a/git-verify-pack.html b/git-verify-pack.html
index 2562ee172..ff2bb5f1e 100644
--- a/git-verify-pack.html
+++ b/git-verify-pack.html
@@ -836,7 +836,7 @@ corresponding pack file.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2015-05-22 13:47:07 PDT
+ 2015-05-23 05:47:07 JST
</div>
</div>
</body>
diff --git a/git-verify-tag.html b/git-verify-tag.html
index 75e9ee1a2..a23a783a3 100644
--- a/git-verify-tag.html
+++ b/git-verify-tag.html
@@ -806,7 +806,7 @@ git-verify-tag(1) Manual Page
<div id="footer">
<div id="footer-text">
Last updated
- 2017-01-31 14:00:53 PST
+ 2017-02-01 07:00:53 JST
</div>
</div>
</body>
diff --git a/git-web--browse.html b/git-web--browse.html
index 4faabd14f..c088f7bef 100644
--- a/git-web--browse.html
+++ b/git-web--browse.html
@@ -964,7 +964,7 @@ See <a href="git-config.html">git-config(1)</a> for more information about this.
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/git-whatchanged.html b/git-whatchanged.html
index 99e6e5d0f..28f879af9 100644
--- a/git-whatchanged.html
+++ b/git-whatchanged.html
@@ -803,7 +803,7 @@ reading Linux kernel mailing list are trained to type it.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-30 16:51:59 PDT
+ 2013-08-31 08:51:59 JST
</div>
</div>
</body>
diff --git a/git-worktree.html b/git-worktree.html
index bdd1df1c6..4b550a2f5 100644
--- a/git-worktree.html
+++ b/git-worktree.html
@@ -1360,7 +1360,7 @@ checkouts of a superproject.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-10 15:27:55 PST
+ 2021-02-11 08:27:55 JST
</div>
</div>
</body>
diff --git a/git-write-tree.html b/git-write-tree.html
index cd6b1a463..e5f6e5333 100644
--- a/git-write-tree.html
+++ b/git-write-tree.html
@@ -805,7 +805,7 @@ now, you need to have done a <em>git update-index</em> phase before you did the
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/git.html b/git.html
index be88852e2..e5a09c3a9 100644
--- a/git.html
+++ b/git.html
@@ -3613,7 +3613,7 @@ the Git Security mailing list &lt;<a href="mailto:git-security@googlegroups.com"
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-25 17:29:29 PST
+ 2021-02-26 10:29:29 JST
</div>
</div>
</body>
diff --git a/gitattributes.html b/gitattributes.html
index 249f12391..f1c49227e 100644
--- a/gitattributes.html
+++ b/gitattributes.html
@@ -1677,6 +1677,11 @@ patterns are available:</p></div>
</li>
<li>
<p>
+<code>scheme</code> suitable for source code in the Scheme language.
+</p>
+</li>
+<li>
+<p>
<code>tex</code> suitable for source code for LaTeX documents.
</p>
</li>
@@ -2182,7 +2187,7 @@ frotz unspecified</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-22 14:17:33 PDT
+ 2021-04-30 15:03:30 JST
</div>
</div>
</body>
diff --git a/gitattributes.txt b/gitattributes.txt
index 0a60472bb..cfcfa800c 100644
--- a/gitattributes.txt
+++ b/gitattributes.txt
@@ -845,6 +845,8 @@ patterns are available:
- `rust` suitable for source code in the Rust language.
+- `scheme` suitable for source code in the Scheme language.
+
- `tex` suitable for source code for LaTeX documents.
diff --git a/gitcli.html b/gitcli.html
index 65322cba3..a4538ad7b 100644
--- a/gitcli.html
+++ b/gitcli.html
@@ -1040,7 +1040,7 @@ The two options can be specified together to ask a command to work
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-11 14:26:57 PDT
+ 2020-03-12 06:26:57 JST
</div>
</div>
</body>
diff --git a/gitcore-tutorial.html b/gitcore-tutorial.html
index ff3309c52..2b7c71829 100644
--- a/gitcore-tutorial.html
+++ b/gitcore-tutorial.html
@@ -2458,7 +2458,7 @@ to follow, not easier.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/gitcredentials.html b/gitcredentials.html
index 0a227f69e..c3d2279ec 100644
--- a/gitcredentials.html
+++ b/gitcredentials.html
@@ -1106,7 +1106,7 @@ helpers will just ignore the new requests).</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-08-10 16:30:08 PDT
+ 2020-08-11 08:30:08 JST
</div>
</div>
</body>
diff --git a/gitcvs-migration.html b/gitcvs-migration.html
index 796768078..d7031646f 100644
--- a/gitcvs-migration.html
+++ b/gitcvs-migration.html
@@ -957,7 +957,7 @@ repositories without the need for a central maintainer.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2017-02-15 15:17:51 PST
+ 2017-02-16 08:17:51 JST
</div>
</div>
</body>
diff --git a/gitdiffcore.html b/gitdiffcore.html
index 0f83ea59e..0101065f1 100644
--- a/gitdiffcore.html
+++ b/gitdiffcore.html
@@ -1108,7 +1108,7 @@ not sorted when diffcore-order is in effect.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-22 14:17:33 PDT
+ 2021-03-23 06:17:33 JST
</div>
</div>
</body>
diff --git a/giteveryday.html b/giteveryday.html
index bb922d78d..ae076e461 100644
--- a/giteveryday.html
+++ b/giteveryday.html
@@ -1546,7 +1546,7 @@ create and push version tags.
<div id="footer">
<div id="footer-text">
Last updated
- 2020-07-06 22:33:22 PDT
+ 2020-07-07 14:33:22 JST
</div>
</div>
</body>
diff --git a/gitfaq.html b/gitfaq.html
index 90af7073a..3f9ef4f83 100644
--- a/gitfaq.html
+++ b/gitfaq.html
@@ -1262,7 +1262,7 @@ platform.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-09-29 14:47:55 PDT
+ 2020-09-30 06:47:55 JST
</div>
</div>
</body>
diff --git a/gitglossary.html b/gitglossary.html
index 52bb5d5b8..a48674506 100644
--- a/gitglossary.html
+++ b/gitglossary.html
@@ -1921,7 +1921,7 @@ The most notable example is <code>HEAD</code>.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2017-02-15 15:17:51 PST
+ 2017-02-16 08:17:51 JST
</div>
</div>
</body>
diff --git a/githooks.html b/githooks.html
index 4d422deb5..38cfaa93d 100644
--- a/githooks.html
+++ b/githooks.html
@@ -1377,7 +1377,7 @@ running passing "1", "1" should not be possible.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-22 14:17:33 PDT
+ 2021-03-23 06:17:33 JST
</div>
</div>
</body>
diff --git a/gitignore.html b/gitignore.html
index 876bf28c1..850cb9953 100644
--- a/gitignore.html
+++ b/gitignore.html
@@ -1069,7 +1069,7 @@ everything within <code>foo/bar</code>):</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-22 14:17:33 PDT
+ 2021-03-23 06:17:33 JST
</div>
</div>
</body>
diff --git a/gitk.html b/gitk.html
index 8b06f190e..2365db7ee 100644
--- a/gitk.html
+++ b/gitk.html
@@ -1101,7 +1101,7 @@ of end users.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-11-18 14:12:24 PST
+ 2020-11-19 07:12:24 JST
</div>
</div>
</body>
diff --git a/gitmailmap.html b/gitmailmap.html
index 35f1707a1..7e1a4904e 100644
--- a/gitmailmap.html
+++ b/gitmailmap.html
@@ -884,7 +884,7 @@ Jane Doe &lt;jane@example.com&gt; Jane &lt;bugs@example.com&gt;</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-25 17:29:29 PST
+ 2021-02-26 10:29:29 JST
</div>
</div>
</body>
diff --git a/gitmodules.html b/gitmodules.html
index 625bc0de7..2e5d2c8f7 100644
--- a/gitmodules.html
+++ b/gitmodules.html
@@ -938,7 +938,7 @@ submodules a URL is specified which can be used for cloning the submodules.</p><
<div id="footer">
<div id="footer-text">
Last updated
- 2021-01-15 16:12:09 PST
+ 2021-01-16 09:12:09 JST
</div>
</div>
</body>
diff --git a/gitnamespaces.html b/gitnamespaces.html
index 794c2e3c2..a1f9bffb6 100644
--- a/gitnamespaces.html
+++ b/gitnamespaces.html
@@ -844,7 +844,7 @@ As in #1, the attacker chooses an object ID X to steal. The victim sends
<div id="footer">
<div id="footer-text">
Last updated
- 2017-01-10 15:42:58 PST
+ 2017-01-11 08:42:58 JST
</div>
</div>
</body>
diff --git a/gitremote-helpers.html b/gitremote-helpers.html
index e7880596f..f505c4544 100644
--- a/gitremote-helpers.html
+++ b/gitremote-helpers.html
@@ -1518,7 +1518,7 @@ the remote side using that algorithm.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-07-06 22:33:22 PDT
+ 2020-07-07 14:33:22 JST
</div>
</div>
</body>
diff --git a/gitrepository-layout.html b/gitrepository-layout.html
index 53e05226f..b3bfa9a83 100644
--- a/gitrepository-layout.html
+++ b/gitrepository-layout.html
@@ -1372,7 +1372,7 @@ GIT_COMMON_DIR/worktrees/&lt;id&gt;/config.worktree)</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/gitrevisions.html b/gitrevisions.html
index 23a1a49f6..f0cf52175 100644
--- a/gitrevisions.html
+++ b/gitrevisions.html
@@ -1324,7 +1324,7 @@ spelt out:</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/gitsubmodules.html b/gitsubmodules.html
index 70dd427ea..23e98dc4e 100644
--- a/gitsubmodules.html
+++ b/gitsubmodules.html
@@ -1113,7 +1113,7 @@ affects other Git commands, see <a href="git-config.html">git-config(1)</a> for
<div id="footer">
<div id="footer-text">
Last updated
- 2020-10-05 15:17:53 PDT
+ 2020-10-06 07:17:53 JST
</div>
</div>
</body>
diff --git a/gittutorial-2.html b/gittutorial-2.html
index adb66df17..b050d3722 100644
--- a/gittutorial-2.html
+++ b/gittutorial-2.html
@@ -1171,7 +1171,7 @@ example, creating a new commit.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/gittutorial.html b/gittutorial.html
index 1914190c9..91cf0bcc5 100644
--- a/gittutorial.html
+++ b/gittutorial.html
@@ -1375,7 +1375,7 @@ digressions that may be interesting at this point are:</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/gitweb.conf.html b/gitweb.conf.html
index bdf9d94e8..90cc8ee8b 100644
--- a/gitweb.conf.html
+++ b/gitweb.conf.html
@@ -2015,7 +2015,7 @@ gitweb_config.perl
<div id="footer">
<div id="footer-text">
Last updated
- 2021-04-13 17:34:18 PDT
+ 2021-04-14 09:34:18 JST
</div>
</div>
</body>
diff --git a/gitweb.html b/gitweb.html
index 9fa10d103..ff428c375 100644
--- a/gitweb.html
+++ b/gitweb.html
@@ -1642,7 +1642,7 @@ putting "gitweb" in the subject of email.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/gitworkflows.html b/gitworkflows.html
index f188ee447..9e711aad6 100644
--- a/gitworkflows.html
+++ b/gitworkflows.html
@@ -1225,7 +1225,7 @@ other options.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-07-18 17:57:39 PDT
+ 2020-07-19 09:57:39 JST
</div>
</div>
</body>
diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html
index 8068c7d3a..7e9b9d7d3 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
- 2021-04-16 15:13:14 PDT
+ 2021-04-30 15:04:59 JST
</div>
</div>
</body>
diff --git a/howto/keep-canonical-history-correct.html b/howto/keep-canonical-history-correct.html
index 422f66526..7435aa8e4 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
- 2021-04-16 15:13:13 PDT
+ 2021-04-30 15:04:59 JST
</div>
</div>
</body>
diff --git a/howto/maintain-git.html b/howto/maintain-git.html
index 14c705e17..837034095 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
- 2021-04-16 15:13:14 PDT
+ 2021-04-30 15:04:59 JST
</div>
</div>
</body>
diff --git a/howto/new-command.html b/howto/new-command.html
index 995c07db3..74093a43d 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
- 2021-04-16 15:13:09 PDT
+ 2021-04-30 15:04:53 JST
</div>
</div>
</body>
diff --git a/howto/rebase-from-internal-branch.html b/howto/rebase-from-internal-branch.html
index 8cd7e6898..562154783 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
- 2021-04-16 15:13:13 PDT
+ 2021-04-30 15:04:59 JST
</div>
</div>
</body>
diff --git a/howto/rebuild-from-update-hook.html b/howto/rebuild-from-update-hook.html
index 0e42c7749..470bef080 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
- 2021-04-16 15:13:13 PDT
+ 2021-04-30 15:04:58 JST
</div>
</div>
</body>
diff --git a/howto/recover-corrupted-blob-object.html b/howto/recover-corrupted-blob-object.html
index ce339e0c6..c83e5be4c 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
- 2021-04-16 15:13:12 PDT
+ 2021-04-30 15:04:57 JST
</div>
</div>
</body>
diff --git a/howto/recover-corrupted-object-harder.html b/howto/recover-corrupted-object-harder.html
index df6ebcac2..372365d23 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
- 2021-04-16 15:13:13 PDT
+ 2021-04-30 15:04:58 JST
</div>
</div>
</body>
diff --git a/howto/revert-a-faulty-merge.html b/howto/revert-a-faulty-merge.html
index 55cfa5a51..84b673aeb 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
- 2021-04-16 15:13:12 PDT
+ 2021-04-30 15:04:57 JST
</div>
</div>
</body>
diff --git a/howto/revert-branch-rebase.html b/howto/revert-branch-rebase.html
index 830326305..54150bf63 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
- 2021-04-16 15:13:09 PDT
+ 2021-04-30 15:04:53 JST
</div>
</div>
</body>
diff --git a/howto/separating-topic-branches.html b/howto/separating-topic-branches.html
index 23fd4f3a3..aad0aefda 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
- 2021-04-16 15:13:11 PDT
+ 2021-04-30 15:04:56 JST
</div>
</div>
</body>
diff --git a/howto/setup-git-server-over-http.html b/howto/setup-git-server-over-http.html
index 1a99cb616..90a3de167 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
- 2021-04-16 15:13:11 PDT
+ 2021-04-30 15:04:56 JST
</div>
</div>
</body>
diff --git a/howto/update-hook-example.html b/howto/update-hook-example.html
index c342ca34a..7e53563d1 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
- 2021-04-16 15:13:10 PDT
+ 2021-04-30 15:04:55 JST
</div>
</div>
</body>
diff --git a/howto/use-git-daemon.html b/howto/use-git-daemon.html
index c5442b60b..8d66c935a 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
- 2021-04-16 15:13:10 PDT
+ 2021-04-30 15:04:55 JST
</div>
</div>
</body>
diff --git a/howto/using-merge-subtree.html b/howto/using-merge-subtree.html
index ca1f2de28..12896dd2c 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
- 2021-04-16 15:13:09 PDT
+ 2021-04-30 15:04:54 JST
</div>
</div>
</body>
diff --git a/howto/using-signed-tag-in-pull-request.html b/howto/using-signed-tag-in-pull-request.html
index fae3f9e40..832af2091 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
- 2021-04-16 15:13:10 PDT
+ 2021-04-30 15:04:54 JST
</div>
</div>
</body>
diff --git a/technical/api-error-handling.html b/technical/api-error-handling.html
index b3058e0ae..ec6b33978 100644
--- a/technical/api-error-handling.html
+++ b/technical/api-error-handling.html
@@ -739,11 +739,17 @@ asciidoc.install();
<div id="content">
<div id="preamble">
<div class="sectionbody">
-<div class="paragraph"><p><code>die</code>, <code>usage</code>, <code>error</code>, and <code>warning</code> report errors of various
-kinds.</p></div>
+<div class="paragraph"><p><code>BUG</code>, <code>die</code>, <code>usage</code>, <code>error</code>, and <code>warning</code> report errors of
+various kinds.</p></div>
<div class="ulist"><ul>
<li>
<p>
+<code>BUG</code> is for failed internal assertions that should never happen,
+ i.e. a bug in git itself.
+</p>
+</li>
+<li>
+<p>
<code>die</code> is for fatal application errors. It prints a message to
the user and exits with status 128.
</p>
@@ -771,6 +777,8 @@ kinds.</p></div>
</p>
</li>
</ul></div>
+<div class="paragraph"><p>These reports will be logged via the trace2 facility. See the "error"
+event in <a href="api-trace2.txt">trace2 API</a>.</p></div>
</div>
</div>
<div class="sect1">
@@ -849,7 +857,7 @@ a message, pass a strbuf that is explicitly ignored:</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2015-03-28 11:17:28 PDT
+ 2021-04-30 15:03:30 JST
</div>
</div>
</body>
diff --git a/technical/api-error-handling.txt b/technical/api-error-handling.txt
index ceeedd485..8be4f4d0d 100644
--- a/technical/api-error-handling.txt
+++ b/technical/api-error-handling.txt
@@ -1,8 +1,11 @@
Error reporting in git
======================
-`die`, `usage`, `error`, and `warning` report errors of various
-kinds.
+`BUG`, `die`, `usage`, `error`, and `warning` report errors of
+various kinds.
+
+- `BUG` is for failed internal assertions that should never happen,
+ i.e. a bug in git itself.
- `die` is for fatal application errors. It prints a message to
the user and exits with status 128.
@@ -20,6 +23,9 @@ kinds.
without running into too many problems. Like `error`, it
returns -1 after reporting the situation to the caller.
+These reports will be logged via the trace2 facility. See the "error"
+event in link:api-trace2.txt[trace2 API].
+
Customizable error handlers
---------------------------
diff --git a/technical/api-index.html b/technical/api-index.html
index d820c3a20..72f03a4fd 100644
--- a/technical/api-index.html
+++ b/technical/api-index.html
@@ -775,7 +775,7 @@ documents them.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-04-02 15:10:16 PDT
+ 2021-04-03 07:10:16 JST
</div>
</div>
</body>
diff --git a/technical/api-merge.html b/technical/api-merge.html
index b2ddb05bd..d6f544e8d 100644
--- a/technical/api-merge.html
+++ b/technical/api-merge.html
@@ -801,7 +801,7 @@ and <code>diff.c</code> for examples.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/technical/api-parse-options.html b/technical/api-parse-options.html
index f22b69fc1..71e44b7f8 100644
--- a/technical/api-parse-options.html
+++ b/technical/api-parse-options.html
@@ -1290,7 +1290,7 @@ for real-world examples.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-08-10 16:30:08 PDT
+ 2020-08-11 08:30:08 JST
</div>
</div>
</body>
diff --git a/technical/api-simple-ipc.html b/technical/api-simple-ipc.html
index d99956601..d1c9426eb 100644
--- a/technical/api-simple-ipc.html
+++ b/technical/api-simple-ipc.html
@@ -840,7 +840,7 @@ layer to focus on the application at hand.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-04-02 15:10:10 PDT
+ 2021-04-03 07:10:10 JST
</div>
</div>
</body>
diff --git a/technical/api-trace2.html b/technical/api-trace2.html
index f0be56a18..5044b0c54 100644
--- a/technical/api-trace2.html
+++ b/technical/api-trace2.html
@@ -1337,7 +1337,7 @@ completed.)</p></div>
</dt>
<dd>
<p>
- This event is emitted when one of the <code>error()</code>, <code>die()</code>,
+ This event is emitted when one of the <code>BUG()</code>, <code>error()</code>, <code>die()</code>,
<code>warning()</code>, or <code>usage()</code> functions are called.
</p>
<div class="listingblock">
@@ -2156,7 +2156,7 @@ Trace2 targets (and convert &lt;key&gt; to a "category").
<div id="footer">
<div id="footer-text">
Last updated
- 2020-12-08 16:10:07 PST
+ 2021-04-30 15:03:30 JST
</div>
</div>
</body>
diff --git a/technical/api-trace2.txt b/technical/api-trace2.txt
index c65ffafc4..3f52f981a 100644
--- a/technical/api-trace2.txt
+++ b/technical/api-trace2.txt
@@ -465,7 +465,7 @@ completed.)
------------
`"error"`::
- This event is emitted when one of the `error()`, `die()`,
+ This event is emitted when one of the `BUG()`, `error()`, `die()`,
`warning()`, or `usage()` functions are called.
+
------------
diff --git a/technical/hash-function-transition.html b/technical/hash-function-transition.html
index 0c3904b18..2513d0874 100644
--- a/technical/hash-function-transition.html
+++ b/technical/hash-function-transition.html
@@ -2087,7 +2087,7 @@ See the history of this file in git.git for the history of subsequent
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-22 16:54:23 PST
+ 2021-02-23 09:54:23 JST
</div>
</div>
</body>
diff --git a/technical/http-protocol.html b/technical/http-protocol.html
index d3b848ce4..39d6e2d51 100644
--- a/technical/http-protocol.html
+++ b/technical/http-protocol.html
@@ -1248,7 +1248,7 @@ link:technical/protocol-capabilities.html</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-08-19 16:37:10 PDT
+ 2020-08-20 08:37:10 JST
</div>
</div>
</body>
diff --git a/technical/index-format.html b/technical/index-format.html
index b5eab20e8..cc6c9db7e 100644
--- a/technical/index-format.html
+++ b/technical/index-format.html
@@ -820,6 +820,15 @@ with the same name are sorted by their stage field.</code></pre>
</div></div>
<div class="literalblock">
<div class="content">
+<pre><code>An index entry typically represents a file. However, if sparse-checkout
+is enabled in cone mode (`core.sparseCheckoutCone` is enabled) and the
+`extensions.sparseIndex` extension is enabled, then the index may
+contain entries for directories outside of the sparse-checkout definition.
+These entries have mode `040000`, include the `SKIP_WORKTREE` bit, and
+the path ends in a directory separator.</code></pre>
+</div></div>
+<div class="literalblock">
+<div class="content">
<pre><code>32-bit ctime seconds, the last time a file's metadata changed
this is stat(2) data</code></pre>
</div></div>
@@ -1433,12 +1442,29 @@ A number of index offset entries each consisting of:
</ul></div>
</div>
</div>
+<div class="sect1">
+<h2 id="_sparse_directory_entries">Sparse Directory Entries</h2>
+<div class="sectionbody">
+<div class="literalblock">
+<div class="content">
+<pre><code>When using sparse-checkout in cone mode, some entire directories within
+the index can be summarized by pointing to a tree object instead of the
+entire expanded list of paths within that tree. An index containing such
+entries is a "sparse index". Index format versions 4 and less were not
+implemented with such entries in mind. Thus, for these versions, an
+index containing sparse directory entries will include this extension
+with signature { 's', 'd', 'i', 'r' }. Like the split-index extension,
+tools should avoid interacting with a sparse index unless they understand
+this extension.</code></pre>
+</div></div>
+</div>
+</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-25 17:29:29 PST
+ 2021-04-30 15:03:30 JST
</div>
</div>
</body>
diff --git a/technical/index-format.txt b/technical/index-format.txt
index d363a71c3..65da0daaa 100644
--- a/technical/index-format.txt
+++ b/technical/index-format.txt
@@ -44,6 +44,13 @@ Git index format
localization, no special casing of directory separator '/'). Entries
with the same name are sorted by their stage field.
+ An index entry typically represents a file. However, if sparse-checkout
+ is enabled in cone mode (`core.sparseCheckoutCone` is enabled) and the
+ `extensions.sparseIndex` extension is enabled, then the index may
+ contain entries for directories outside of the sparse-checkout definition.
+ These entries have mode `040000`, include the `SKIP_WORKTREE` bit, and
+ the path ends in a directory separator.
+
32-bit ctime seconds, the last time a file's metadata changed
this is stat(2) data
@@ -385,3 +392,15 @@ The remaining data of each directory block is grouped by type:
in this block of entries.
- 32-bit count of cache entries in this block
+
+== Sparse Directory Entries
+
+ When using sparse-checkout in cone mode, some entire directories within
+ the index can be summarized by pointing to a tree object instead of the
+ entire expanded list of paths within that tree. An index containing such
+ entries is a "sparse index". Index format versions 4 and less were not
+ implemented with such entries in mind. Thus, for these versions, an
+ index containing sparse directory entries will include this extension
+ with signature { 's', 'd', 'i', 'r' }. Like the split-index extension,
+ tools should avoid interacting with a sparse index unless they understand
+ this extension.
diff --git a/technical/long-running-process-protocol.html b/technical/long-running-process-protocol.html
index 730362be7..79d2b02ea 100644
--- a/technical/long-running-process-protocol.html
+++ b/technical/long-running-process-protocol.html
@@ -795,7 +795,7 @@ process has stopped.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/technical/multi-pack-index.html b/technical/multi-pack-index.html
index 4c337fbfd..e0220db5d 100644
--- a/technical/multi-pack-index.html
+++ b/technical/multi-pack-index.html
@@ -913,7 +913,7 @@ The partial clone feature records special "promisor" packs that
<div id="footer">
<div id="footer-text">
Last updated
- 2021-04-08 14:45:29 PDT
+ 2021-04-09 06:45:29 JST
</div>
</div>
</body>
diff --git a/technical/pack-format.html b/technical/pack-format.html
index b3002425b..c0f964a67 100644
--- a/technical/pack-format.html
+++ b/technical/pack-format.html
@@ -1372,7 +1372,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:45:29 PDT
+ 2021-04-09 06:45:29 JST
</div>
</div>
</body>
diff --git a/technical/pack-heuristics.html b/technical/pack-heuristics.html
index 3e6da3f62..bd50aeebc 100644
--- a/technical/pack-heuristics.html
+++ b/technical/pack-heuristics.html
@@ -1343,7 +1343,7 @@ so obvious that they never go anywhere.</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2014-01-13 15:35:15 PST
+ 2014-01-14 08:35:15 JST
</div>
</div>
</body>
diff --git a/technical/pack-protocol.html b/technical/pack-protocol.html
index ff3743398..4cb047dfc 100644
--- a/technical/pack-protocol.html
+++ b/technical/pack-protocol.html
@@ -1470,7 +1470,7 @@ can be rejected.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-09-25 15:47:14 PDT
+ 2020-09-26 07:47:14 JST
</div>
</div>
</body>
diff --git a/technical/parallel-checkout.html b/technical/parallel-checkout.html
new file mode 100644
index 000000000..c575bb4e0
--- /dev/null
+++ b/technical/parallel-checkout.html
@@ -0,0 +1,1082 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+<meta name="generator" content="AsciiDoc 9.0.0rc2" />
+<title>Parallel Checkout Design Notes</title>
+<style type="text/css">
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
+
+/* Default font. */
+body {
+ font-family: Georgia,serif;
+}
+
+/* Title font. */
+h1, h2, h3, h4, h5, h6,
+div.title, caption.title,
+thead, p.table.header,
+#toctitle,
+#author, #revnumber, #revdate, #revremark,
+#footer {
+ font-family: Arial,Helvetica,sans-serif;
+}
+
+body {
+ margin: 1em 5% 1em 5%;
+}
+
+a {
+ color: blue;
+ text-decoration: underline;
+}
+a:visited {
+ color: fuchsia;
+}
+
+em {
+ font-style: italic;
+ color: navy;
+}
+
+strong {
+ font-weight: bold;
+ color: #083194;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: #527bbd;
+ margin-top: 1.2em;
+ margin-bottom: 0.5em;
+ line-height: 1.3;
+}
+
+h1, h2, h3 {
+ border-bottom: 2px solid silver;
+}
+h2 {
+ padding-top: 0.5em;
+}
+h3 {
+ float: left;
+}
+h3 + * {
+ clear: left;
+}
+h5 {
+ font-size: 1.0em;
+}
+
+div.sectionbody {
+ margin-left: 0;
+}
+
+hr {
+ border: 1px solid silver;
+}
+
+p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+ul, ol, li > p {
+ margin-top: 0;
+}
+ul > li { color: #aaa; }
+ul > li > * { color: black; }
+
+.monospaced, code, pre {
+ font-family: "Courier New", Courier, monospace;
+ font-size: inherit;
+ color: navy;
+ padding: 0;
+ margin: 0;
+}
+pre {
+ white-space: pre-wrap;
+}
+
+#author {
+ color: #527bbd;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+#email {
+}
+#revnumber, #revdate, #revremark {
+}
+
+#footer {
+ font-size: small;
+ border-top: 2px solid silver;
+ padding-top: 0.5em;
+ margin-top: 4.0em;
+}
+#footer-text {
+ float: left;
+ padding-bottom: 0.5em;
+}
+#footer-badges {
+ float: right;
+ padding-bottom: 0.5em;
+}
+
+#preamble {
+ margin-top: 1.5em;
+ margin-bottom: 1.5em;
+}
+div.imageblock, div.exampleblock, div.verseblock,
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
+div.admonitionblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.admonitionblock {
+ margin-top: 2.0em;
+ margin-bottom: 2.0em;
+ margin-right: 10%;
+ color: #606060;
+}
+
+div.content { /* Block element content. */
+ padding: 0;
+}
+
+/* Block element titles. */
+div.title, caption.title {
+ color: #527bbd;
+ font-weight: bold;
+ text-align: left;
+ margin-top: 1.0em;
+ margin-bottom: 0.5em;
+}
+div.title + * {
+ margin-top: 0;
+}
+
+td div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content + div.title {
+ margin-top: 0.0em;
+}
+
+div.sidebarblock > div.content {
+ background: #ffffee;
+ border: 1px solid #dddddd;
+ border-left: 4px solid #f0f0f0;
+ padding: 0.5em;
+}
+
+div.listingblock > div.content {
+ border: 1px solid #dddddd;
+ border-left: 5px solid #f0f0f0;
+ background: #f8f8f8;
+ padding: 0.5em;
+}
+
+div.quoteblock, div.verseblock {
+ padding-left: 1.0em;
+ margin-left: 1.0em;
+ margin-right: 10%;
+ border-left: 5px solid #f0f0f0;
+ color: #888;
+}
+
+div.quoteblock > div.attribution {
+ padding-top: 0.5em;
+ text-align: right;
+}
+
+div.verseblock > pre.content {
+ font-family: inherit;
+ font-size: inherit;
+}
+div.verseblock > div.attribution {
+ padding-top: 0.75em;
+ text-align: left;
+}
+/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
+div.verseblock + div.attribution {
+ text-align: left;
+}
+
+div.admonitionblock .icon {
+ vertical-align: top;
+ font-size: 1.1em;
+ font-weight: bold;
+ text-decoration: underline;
+ color: #527bbd;
+ padding-right: 0.5em;
+}
+div.admonitionblock td.content {
+ padding-left: 0.5em;
+ border-left: 3px solid #dddddd;
+}
+
+div.exampleblock > div.content {
+ border-left: 3px solid #dddddd;
+ padding-left: 0.5em;
+}
+
+div.imageblock div.content { padding-left: 0; }
+span.image img { border-style: none; vertical-align: text-bottom; }
+a.image:visited { color: white; }
+
+dl {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+dt {
+ margin-top: 0.5em;
+ margin-bottom: 0;
+ font-style: normal;
+ color: navy;
+}
+dd > *:first-child {
+ margin-top: 0.1em;
+}
+
+ul, ol {
+ list-style-position: outside;
+}
+ol.arabic {
+ list-style-type: decimal;
+}
+ol.loweralpha {
+ list-style-type: lower-alpha;
+}
+ol.upperalpha {
+ list-style-type: upper-alpha;
+}
+ol.lowerroman {
+ list-style-type: lower-roman;
+}
+ol.upperroman {
+ list-style-type: upper-roman;
+}
+
+div.compact ul, div.compact ol,
+div.compact p, div.compact p,
+div.compact div, div.compact div {
+ margin-top: 0.1em;
+ margin-bottom: 0.1em;
+}
+
+tfoot {
+ font-weight: bold;
+}
+td > div.verse {
+ white-space: pre;
+}
+
+div.hdlist {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+div.hdlist tr {
+ padding-bottom: 15px;
+}
+dt.hdlist1.strong, td.hdlist1.strong {
+ font-weight: bold;
+}
+td.hdlist1 {
+ vertical-align: top;
+ font-style: normal;
+ padding-right: 0.8em;
+ color: navy;
+}
+td.hdlist2 {
+ vertical-align: top;
+}
+div.hdlist.compact tr {
+ margin: 0;
+ padding-bottom: 0;
+}
+
+.comment {
+ background: yellow;
+}
+
+.footnote, .footnoteref {
+ font-size: 0.8em;
+}
+
+span.footnote, span.footnoteref {
+ vertical-align: super;
+}
+
+#footnotes {
+ margin: 20px 0 20px 0;
+ padding: 7px 0 0 0;
+}
+
+#footnotes div.footnote {
+ margin: 0 0 5px 0;
+}
+
+#footnotes hr {
+ border: none;
+ border-top: 1px solid silver;
+ height: 1px;
+ text-align: left;
+ margin-left: 0;
+ width: 20%;
+ min-width: 100px;
+}
+
+div.colist td {
+ padding-right: 0.5em;
+ padding-bottom: 0.3em;
+ vertical-align: top;
+}
+div.colist td img {
+ margin-top: 0.3em;
+}
+
+@media print {
+ #footer-badges { display: none; }
+}
+
+#toc {
+ margin-bottom: 2.5em;
+}
+
+#toctitle {
+ color: #527bbd;
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 1.0em;
+ margin-bottom: 0.1em;
+}
+
+div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+div.toclevel2 {
+ margin-left: 2em;
+ font-size: 0.9em;
+}
+div.toclevel3 {
+ margin-left: 4em;
+ font-size: 0.9em;
+}
+div.toclevel4 {
+ margin-left: 6em;
+ font-size: 0.9em;
+}
+
+span.aqua { color: aqua; }
+span.black { color: black; }
+span.blue { color: blue; }
+span.fuchsia { color: fuchsia; }
+span.gray { color: gray; }
+span.green { color: green; }
+span.lime { color: lime; }
+span.maroon { color: maroon; }
+span.navy { color: navy; }
+span.olive { color: olive; }
+span.purple { color: purple; }
+span.red { color: red; }
+span.silver { color: silver; }
+span.teal { color: teal; }
+span.white { color: white; }
+span.yellow { color: yellow; }
+
+span.aqua-background { background: aqua; }
+span.black-background { background: black; }
+span.blue-background { background: blue; }
+span.fuchsia-background { background: fuchsia; }
+span.gray-background { background: gray; }
+span.green-background { background: green; }
+span.lime-background { background: lime; }
+span.maroon-background { background: maroon; }
+span.navy-background { background: navy; }
+span.olive-background { background: olive; }
+span.purple-background { background: purple; }
+span.red-background { background: red; }
+span.silver-background { background: silver; }
+span.teal-background { background: teal; }
+span.white-background { background: white; }
+span.yellow-background { background: yellow; }
+
+span.big { font-size: 2em; }
+span.small { font-size: 0.6em; }
+
+span.underline { text-decoration: underline; }
+span.overline { text-decoration: overline; }
+span.line-through { text-decoration: line-through; }
+
+div.unbreakable { page-break-inside: avoid; }
+
+
+/*
+ * xhtml11 specific
+ *
+ * */
+
+div.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.tableblock > table {
+ border: 3px solid #527bbd;
+}
+thead, p.table.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.table {
+ margin-top: 0;
+}
+/* Because the table frame attribute is overridden by CSS in most browsers. */
+div.tableblock > table[frame="void"] {
+ border-style: none;
+}
+div.tableblock > table[frame="hsides"] {
+ border-left-style: none;
+ border-right-style: none;
+}
+div.tableblock > table[frame="vsides"] {
+ border-top-style: none;
+ border-bottom-style: none;
+}
+
+
+/*
+ * html5 specific
+ *
+ * */
+
+table.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+thead, p.tableblock.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.tableblock {
+ margin-top: 0;
+}
+table.tableblock {
+ border-width: 3px;
+ border-spacing: 0px;
+ border-style: solid;
+ border-color: #527bbd;
+ border-collapse: collapse;
+}
+th.tableblock, td.tableblock {
+ border-width: 1px;
+ padding: 4px;
+ border-style: solid;
+ border-color: #527bbd;
+}
+
+table.tableblock.frame-topbot {
+ border-left-style: hidden;
+ border-right-style: hidden;
+}
+table.tableblock.frame-sides {
+ border-top-style: hidden;
+ border-bottom-style: hidden;
+}
+table.tableblock.frame-none {
+ border-style: hidden;
+}
+
+th.tableblock.halign-left, td.tableblock.halign-left {
+ text-align: left;
+}
+th.tableblock.halign-center, td.tableblock.halign-center {
+ text-align: center;
+}
+th.tableblock.halign-right, td.tableblock.halign-right {
+ text-align: right;
+}
+
+th.tableblock.valign-top, td.tableblock.valign-top {
+ vertical-align: top;
+}
+th.tableblock.valign-middle, td.tableblock.valign-middle {
+ vertical-align: middle;
+}
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {
+ vertical-align: bottom;
+}
+
+
+/*
+ * manpage specific
+ *
+ * */
+
+body.manpage h1 {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-top: 2px solid silver;
+ border-bottom: 2px solid silver;
+}
+body.manpage h2 {
+ border-style: none;
+}
+body.manpage div.sectionbody {
+ margin-left: 3em;
+}
+
+@media print {
+ body.manpage div#toc { display: none; }
+}
+
+
+</style>
+<script type="text/javascript">
+/*<![CDATA[*/
+var asciidoc = { // Namespace.
+
+/////////////////////////////////////////////////////////////////////
+// Table Of Contents generator
+/////////////////////////////////////////////////////////////////////
+
+/* Author: Mihai Bazon, September 2002
+ * http://students.infoiasi.ro/~mishoo
+ *
+ * Table Of Content generator
+ * Version: 0.4
+ *
+ * Feel free to use this script under the terms of the GNU General Public
+ * License, as long as you do not remove or alter this notice.
+ */
+
+ /* modified by Troy D. Hanson, September 2006. License: GPL */
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */
+
+// toclevels = 1..4.
+toc: function (toclevels) {
+
+ function getText(el) {
+ var text = "";
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
+ if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
+ text += i.data;
+ else if (i.firstChild != null)
+ text += getText(i);
+ }
+ return text;
+ }
+
+ function TocEntry(el, text, toclevel) {
+ this.element = el;
+ this.text = text;
+ this.toclevel = toclevel;
+ }
+
+ function tocEntries(el, toclevels) {
+ var result = new Array;
+ var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
+ // Function that scans the DOM tree for header elements (the DOM2
+ // nodeIterator API would be a better technique but not supported by all
+ // browsers).
+ var iterate = function (el) {
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
+ if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
+ var mo = re.exec(i.tagName);
+ if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
+ result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
+ }
+ iterate(i);
+ }
+ }
+ }
+ iterate(el);
+ return result;
+ }
+
+ var toc = document.getElementById("toc");
+ if (!toc) {
+ return;
+ }
+
+ // Delete existing TOC entries in case we're reloading the TOC.
+ var tocEntriesToRemove = [];
+ var i;
+ for (i = 0; i < toc.childNodes.length; i++) {
+ var entry = toc.childNodes[i];
+ if (entry.nodeName.toLowerCase() == 'div'
+ && entry.getAttribute("class")
+ && entry.getAttribute("class").match(/^toclevel/))
+ tocEntriesToRemove.push(entry);
+ }
+ for (i = 0; i < tocEntriesToRemove.length; i++) {
+ toc.removeChild(tocEntriesToRemove[i]);
+ }
+
+ // Rebuild TOC entries.
+ var entries = tocEntries(document.getElementById("content"), toclevels);
+ for (var i = 0; i < entries.length; ++i) {
+ var entry = entries[i];
+ if (entry.element.id == "")
+ entry.element.id = "_toc_" + i;
+ var a = document.createElement("a");
+ a.href = "#" + entry.element.id;
+ a.appendChild(document.createTextNode(entry.text));
+ var div = document.createElement("div");
+ div.appendChild(a);
+ div.className = "toclevel" + entry.toclevel;
+ toc.appendChild(div);
+ }
+ if (entries.length == 0)
+ toc.parentNode.removeChild(toc);
+},
+
+
+/////////////////////////////////////////////////////////////////////
+// Footnotes generator
+/////////////////////////////////////////////////////////////////////
+
+/* Based on footnote generation code from:
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
+ */
+
+footnotes: function () {
+ // Delete existing footnote entries in case we're reloading the footnodes.
+ var i;
+ var noteholder = document.getElementById("footnotes");
+ if (!noteholder) {
+ return;
+ }
+ var entriesToRemove = [];
+ for (i = 0; i < noteholder.childNodes.length; i++) {
+ var entry = noteholder.childNodes[i];
+ if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
+ entriesToRemove.push(entry);
+ }
+ for (i = 0; i < entriesToRemove.length; i++) {
+ noteholder.removeChild(entriesToRemove[i]);
+ }
+
+ // Rebuild footnote entries.
+ var cont = document.getElementById("content");
+ var spans = cont.getElementsByTagName("span");
+ var refs = {};
+ var n = 0;
+ for (i=0; i<spans.length; i++) {
+ if (spans[i].className == "footnote") {
+ n++;
+ var note = spans[i].getAttribute("data-note");
+ if (!note) {
+ // Use [\s\S] in place of . so multi-line matches work.
+ // Because JavaScript has no s (dotall) regex flag.
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
+ spans[i].innerHTML =
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
+ spans[i].setAttribute("data-note", note);
+ }
+ noteholder.innerHTML +=
+ "<div class='footnote' id='_footnote_" + n + "'>" +
+ "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
+ n + "</a>. " + note + "</div>";
+ var id =spans[i].getAttribute("id");
+ if (id != null) refs["#"+id] = n;
+ }
+ }
+ if (n == 0)
+ noteholder.parentNode.removeChild(noteholder);
+ else {
+ // Process footnoterefs.
+ for (i=0; i<spans.length; i++) {
+ if (spans[i].className == "footnoteref") {
+ var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
+ href = href.match(/#.*/)[0]; // Because IE return full URL.
+ n = refs[href];
+ spans[i].innerHTML =
+ "[<a href='#_footnote_" + n +
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
+ }
+ }
+ }
+},
+
+install: function(toclevels) {
+ var timerId;
+
+ function reinstall() {
+ asciidoc.footnotes();
+ if (toclevels) {
+ asciidoc.toc(toclevels);
+ }
+ }
+
+ function reinstallAndRemoveTimer() {
+ clearInterval(timerId);
+ reinstall();
+ }
+
+ timerId = setInterval(reinstall, 500);
+ if (document.addEventListener)
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
+ else
+ window.onload = reinstallAndRemoveTimer;
+}
+
+}
+asciidoc.install();
+/*]]>*/
+</script>
+</head>
+<body class="article">
+<div id="header">
+<h1>Parallel Checkout Design Notes</h1>
+</div>
+<div id="content">
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph"><p>The "Parallel Checkout" feature attempts to use multiple processes to
+parallelize the work of uncompressing the blobs, applying in-core
+filters, and writing the resulting contents to the working tree during a
+checkout operation. It can be used by all checkout-related commands,
+such as <code>clone</code>, <code>checkout</code>, <code>reset</code>, <code>sparse-checkout</code>, and others.</p></div>
+<div class="paragraph"><p>These commands share the following basic structure:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Step 1: Read the current index file into memory.
+</p>
+</li>
+<li>
+<p>
+Step 2: Modify the in-memory index based upon the command, and
+ temporarily mark all cache entries that need to be updated.
+</p>
+</li>
+<li>
+<p>
+Step 3: Populate the working tree to match the new candidate index.
+ This includes iterating over all of the to-be-updated cache entries
+ and delete, create, or overwrite the associated files in the working
+ tree.
+</p>
+</li>
+<li>
+<p>
+Step 4: Write the new index to disk.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>Step 3 is the focus of the "parallel checkout" effort described here.</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_sequential_implementation">Sequential Implementation</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>For the purposes of discussion here, the current sequential
+implementation of Step 3 is divided in 3 parts, each one implemented in
+its own function:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Step 3a: <code>unpack-trees.c:check_updates()</code> contains a series of
+ sequential loops iterating over the <code>cache_entry</code>'s array. The main
+ loop in this function calls the Step 3b function for each of the
+ to-be-updated entries.
+</p>
+</li>
+<li>
+<p>
+Step 3b: <code>entry.c:checkout_entry()</code> examines the existing working tree
+ for file conflicts, collisions, and unsaved changes. It removes files
+ and creates leading directories as necessary. It calls the Step 3c
+ function for each entry to be written.
+</p>
+</li>
+<li>
+<p>
+Step 3c: <code>entry.c:write_entry()</code> loads the blob into memory, smudges
+ it if necessary, creates the file in the working tree, writes the
+ smudged contents, calls <code>fstat()</code> or <code>lstat()</code>, and updates the
+ associated <code>cache_entry</code> struct with the stat information gathered.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>It wouldn&#8217;t be safe to perform Step 3b in parallel, as there could be
+race conditions between file creations and removals. Instead, the
+parallel checkout framework lets the sequential code handle Step 3b,
+and uses parallel workers to replace the sequential
+<code>entry.c:write_entry()</code> calls from Step 3c.</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_rejected_multi_threaded_solution">Rejected Multi-Threaded Solution</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>The most "straightforward" implementation would be to spread the set of
+to-be-updated cache entries across multiple threads. But due to the
+thread-unsafe functions in the ODB code, we would have to use locks to
+coordinate the parallel operation. An early prototype of this solution
+showed that the multi-threaded checkout would bring performance
+improvements over the sequential code, but there was still too much lock
+contention. A <code>perf</code> profiling indicated that around 20% of the runtime
+during a local Linux clone (on an SSD) was spent in locking functions.
+For this reason this approach was rejected in favor of using multiple
+child processes, which led to a better performance.</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_multi_process_solution">Multi-Process Solution</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Parallel checkout alters the aforementioned Step 3 to use multiple
+<code>checkout--worker</code> background processes to distribute the work. The
+long-running worker processes are controlled by the foreground Git
+command using the existing run-command API.</p></div>
+<div class="sect2">
+<h3 id="_overview">Overview</h3>
+<div class="paragraph"><p>Step 3b is only slightly altered; for each entry to be checked out, the
+main process performs the following steps:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+M1: Check whether there is any untracked or unclean file in the
+ working tree which would be overwritten by this entry, and decide
+ whether to proceed (removing the file(s)) or not.
+</p>
+</li>
+<li>
+<p>
+M2: Create the leading directories.
+</p>
+</li>
+<li>
+<p>
+M3: Load the conversion attributes for the entry&#8217;s path.
+</p>
+</li>
+<li>
+<p>
+M4: Check, based on the entry&#8217;s type and conversion attributes,
+ whether the entry is eligible for parallel checkout (more on this
+ later). If it is eligible, enqueue the entry and the loaded
+ attributes to later write the entry in parallel. If not, write the
+ entry right away, using the default sequential code.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>Note: we save the conversion attributes associated with each entry
+because the workers don&#8217;t have access to the main process' index state,
+so they can&#8217;t load the attributes by themselves (and the attributes are
+needed to properly smudge the entry). Additionally, this has a positive
+impact on performance as (1) we don&#8217;t need to load the attributes twice
+and (2) the attributes machinery is optimized to handle paths in
+sequential order.</p></div>
+<div class="paragraph"><p>After all entries have passed through the above steps, the main process
+checks if the number of enqueued entries is sufficient to spread among
+the workers. If not, it just writes them sequentially. Otherwise, it
+spawns the workers and distributes the queued entries uniformly in
+continuous chunks. This aims to minimize the chances of two workers
+writing to the same directory simultaneously, which could increase lock
+contention in the kernel.</p></div>
+<div class="paragraph"><p>Then, for each assigned item, each worker:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+W1: Checks if there is any non-directory file in the leading part of
+ the entry&#8217;s path or if there already exists a file at the entry' path.
+ If so, mark the entry with <code>PC_ITEM_COLLIDED</code> and skip it (more on
+ this later).
+</p>
+</li>
+<li>
+<p>
+W2: Creates the file (with O_CREAT and O_EXCL).
+</p>
+</li>
+<li>
+<p>
+W3: Loads the blob into memory (inflating and delta reconstructing
+ it).
+</p>
+</li>
+<li>
+<p>
+W4: Applies any required in-process filter, like end-of-line
+ conversion and re-encoding.
+</p>
+</li>
+<li>
+<p>
+W5: Writes the result to the file descriptor opened at W2.
+</p>
+</li>
+<li>
+<p>
+W6: Calls <code>fstat()</code> or lstat()` on the just-written path, and sends
+ the result back to the main process, together with the end status of
+ the operation and the item&#8217;s identification number.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>Note that, when possible, steps W3 to W5 are delegated to the streaming
+machinery, removing the need to keep the entire blob in memory.</p></div>
+<div class="paragraph"><p>If the worker fails to read the blob or to write it to the working tree,
+it removes the created file to avoid leaving empty files behind. This is
+the <strong>only</strong> time a worker is allowed to remove a file.</p></div>
+<div class="paragraph"><p>As mentioned earlier, it is the responsibility of the main process to
+remove any file that blocks the checkout operation (or abort if the
+removal(s) would cause data loss and the user didn&#8217;t ask to <code>--force</code>).
+This is crucial to avoid race conditions and also to properly detect
+path collisions at Step W1.</p></div>
+<div class="paragraph"><p>After the workers finish writing the items and sending back the required
+information, the main process handles the results in two steps:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+First, it updates the in-memory index with the <code>lstat()</code> information
+ sent by the workers. (This must be done first as this information
+ might me required in the following step.)
+</p>
+</li>
+<li>
+<p>
+Then it writes the items which collided on disk (i.e. items marked
+ with <code>PC_ITEM_COLLIDED</code>). More on this below.
+</p>
+</li>
+</ul></div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_path_collisions">Path Collisions</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Path collisions happen when two different paths correspond to the same
+entry in the file system. E.g. the paths <em>a</em> and <em>A</em> would collide in a
+case-insensitive file system.</p></div>
+<div class="paragraph"><p>The sequential checkout deals with collisions in the same way that it
+deals with files that were already present in the working tree before
+checkout. Basically, it checks if the path that it wants to write
+already exists on disk, makes sure the existing file doesn&#8217;t have
+unsaved data, and then overwrites it. (To be more pedantic: it deletes
+the existing file and creates the new one.) So, if there are multiple
+colliding files to be checked out, the sequential code will write each
+one of them but only the last will actually survive on disk.</p></div>
+<div class="paragraph"><p>Parallel checkout aims to reproduce the same behavior. However, we
+cannot let the workers racily write to the same file on disk. Instead,
+the workers detect when the entry that they want to check out would
+collide with an existing file, and mark it with <code>PC_ITEM_COLLIDED</code>.
+Later, the main process can sequentially feed these entries back to
+<code>checkout_entry()</code> without the risk of race conditions. On clone, this
+also has the effect of marking the colliding entries to later emit a
+warning for the user, like the classic sequential checkout does.</p></div>
+<div class="paragraph"><p>The workers are able to detect both collisions among the entries being
+concurrently written and collisions between a parallel-eligible entry
+and an ineligible entry. The general idea for collision detection is
+quite straightforward: for each parallel-eligible entry, the main
+process must remove all files that prevent this entry from being written
+(before enqueueing it). This includes any non-directory file in the
+leading path of the entry. Later, when a worker gets assigned the entry,
+it looks again for the non-directories files and for an already existing
+file at the entry&#8217;s path. If any of these checks finds something, the
+worker knows that there was a path collision.</p></div>
+<div class="paragraph"><p>Because parallel checkout can distinguish path collisions from the case
+where the file was already present in the working tree before checkout,
+we could alternatively choose to skip the checkout of colliding entries.
+However, each entry that doesn&#8217;t get written would have NULL <code>lstat()</code>
+fields on the index. This could cause performance penalties for
+subsequent commands that need to refresh the index, as they would have
+to go to the file system to see if the entry is dirty. Thus, if we have
+N entries in a colliding group and we decide to write and <code>lstat()</code> only
+one of them, every subsequent <code>git-status</code> will have to read, convert,
+and hash the written file N - 1 times. By checking out all colliding
+entries (like the sequential code does), we only pay the overhead once,
+during checkout.</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_eligible_entries_for_parallel_checkout">Eligible Entries for Parallel Checkout</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>As previously mentioned, not all entries passed to <code>checkout_entry()</code>
+will be considered eligible for parallel checkout. More specifically, we
+exclude:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Symbolic links; to avoid race conditions that, in combination with
+ path collisions, could cause workers to write files at the wrong
+ place. For example, if we were to concurrently check out a symlink
+ <em>a</em> &#8594; <em>b</em> and a regular file <em>A/f</em> in a case-insensitive file system,
+ we could potentially end up writing the file <em>A/f</em> at <em>a/f</em>, due to a
+ race condition.
+</p>
+</li>
+<li>
+<p>
+Regular files that require external filters (either "one shot" filters
+ or long-running process filters). These filters are black-boxes to Git
+ and may have their own internal locking or non-concurrent assumptions.
+ So it might not be safe to run multiple instances in parallel.
+</p>
+<div class="paragraph"><p>Besides, long-running filters may use the delayed checkout feature to
+postpone the return of some filtered blobs. The delayed checkout queue
+and the parallel checkout queue are not compatible and should remain
+separate.</p></div>
+<div class="paragraph"><p>Note: regular files that only require internal filters, like end-of-line
+conversion and re-encoding, are eligible for parallel checkout.</p></div>
+</li>
+</ul></div>
+<div class="paragraph"><p>Ineligible entries are checked out by the classic sequential codepath
+<strong>before</strong> spawning workers.</p></div>
+<div class="paragraph"><p>Note: submodules&#8217;s files are also eligible for parallel checkout (as
+long as they don&#8217;t fall into any of the excluding categories mentioned
+above). But since each submodule is checked out in its own child
+process, we don&#8217;t mix the superproject&#8217;s and the submodules' files in
+the same parallel checkout process or queue.</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_the_api">The API</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>The parallel checkout API was designed with the goal of minimizing
+changes to the current users of the checkout machinery. This means that
+they don&#8217;t have to call a different function for sequential or parallel
+checkout. As already mentioned, <code>checkout_entry()</code> will automatically
+insert the given entry in the parallel checkout queue when this feature
+is enabled and the entry is eligible; otherwise, it will just write the
+entry right away, using the sequential code. In general, callers of the
+parallel checkout API should look similar to this:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code>int pc_workers, pc_threshold, err = 0;
+struct checkout state;
+
+get_parallel_checkout_configs(&amp;pc_workers, &amp;pc_threshold);
+
+/*
+ * This check is not strictly required, but it
+ * should save some time in sequential mode.
+ */
+if (pc_workers &gt; 1)
+ init_parallel_checkout();
+
+for (each cache_entry ce to-be-updated)
+ err |= checkout_entry(ce, &amp;state, NULL, NULL);
+
+err |= run_parallel_checkout(&amp;state, pc_workers, pc_threshold, NULL, NULL);</code></pre>
+</div></div>
+</div>
+</div>
+</div>
+<div id="footnotes"><hr /></div>
+<div id="footer">
+<div id="footer-text">
+Last updated
+ 2021-04-30 15:03:30 JST
+</div>
+</div>
+</body>
+</html>
diff --git a/technical/parallel-checkout.txt b/technical/parallel-checkout.txt
new file mode 100644
index 000000000..e790258a1
--- /dev/null
+++ b/technical/parallel-checkout.txt
@@ -0,0 +1,270 @@
+Parallel Checkout Design Notes
+==============================
+
+The "Parallel Checkout" feature attempts to use multiple processes to
+parallelize the work of uncompressing the blobs, applying in-core
+filters, and writing the resulting contents to the working tree during a
+checkout operation. It can be used by all checkout-related commands,
+such as `clone`, `checkout`, `reset`, `sparse-checkout`, and others.
+
+These commands share the following basic structure:
+
+* Step 1: Read the current index file into memory.
+
+* Step 2: Modify the in-memory index based upon the command, and
+ temporarily mark all cache entries that need to be updated.
+
+* Step 3: Populate the working tree to match the new candidate index.
+ This includes iterating over all of the to-be-updated cache entries
+ and delete, create, or overwrite the associated files in the working
+ tree.
+
+* Step 4: Write the new index to disk.
+
+Step 3 is the focus of the "parallel checkout" effort described here.
+
+Sequential Implementation
+-------------------------
+
+For the purposes of discussion here, the current sequential
+implementation of Step 3 is divided in 3 parts, each one implemented in
+its own function:
+
+* Step 3a: `unpack-trees.c:check_updates()` contains a series of
+ sequential loops iterating over the `cache_entry`'s array. The main
+ loop in this function calls the Step 3b function for each of the
+ to-be-updated entries.
+
+* Step 3b: `entry.c:checkout_entry()` examines the existing working tree
+ for file conflicts, collisions, and unsaved changes. It removes files
+ and creates leading directories as necessary. It calls the Step 3c
+ function for each entry to be written.
+
+* Step 3c: `entry.c:write_entry()` loads the blob into memory, smudges
+ it if necessary, creates the file in the working tree, writes the
+ smudged contents, calls `fstat()` or `lstat()`, and updates the
+ associated `cache_entry` struct with the stat information gathered.
+
+It wouldn't be safe to perform Step 3b in parallel, as there could be
+race conditions between file creations and removals. Instead, the
+parallel checkout framework lets the sequential code handle Step 3b,
+and uses parallel workers to replace the sequential
+`entry.c:write_entry()` calls from Step 3c.
+
+Rejected Multi-Threaded Solution
+--------------------------------
+
+The most "straightforward" implementation would be to spread the set of
+to-be-updated cache entries across multiple threads. But due to the
+thread-unsafe functions in the ODB code, we would have to use locks to
+coordinate the parallel operation. An early prototype of this solution
+showed that the multi-threaded checkout would bring performance
+improvements over the sequential code, but there was still too much lock
+contention. A `perf` profiling indicated that around 20% of the runtime
+during a local Linux clone (on an SSD) was spent in locking functions.
+For this reason this approach was rejected in favor of using multiple
+child processes, which led to a better performance.
+
+Multi-Process Solution
+----------------------
+
+Parallel checkout alters the aforementioned Step 3 to use multiple
+`checkout--worker` background processes to distribute the work. The
+long-running worker processes are controlled by the foreground Git
+command using the existing run-command API.
+
+Overview
+~~~~~~~~
+
+Step 3b is only slightly altered; for each entry to be checked out, the
+main process performs the following steps:
+
+* M1: Check whether there is any untracked or unclean file in the
+ working tree which would be overwritten by this entry, and decide
+ whether to proceed (removing the file(s)) or not.
+
+* M2: Create the leading directories.
+
+* M3: Load the conversion attributes for the entry's path.
+
+* M4: Check, based on the entry's type and conversion attributes,
+ whether the entry is eligible for parallel checkout (more on this
+ later). If it is eligible, enqueue the entry and the loaded
+ attributes to later write the entry in parallel. If not, write the
+ entry right away, using the default sequential code.
+
+Note: we save the conversion attributes associated with each entry
+because the workers don't have access to the main process' index state,
+so they can't load the attributes by themselves (and the attributes are
+needed to properly smudge the entry). Additionally, this has a positive
+impact on performance as (1) we don't need to load the attributes twice
+and (2) the attributes machinery is optimized to handle paths in
+sequential order.
+
+After all entries have passed through the above steps, the main process
+checks if the number of enqueued entries is sufficient to spread among
+the workers. If not, it just writes them sequentially. Otherwise, it
+spawns the workers and distributes the queued entries uniformly in
+continuous chunks. This aims to minimize the chances of two workers
+writing to the same directory simultaneously, which could increase lock
+contention in the kernel.
+
+Then, for each assigned item, each worker:
+
+* W1: Checks if there is any non-directory file in the leading part of
+ the entry's path or if there already exists a file at the entry' path.
+ If so, mark the entry with `PC_ITEM_COLLIDED` and skip it (more on
+ this later).
+
+* W2: Creates the file (with O_CREAT and O_EXCL).
+
+* W3: Loads the blob into memory (inflating and delta reconstructing
+ it).
+
+* W4: Applies any required in-process filter, like end-of-line
+ conversion and re-encoding.
+
+* W5: Writes the result to the file descriptor opened at W2.
+
+* W6: Calls `fstat()` or lstat()` on the just-written path, and sends
+ the result back to the main process, together with the end status of
+ the operation and the item's identification number.
+
+Note that, when possible, steps W3 to W5 are delegated to the streaming
+machinery, removing the need to keep the entire blob in memory.
+
+If the worker fails to read the blob or to write it to the working tree,
+it removes the created file to avoid leaving empty files behind. This is
+the *only* time a worker is allowed to remove a file.
+
+As mentioned earlier, it is the responsibility of the main process to
+remove any file that blocks the checkout operation (or abort if the
+removal(s) would cause data loss and the user didn't ask to `--force`).
+This is crucial to avoid race conditions and also to properly detect
+path collisions at Step W1.
+
+After the workers finish writing the items and sending back the required
+information, the main process handles the results in two steps:
+
+- First, it updates the in-memory index with the `lstat()` information
+ sent by the workers. (This must be done first as this information
+ might me required in the following step.)
+
+- Then it writes the items which collided on disk (i.e. items marked
+ with `PC_ITEM_COLLIDED`). More on this below.
+
+Path Collisions
+---------------
+
+Path collisions happen when two different paths correspond to the same
+entry in the file system. E.g. the paths 'a' and 'A' would collide in a
+case-insensitive file system.
+
+The sequential checkout deals with collisions in the same way that it
+deals with files that were already present in the working tree before
+checkout. Basically, it checks if the path that it wants to write
+already exists on disk, makes sure the existing file doesn't have
+unsaved data, and then overwrites it. (To be more pedantic: it deletes
+the existing file and creates the new one.) So, if there are multiple
+colliding files to be checked out, the sequential code will write each
+one of them but only the last will actually survive on disk.
+
+Parallel checkout aims to reproduce the same behavior. However, we
+cannot let the workers racily write to the same file on disk. Instead,
+the workers detect when the entry that they want to check out would
+collide with an existing file, and mark it with `PC_ITEM_COLLIDED`.
+Later, the main process can sequentially feed these entries back to
+`checkout_entry()` without the risk of race conditions. On clone, this
+also has the effect of marking the colliding entries to later emit a
+warning for the user, like the classic sequential checkout does.
+
+The workers are able to detect both collisions among the entries being
+concurrently written and collisions between a parallel-eligible entry
+and an ineligible entry. The general idea for collision detection is
+quite straightforward: for each parallel-eligible entry, the main
+process must remove all files that prevent this entry from being written
+(before enqueueing it). This includes any non-directory file in the
+leading path of the entry. Later, when a worker gets assigned the entry,
+it looks again for the non-directories files and for an already existing
+file at the entry's path. If any of these checks finds something, the
+worker knows that there was a path collision.
+
+Because parallel checkout can distinguish path collisions from the case
+where the file was already present in the working tree before checkout,
+we could alternatively choose to skip the checkout of colliding entries.
+However, each entry that doesn't get written would have NULL `lstat()`
+fields on the index. This could cause performance penalties for
+subsequent commands that need to refresh the index, as they would have
+to go to the file system to see if the entry is dirty. Thus, if we have
+N entries in a colliding group and we decide to write and `lstat()` only
+one of them, every subsequent `git-status` will have to read, convert,
+and hash the written file N - 1 times. By checking out all colliding
+entries (like the sequential code does), we only pay the overhead once,
+during checkout.
+
+Eligible Entries for Parallel Checkout
+--------------------------------------
+
+As previously mentioned, not all entries passed to `checkout_entry()`
+will be considered eligible for parallel checkout. More specifically, we
+exclude:
+
+- Symbolic links; to avoid race conditions that, in combination with
+ path collisions, could cause workers to write files at the wrong
+ place. For example, if we were to concurrently check out a symlink
+ 'a' -> 'b' and a regular file 'A/f' in a case-insensitive file system,
+ we could potentially end up writing the file 'A/f' at 'a/f', due to a
+ race condition.
+
+- Regular files that require external filters (either "one shot" filters
+ or long-running process filters). These filters are black-boxes to Git
+ and may have their own internal locking or non-concurrent assumptions.
+ So it might not be safe to run multiple instances in parallel.
++
+Besides, long-running filters may use the delayed checkout feature to
+postpone the return of some filtered blobs. The delayed checkout queue
+and the parallel checkout queue are not compatible and should remain
+separate.
++
+Note: regular files that only require internal filters, like end-of-line
+conversion and re-encoding, are eligible for parallel checkout.
+
+Ineligible entries are checked out by the classic sequential codepath
+*before* spawning workers.
+
+Note: submodules's files are also eligible for parallel checkout (as
+long as they don't fall into any of the excluding categories mentioned
+above). But since each submodule is checked out in its own child
+process, we don't mix the superproject's and the submodules' files in
+the same parallel checkout process or queue.
+
+The API
+-------
+
+The parallel checkout API was designed with the goal of minimizing
+changes to the current users of the checkout machinery. This means that
+they don't have to call a different function for sequential or parallel
+checkout. As already mentioned, `checkout_entry()` will automatically
+insert the given entry in the parallel checkout queue when this feature
+is enabled and the entry is eligible; otherwise, it will just write the
+entry right away, using the sequential code. In general, callers of the
+parallel checkout API should look similar to this:
+
+----------------------------------------------
+int pc_workers, pc_threshold, err = 0;
+struct checkout state;
+
+get_parallel_checkout_configs(&pc_workers, &pc_threshold);
+
+/*
+ * This check is not strictly required, but it
+ * should save some time in sequential mode.
+ */
+if (pc_workers > 1)
+ init_parallel_checkout();
+
+for (each cache_entry ce to-be-updated)
+ err |= checkout_entry(ce, &state, NULL, NULL);
+
+err |= run_parallel_checkout(&state, pc_workers, pc_threshold, NULL, NULL);
+----------------------------------------------
diff --git a/technical/partial-clone.html b/technical/partial-clone.html
index 2010eaa36..e73d17e68 100644
--- a/technical/partial-clone.html
+++ b/technical/partial-clone.html
@@ -1213,7 +1213,7 @@ type of packfile that references it.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-09-03 13:19:53 PDT
+ 2020-09-04 05:19:53 JST
</div>
</div>
</body>
diff --git a/technical/protocol-capabilities.html b/technical/protocol-capabilities.html
index 19fe6aad9..e6535c47b 100644
--- a/technical/protocol-capabilities.html
+++ b/technical/protocol-capabilities.html
@@ -1130,7 +1130,7 @@ the session ID should not rely on this fact.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-12-08 16:10:07 PST
+ 2020-12-09 09:10:07 JST
</div>
</div>
</body>
diff --git a/technical/protocol-common.html b/technical/protocol-common.html
index cec9937e6..8b449550f 100644
--- a/technical/protocol-common.html
+++ b/technical/protocol-common.html
@@ -859,7 +859,7 @@ pkt-line ("0004").</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2016-08-31 14:16:00 PDT
+ 2016-09-01 06:16:00 JST
</div>
</div>
</body>
diff --git a/technical/protocol-v2.html b/technical/protocol-v2.html
index 72b553c45..70a0a2122 100644
--- a/technical/protocol-v2.html
+++ b/technical/protocol-v2.html
@@ -1412,7 +1412,7 @@ the session ID should not rely on this fact.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-02-25 17:29:29 PST
+ 2021-02-26 10:29:29 JST
</div>
</div>
</body>
diff --git a/technical/racy-git.html b/technical/racy-git.html
index 0e870544c..3b494fb45 100644
--- a/technical/racy-git.html
+++ b/technical/racy-git.html
@@ -952,7 +952,7 @@ practice anymore. This was done with commit 0fc82cff on Aug 15,
<div id="footer">
<div id="footer-text">
Last updated
- 2020-03-10 08:03:13 PDT
+ 2020-03-11 00:03:13 JST
</div>
</div>
</body>
diff --git a/technical/reftable.html b/technical/reftable.html
index 544baf859..234451b81 100644
--- a/technical/reftable.html
+++ b/technical/reftable.html
@@ -1925,8 +1925,36 @@ from being deleted.</p></div>
reftable stack, reload <code>tables.list</code>, and delete any tables no longer mentioned
in <code>tables.list</code>.</p></div>
<div class="paragraph"><p>Irregular program exit may still leave about unused files. In this case, a
-cleanup operation can read <code>tables.list</code>, note its modification timestamp, and
-delete any unreferenced <code>*.ref</code> files that are older.</p></div>
+cleanup operation should proceed as follows:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+take a lock <code>tables.list.lock</code> to prevent concurrent modifications
+</p>
+</li>
+<li>
+<p>
+refresh the reftable stack, by reading <code>tables.list</code>
+</p>
+</li>
+<li>
+<p>
+for each <code>*.ref</code> file, remove it if
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+it is not mentioned in <code>tables.list</code>, and
+</p>
+</li>
+<li>
+<p>
+its max update_index is not beyond the max update_index of the stack
+</p>
+</li>
+</ul></div>
+</li>
+</ul></div>
</div>
</div>
<div class="sect2">
@@ -2028,7 +2056,7 @@ impossible.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-03-02 23:05:01 PST
+ 2021-04-30 15:03:30 JST
</div>
</div>
</body>
diff --git a/technical/reftable.txt b/technical/reftable.txt
index 3ef169af2..d7c3b645c 100644
--- a/technical/reftable.txt
+++ b/technical/reftable.txt
@@ -1011,8 +1011,13 @@ reftable stack, reload `tables.list`, and delete any tables no longer mentioned
in `tables.list`.
Irregular program exit may still leave about unused files. In this case, a
-cleanup operation can read `tables.list`, note its modification timestamp, and
-delete any unreferenced `*.ref` files that are older.
+cleanup operation should proceed as follows:
+
+* take a lock `tables.list.lock` to prevent concurrent modifications
+* refresh the reftable stack, by reading `tables.list`
+* for each `*.ref` file, remove it if
+** it is not mentioned in `tables.list`, and
+** its max update_index is not beyond the max update_index of the stack
Alternatives considered
diff --git a/technical/send-pack-pipeline.html b/technical/send-pack-pipeline.html
index 234792c5c..54d16da6f 100644
--- a/technical/send-pack-pipeline.html
+++ b/technical/send-pack-pipeline.html
@@ -827,7 +827,7 @@ closes the reading side of the pipe and fd to receive-pack.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2013-08-20 08:40:27 PDT
+ 2013-08-21 00:40:27 JST
</div>
</div>
</body>
diff --git a/technical/shallow.html b/technical/shallow.html
index 70a8cda86..e381425d3 100644
--- a/technical/shallow.html
+++ b/technical/shallow.html
@@ -813,7 +813,7 @@ number a signed 32-bit integer can contain) means infinite depth.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2020-08-19 16:37:10 PDT
+ 2020-08-20 08:37:10 JST
</div>
</div>
</body>
diff --git a/technical/signature-format.html b/technical/signature-format.html
index 89583e260..ade958150 100644
--- a/technical/signature-format.html
+++ b/technical/signature-format.html
@@ -997,7 +997,7 @@ Date: Wed Jun 15 09:13:29 2016 +0000
<div id="footer">
<div id="footer-text">
Last updated
- 2016-07-06 14:33:48 PDT
+ 2016-07-07 06:33:48 JST
</div>
</div>
</body>
diff --git a/technical/sparse-index.txt b/technical/sparse-index.txt
new file mode 100644
index 000000000..3b24c1a21
--- /dev/null
+++ b/technical/sparse-index.txt
@@ -0,0 +1,208 @@
+Git Sparse-Index Design Document
+================================
+
+The sparse-checkout feature allows users to focus a working directory on
+a subset of the files at HEAD. The cone mode patterns, enabled by
+`core.sparseCheckoutCone`, allow for very fast pattern matching to
+discover which files at HEAD belong in the sparse-checkout cone.
+
+Three important scale dimensions for a Git working directory are:
+
+* `HEAD`: How many files are present at `HEAD`?
+
+* Populated: How many files are within the sparse-checkout cone.
+
+* Modified: How many files has the user modified in the working directory?
+
+We will use big-O notation -- O(X) -- to denote how expensive certain
+operations are in terms of these dimensions.
+
+These dimensions are ordered by their magnitude: users (typically) modify
+fewer files than are populated, and we can only populate files at `HEAD`.
+
+Problems occur if there is an extreme imbalance in these dimensions. For
+example, if `HEAD` contains millions of paths but the populated set has
+only tens of thousands, then commands like `git status` and `git add` can
+be dominated by operations that require O(`HEAD`) operations instead of
+O(Populated). Primarily, the cost is in parsing and rewriting the index,
+which is filled primarily with files at `HEAD` that are marked with the
+`SKIP_WORKTREE` bit.
+
+The sparse-index intends to take these commands that read and modify the
+index from O(`HEAD`) to O(Populated). To do this, we need to modify the
+index format in a significant way: add "sparse directory" entries.
+
+With cone mode patterns, it is possible to detect when an entire
+directory will have its contents outside of the sparse-checkout definition.
+Instead of listing all of the files it contains as individual entries, a
+sparse-index contains an entry with the directory name, referencing the
+object ID of the tree at `HEAD` and marked with the `SKIP_WORKTREE` bit.
+If we need to discover the details for paths within that directory, we
+can parse trees to find that list.
+
+At time of writing, sparse-directory entries violate expectations about the
+index format and its in-memory data structure. There are many consumers in
+the codebase that expect to iterate through all of the index entries and
+see only files. In fact, these loops expect to see a reference to every
+staged file. One way to handle this is to parse trees to replace a
+sparse-directory entry with all of the files within that tree as the index
+is loaded. However, parsing trees is slower than parsing the index format,
+so that is a slower operation than if we left the index alone. The plan is
+to make all of these integrations "sparse aware" so this expansion through
+tree parsing is unnecessary and they use fewer resources than when using a
+full index.
+
+The implementation plan below follows four phases to slowly integrate with
+the sparse-index. The intention is to incrementally update Git commands to
+interact safely with the sparse-index without significant slowdowns. This
+may not always be possible, but the hope is that the primary commands that
+users need in their daily work are dramatically improved.
+
+Phase I: Format and initial speedups
+------------------------------------
+
+During this phase, Git learns to enable the sparse-index and safely parse
+one. Protections are put in place so that every consumer of the in-memory
+data structure can operate with its current assumption of every file at
+`HEAD`.
+
+At first, every index parse will call a helper method,
+`ensure_full_index()`, which scans the index for sparse-directory entries
+(pointing to trees) and replaces them with the full list of paths (with
+blob contents) by parsing tree objects. This will be slower in all cases.
+The only noticeable change in behavior will be that the serialized index
+file contains sparse-directory entries.
+
+To start, we use a new required index extension, `sdir`, to allow
+inserting sparse-directory entries into indexes with file format
+versions 2, 3, and 4. This prevents Git versions that do not understand
+the sparse-index from operating on one, while allowing tools that do not
+understand the sparse-index to operate on repositories as long as they do
+not interact with the index. A new format, index v5, will be introduced
+that includes sparse-directory entries by default. It might also
+introduce other features that have been considered for improving the
+index, as well.
+
+Next, consumers of the index will be guarded against operating on a
+sparse-index by inserting calls to `ensure_full_index()` or
+`expand_index_to_path()`. If a specific path is requested, then those will
+be protected from within the `index_file_exists()` and `index_name_pos()`
+API calls: they will call `ensure_full_index()` if necessary. The
+intention here is to preserve existing behavior when interacting with a
+sparse-checkout. We don't want a change to happen by accident, without
+tests. Many of these locations may not need any change before removing the
+guards, but we should not do so without tests to ensure the expected
+behavior happens.
+
+It may be desirable to _change_ the behavior of some commands in the
+presence of a sparse index or more generally in any sparse-checkout
+scenario. In such cases, these should be carefully communicated and
+tested. No such behavior changes are intended during this phase.
+
+During a scan of the codebase, not every iteration of the cache entries
+needs an `ensure_full_index()` check. The basic reasons include:
+
+1. The loop is scanning for entries with non-zero stage. These entries
+ are not collapsed into a sparse-directory entry.
+
+2. The loop is scanning for submodules. These entries are not collapsed
+ into a sparse-directory entry.
+
+3. The loop is part of the index API, especially around reading or
+ writing the format.
+
+4. The loop is checking for correct order of cache entries and that is
+ correct if and only if the sparse-directory entries are in the correct
+ location.
+
+5. The loop ignores entries with the `SKIP_WORKTREE` bit set, or is
+ otherwise already aware of sparse directory entries.
+
+6. The sparse-index is disabled at this point when using the split-index
+ feature, so no effort is made to protect the split-index API.
+
+Even after inserting these guards, we will keep expanding sparse-indexes
+for most Git commands using the `command_requires_full_index` repository
+setting. This setting will be on by default and disabled one builtin at a
+time until we have sufficient confidence that all of the index operations
+are properly guarded.
+
+To complete this phase, the commands `git status` and `git add` will be
+integrated with the sparse-index so that they operate with O(Populated)
+performance. They will be carefully tested for operations within and
+outside the sparse-checkout definition.
+
+Phase II: Careful integrations
+------------------------------
+
+This phase focuses on ensuring that all index extensions and APIs work
+well with a sparse-index. This requires significant increases to our test
+coverage, especially for operations that interact with the working
+directory outside of the sparse-checkout definition. Some of these
+behaviors may not be the desirable ones, such as some tests already
+marked for failure in `t1092-sparse-checkout-compatibility.sh`.
+
+The index extensions that may require special integrations are:
+
+* FS Monitor
+* Untracked cache
+
+While integrating with these features, we should look for patterns that
+might lead to better APIs for interacting with the index. Coalescing
+common usage patterns into an API call can reduce the number of places
+where sparse-directories need to be handled carefully.
+
+Phase III: Important command speedups
+-------------------------------------
+
+At this point, the patterns for testing and implementing sparse-directory
+logic should be relatively stable. This phase focuses on updating some of
+the most common builtins that use the index to operate as O(Populated).
+Here is a potential list of commands that could be valuable to integrate
+at this point:
+
+* `git commit`
+* `git checkout`
+* `git merge`
+* `git rebase`
+
+Hopefully, commands such as `git merge` and `git rebase` can benefit
+instead from merge algorithms that do not use the index as a data
+structure, such as the merge-ORT strategy. As these topics mature, we
+may enable the ORT strategy by default for repositories using the
+sparse-index feature.
+
+Along with `git status` and `git add`, these commands cover the majority
+of users' interactions with the working directory. In addition, we can
+integrate with these commands:
+
+* `git grep`
+* `git rm`
+
+These have been proposed as some whose behavior could change when in a
+repo with a sparse-checkout definition. It would be good to include this
+behavior automatically when using a sparse-index. Some clarity is needed
+to make the behavior switch clear to the user.
+
+This phase is the first where parallel work might be possible without too
+much conflicts between topics.
+
+Phase IV: The long tail
+-----------------------
+
+This last phase is less a "phase" and more "the new normal" after all of
+the previous work.
+
+To start, the `command_requires_full_index` option could be removed in
+favor of expanding only when hitting an API guard.
+
+There are many Git commands that could use special attention to operate as
+O(Populated), while some might be so rare that it is acceptable to leave
+them with additional overhead when a sparse-index is present.
+
+Here are some commands that might be useful to update:
+
+* `git sparse-checkout set`
+* `git am`
+* `git clean`
+* `git stash`
diff --git a/technical/trivial-merge.html b/technical/trivial-merge.html
index 7d3c80188..03ef32cb0 100644
--- a/technical/trivial-merge.html
+++ b/technical/trivial-merge.html
@@ -856,7 +856,7 @@ the automatic merge will generally give this effect.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2017-09-10 01:38:46 PDT
+ 2017-09-10 17:38:46 JST
</div>
</div>
</body>