Autogenerated HTML docs for v2.49.0-111-g5b97a5
diff --git a/RelNotes/2.50.0.adoc b/RelNotes/2.50.0.adoc
index 50e3027..1905c61 100644
--- a/RelNotes/2.50.0.adoc
+++ b/RelNotes/2.50.0.adoc
@@ -17,6 +17,26 @@
* "git fsck" becomes more careful when checking the refs.
+ * "git fast-export | git fast-import" learns to deal with commit and
+ tag objects with embedded signatures a bit better.
+
+ * The code paths to check whether a refname X is available (by seeing
+ if another ref X/Y exists, etc.) have been optimized.
+
+ * First step of deprecating and removing merge-recursive.
+
+ * In protocol v2 where the refs advertisement is constrained, we try
+ to tell the server side not to limit the advertisement when there
+ is no specific need to, which has been the source of confusion and
+ recent bugs. Revamp the logic to simplify.
+
+ * Update meson based build procedure for breaking changes support.
+
+ * Enable -Wunreachable-code for developer builds.
+
+ * Build update.
+ (merge 7c8cd9c158 es/meson-building-docs-requires-perl later to maint).
+
Fixes since v2.49
-----------------
@@ -30,5 +50,19 @@
when certain renames are involved.
(merge 3adba40858 en/merge-process-renames-crash-fix later to maint).
+ * Certain "cruft" objects would have never been refreshed when there
+ are multiple cruft packs in the repository, which has been
+ corrected.
+ (merge 08f612ba70 tb/multi-cruft-pack-refresh-fix later to maint).
+
+ * The xdiff code on 32-bit platform misbehaved when an insanely large
+ context size is given, which has been corrected.
+ (merge d39e28e68c rs/xdiff-context-length-fix later to maint).
+
* Other code cleanup, docfix, build fix, etc.
(merge 227c4f33a0 ja/doc-block-delimiter-markup-fix later to maint).
+ (merge 2bfd3b3685 ab/decorate-code-cleanup later to maint).
+ (merge 5337daddc7 am/dir-dedup-decl-of-repository later to maint).
+ (merge 554051d691 en/diff-rename-follow-fix later to maint).
+ (merge a18c18b470 en/random-cleanups later to maint).
+ (merge 5af21c9acb hj/doc-rev-list-ancestry-fix later to maint).
diff --git a/git-fast-export.adoc b/git-fast-export.adoc
index 752e4b9..413a527 100644
--- a/git-fast-export.adoc
+++ b/git-fast-export.adoc
@@ -27,17 +27,33 @@
Insert 'progress' statements every <n> objects, to be shown by
'git fast-import' during import.
---signed-tags=(verbatim|warn|warn-strip|strip|abort)::
+--signed-tags=(verbatim|warn-verbatim|warn-strip|strip|abort)::
Specify how to handle signed tags. Since any transformation
- after the export can change the tag names (which can also happen
- when excluding revisions) the signatures will not match.
+ after the export (or during the export, such as excluding
+ revisions) can change the hashes being signed, the signatures
+ may become invalid.
+
When asking to 'abort' (which is the default), this program will die
when encountering a signed tag. With 'strip', the tags will silently
be made unsigned, with 'warn-strip' they will be made unsigned but a
warning will be displayed, with 'verbatim', they will be silently
-exported and with 'warn', they will be exported, but you will see a
-warning.
+exported and with 'warn-verbatim' (or 'warn', a deprecated synonym),
+they will be exported, but you will see a warning. 'verbatim' and
+'warn-verbatim' should only be used if you know that no transformation
+affecting tags or any commit in their history will be performed by you
+or by fast-export or fast-import, or if you do not care that the
+resulting tag will have an invalid signature.
+
+--signed-commits=(verbatim|warn-verbatim|warn-strip|strip|abort)::
+ Specify how to handle signed commits. Behaves exactly as
+ '--signed-tags', but for commits. Default is 'abort'.
++
+Earlier versions this command that did not have '--signed-commits'
+behaved as if '--signed-commits=strip'. As an escape hatch for users
+of tools that call 'git fast-export' but do not yet support
+'--signed-commits', you may set the environment variable
+'FAST_EXPORT_SIGNED_COMMITS_NOABORT=1' in order to change the default
+from 'abort' to 'warn-strip'.
--tag-of-filtered-object=(abort|drop|rewrite)::
Specify how to handle tags whose tagged object is filtered out.
diff --git a/git-fast-export.html b/git-fast-export.html
index 1a784ee..fd6b4ee 100644
--- a/git-fast-export.html
+++ b/git-fast-export.html
@@ -481,18 +481,36 @@
<p>Insert <em>progress</em> statements every <n> objects, to be shown by
<em>git fast-import</em> during import.</p>
</dd>
-<dt class="hdlist1">--signed-tags=(verbatim|warn|warn-strip|strip|abort)</dt>
+<dt class="hdlist1">--signed-tags=(verbatim|warn-verbatim|warn-strip|strip|abort)</dt>
<dd>
<p>Specify how to handle signed tags. Since any transformation
-after the export can change the tag names (which can also happen
-when excluding revisions) the signatures will not match.</p>
+after the export (or during the export, such as excluding
+revisions) can change the hashes being signed, the signatures
+may become invalid.</p>
<div class="paragraph">
<p>When asking to <em>abort</em> (which is the default), this program will die
when encountering a signed tag. With <em>strip</em>, the tags will silently
be made unsigned, with <em>warn-strip</em> they will be made unsigned but a
warning will be displayed, with <em>verbatim</em>, they will be silently
-exported and with <em>warn</em>, they will be exported, but you will see a
-warning.</p>
+exported and with <em>warn-verbatim</em> (or <em>warn</em>, a deprecated synonym),
+they will be exported, but you will see a warning. <em>verbatim</em> and
+<em>warn-verbatim</em> should only be used if you know that no transformation
+affecting tags or any commit in their history will be performed by you
+or by fast-export or fast-import, or if you do not care that the
+resulting tag will have an invalid signature.</p>
+</div>
+</dd>
+<dt class="hdlist1">--signed-commits=(verbatim|warn-verbatim|warn-strip|strip|abort)</dt>
+<dd>
+<p>Specify how to handle signed commits. Behaves exactly as
+<em>--signed-tags</em>, but for commits. Default is <em>abort</em>.</p>
+<div class="paragraph">
+<p>Earlier versions this command that did not have <em>--signed-commits</em>
+behaved as if <em>--signed-commits=strip</em>. As an escape hatch for users
+of tools that call <em>git fast-export</em> but do not yet support
+<em>--signed-commits</em>, you may set the environment variable
+<em>FAST_EXPORT_SIGNED_COMMITS_NOABORT=1</em> in order to change the default
+from <em>abort</em> to <em>warn-strip</em>.</p>
</div>
</dd>
<dt class="hdlist1">--tag-of-filtered-object=(abort|drop|rewrite)</dt>
@@ -798,7 +816,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-02-14 21:38:14 -0800
+Last updated 2025-03-29 17:09:47 +0900
</div>
</div>
</body>
diff --git a/git-fast-import.adoc b/git-fast-import.adoc
index 58a2eaa..7b107f5 100644
--- a/git-fast-import.adoc
+++ b/git-fast-import.adoc
@@ -431,13 +431,22 @@
Create or update a branch with a new commit, recording one logical
change to the project.
+////
+Yes, it's intentional that the 'gpgsig' line doesn't have a trailing
+`LF`; the definition of `data` has a byte-count prefix, so it
+doesn't need an `LF` to act as a terminator (and `data` also already
+includes an optional trailing `LF?` just in case you want to include
+one).
+////
+
....
'commit' SP <ref> LF
mark?
original-oid?
('author' (SP <name>)? SP LT <email> GT SP <when> LF)?
'committer' (SP <name>)? SP LT <email> GT SP <when> LF
- ('encoding' SP <encoding>)?
+ ('gpgsig' SP <alg> LF data)?
+ ('encoding' SP <encoding> LF)?
data
('from' SP <commit-ish> LF)?
('merge' SP <commit-ish> LF)*
@@ -505,6 +514,15 @@
See ``Date Formats'' above for the set of supported formats, and
their syntax.
+`gpgsig`
+^^^^^^^^
+
+The optional `gpgsig` command is used to include a PGP/GPG signature
+that signs the commit data.
+
+Here <alg> specifies which hashing algorithm is used for this
+signature, either `sha1` or `sha256`.
+
`encoding`
^^^^^^^^^^
The optional `encoding` command indicates the encoding of the commit
diff --git a/git-fast-import.html b/git-fast-import.html
index 09c360e..6dbaa69 100644
--- a/git-fast-import.html
+++ b/git-fast-import.html
@@ -998,7 +998,8 @@
original-oid?
('author' (SP <name>)? SP LT <email> GT SP <when> LF)?
'committer' (SP <name>)? SP LT <email> GT SP <when> LF
- ('encoding' SP <encoding>)?
+ ('gpgsig' SP <alg> LF data)?
+ ('encoding' SP <encoding> LF)?
data
('from' SP <commit-ish> LF)?
('merge' SP <commit-ish> LF)*
@@ -1078,6 +1079,17 @@
</div>
</div>
<div class="sect3">
+<h4 id="_gpgsig"><code>gpgsig</code></h4>
+<div class="paragraph">
+<p>The optional <code>gpgsig</code> command is used to include a PGP/GPG signature
+that signs the commit data.</p>
+</div>
+<div class="paragraph">
+<p>Here <alg> specifies which hashing algorithm is used for this
+signature, either <code>sha1</code> or <code>sha256</code>.</p>
+</div>
+</div>
+<div class="sect3">
<h4 id="_encoding"><code>encoding</code></h4>
<div class="paragraph">
<p>The optional <code>encoding</code> command indicates the encoding of the commit
@@ -2547,7 +2559,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-02-14 21:38:14 -0800
+Last updated 2025-03-29 17:09:47 +0900
</div>
</div>
</body>
diff --git a/git-log.html b/git-log.html
index 550dfcc..242da4b 100644
--- a/git-log.html
+++ b/git-log.html
@@ -1437,7 +1437,7 @@
<div class="content">
<pre> E
\
- G---H---I---J
+ C---G---H---I---J
\
L--M</pre>
</div>
@@ -4405,7 +4405,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-02-14 21:38:14 -0800
+Last updated 2025-02-15 14:38:14 +0900
</div>
</div>
</body>
diff --git a/git-merge.html b/git-merge.html
index 57f1d8b..0c3b97e 100644
--- a/git-merge.html
+++ b/git-merge.html
@@ -1261,6 +1261,12 @@
<dd>
<p>Deprecated synonym for <code>find-renames=</code><em><n></em>.</p>
</dd>
+<dt class="hdlist1">no-renames</dt>
+<dd>
+<p>Turn off rename detection. This overrides the <code>merge.renames</code>
+configuration variable.
+See also <a href="git-diff.html">git-diff(1)</a> <code>--no-renames</code>.</p>
+</dd>
<dt class="hdlist1">subtree[=<path>]</dt>
<dd>
<p>This option is a more advanced form of <em>subtree</em> strategy, where
@@ -1292,7 +1298,7 @@
</div>
<div class="paragraph">
<p>The <em>recursive</em> strategy takes the same options as <em>ort</em>. However,
-there are three additional options that <em>ort</em> ignores (not documented
+there are two additional options that <em>ort</em> ignores (not documented
above) that are potentially useful with the <em>recursive</em> strategy:</p>
</div>
<div class="dlist">
@@ -1310,12 +1316,6 @@
specifically uses <code>diff-algorithm=histogram</code>, while <code>recursive</code>
defaults to the <code>diff.algorithm</code> config setting.</p>
</dd>
-<dt class="hdlist1">no-renames</dt>
-<dd>
-<p>Turn off rename detection. This overrides the <code>merge.renames</code>
-configuration variable.
-See also <a href="git-diff.html">git-diff(1)</a> <code>--no-renames</code>.</p>
-</dd>
</dl>
</div>
</dd>
@@ -1718,7 +1718,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-02-14 21:38:14 -0800
+Last updated 2025-02-15 14:38:14 +0900
</div>
</div>
</body>
diff --git a/git-pull.html b/git-pull.html
index 7f09e8e..c26d5c3 100644
--- a/git-pull.html
+++ b/git-pull.html
@@ -1592,6 +1592,12 @@
<dd>
<p>Deprecated synonym for <code>find-renames=</code><em><n></em>.</p>
</dd>
+<dt class="hdlist1">no-renames</dt>
+<dd>
+<p>Turn off rename detection. This overrides the <code>merge.renames</code>
+configuration variable.
+See also <a href="git-diff.html">git-diff(1)</a> <code>--no-renames</code>.</p>
+</dd>
<dt class="hdlist1">subtree[=<path>]</dt>
<dd>
<p>This option is a more advanced form of <em>subtree</em> strategy, where
@@ -1623,7 +1629,7 @@
</div>
<div class="paragraph">
<p>The <em>recursive</em> strategy takes the same options as <em>ort</em>. However,
-there are three additional options that <em>ort</em> ignores (not documented
+there are two additional options that <em>ort</em> ignores (not documented
above) that are potentially useful with the <em>recursive</em> strategy:</p>
</div>
<div class="dlist">
@@ -1641,12 +1647,6 @@
specifically uses <code>diff-algorithm=histogram</code>, while <code>recursive</code>
defaults to the <code>diff.algorithm</code> config setting.</p>
</dd>
-<dt class="hdlist1">no-renames</dt>
-<dd>
-<p>Turn off rename detection. This overrides the <code>merge.renames</code>
-configuration variable.
-See also <a href="git-diff.html">git-diff(1)</a> <code>--no-renames</code>.</p>
-</dd>
</dl>
</div>
</dd>
@@ -1887,7 +1887,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-02-14 21:38:14 -0800
+Last updated 2025-02-15 14:38:14 +0900
</div>
</div>
</body>
diff --git a/git-rebase.html b/git-rebase.html
index 9374344..948e02f 100644
--- a/git-rebase.html
+++ b/git-rebase.html
@@ -1649,6 +1649,12 @@
<dd>
<p>Deprecated synonym for <code>find-renames=</code><em><n></em>.</p>
</dd>
+<dt class="hdlist1">no-renames</dt>
+<dd>
+<p>Turn off rename detection. This overrides the <code>merge.renames</code>
+configuration variable.
+See also <a href="git-diff.html">git-diff(1)</a> <code>--no-renames</code>.</p>
+</dd>
<dt class="hdlist1">subtree[=<path>]</dt>
<dd>
<p>This option is a more advanced form of <em>subtree</em> strategy, where
@@ -1680,7 +1686,7 @@
</div>
<div class="paragraph">
<p>The <em>recursive</em> strategy takes the same options as <em>ort</em>. However,
-there are three additional options that <em>ort</em> ignores (not documented
+there are two additional options that <em>ort</em> ignores (not documented
above) that are potentially useful with the <em>recursive</em> strategy:</p>
</div>
<div class="dlist">
@@ -1698,12 +1704,6 @@
specifically uses <code>diff-algorithm=histogram</code>, while <code>recursive</code>
defaults to the <code>diff.algorithm</code> config setting.</p>
</dd>
-<dt class="hdlist1">no-renames</dt>
-<dd>
-<p>Turn off rename detection. This overrides the <code>merge.renames</code>
-configuration variable.
-See also <a href="git-diff.html">git-diff(1)</a> <code>--no-renames</code>.</p>
-</dd>
</dl>
</div>
</dd>
@@ -2496,7 +2496,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-02-25 15:22:04 -0800
+Last updated 2025-03-26 16:41:02 +0900
</div>
</div>
</body>
diff --git a/git-replay.html b/git-replay.html
index a6e21d0..8792ffe 100644
--- a/git-replay.html
+++ b/git-replay.html
@@ -1266,7 +1266,7 @@
<div class="content">
<pre> E
\
- G---H---I---J
+ C---G---H---I---J
\
L--M</pre>
</div>
@@ -1912,7 +1912,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-02-14 21:38:14 -0800
+Last updated 2025-02-15 14:38:14 +0900
</div>
</div>
</body>
diff --git a/git-rev-list.html b/git-rev-list.html
index 3c790d6..1b56a3c 100644
--- a/git-rev-list.html
+++ b/git-rev-list.html
@@ -1304,7 +1304,7 @@
<div class="content">
<pre> E
\
- G---H---I---J
+ C---G---H---I---J
\
L--M</pre>
</div>
@@ -2989,7 +2989,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-02-14 21:38:14 -0800
+Last updated 2025-02-15 14:38:14 +0900
</div>
</div>
</body>
diff --git a/git-shortlog.html b/git-shortlog.html
index c02f1bd..7cef6da 100644
--- a/git-shortlog.html
+++ b/git-shortlog.html
@@ -1359,7 +1359,7 @@
<div class="content">
<pre> E
\
- G---H---I---J
+ C---G---H---I---J
\
L--M</pre>
</div>
@@ -1565,7 +1565,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-02-14 21:38:14 -0800
+Last updated 2025-02-15 14:38:14 +0900
</div>
</div>
</body>
diff --git a/merge-strategies.adoc b/merge-strategies.adoc
index 93822eb..59f5ae3 100644
--- a/merge-strategies.adoc
+++ b/merge-strategies.adoc
@@ -82,6 +82,11 @@
rename-threshold=<n>;;
Deprecated synonym for `find-renames=<n>`.
+no-renames;;
+ Turn off rename detection. This overrides the `merge.renames`
+ configuration variable.
+ See also linkgit:git-diff[1] `--no-renames`.
+
subtree[=<path>];;
This option is a more advanced form of 'subtree' strategy, where
the strategy makes a guess on how two trees must be shifted to
@@ -107,7 +112,7 @@
strategy.
+
The 'recursive' strategy takes the same options as 'ort'. However,
-there are three additional options that 'ort' ignores (not documented
+there are two additional options that 'ort' ignores (not documented
above) that are potentially useful with the 'recursive' strategy:
patience;;
@@ -121,11 +126,6 @@
specifically uses `diff-algorithm=histogram`, while `recursive`
defaults to the `diff.algorithm` config setting.
-no-renames;;
- Turn off rename detection. This overrides the `merge.renames`
- configuration variable.
- See also linkgit:git-diff[1] `--no-renames`.
-
resolve::
This can only resolve two heads (i.e. the current branch
and another branch you pulled from) using a 3-way merge
diff --git a/rev-list-options.adoc b/rev-list-options.adoc
index 9d020e3..1c403c1 100644
--- a/rev-list-options.adoc
+++ b/rev-list-options.adoc
@@ -642,7 +642,7 @@
-----------------------------------------------------------------------
E
\
- G---H---I---J
+ C---G---H---I---J
\
L--M
-----------------------------------------------------------------------