Autogenerated HTML docs for v2.50.1-461-ge4ef0
diff --git a/RelNotes/2.51.0.adoc b/RelNotes/2.51.0.adoc
index 33ae8f9..1a874e6 100644
--- a/RelNotes/2.51.0.adoc
+++ b/RelNotes/2.51.0.adoc
@@ -47,6 +47,12 @@
service names (like smtp) in addition to the numeric port numbers
(like 25).
+ * Lift the limitation to use changed-path filter in "git log" so that
+ it can be used for a pathspec with multiple literal paths.
+
+ * Clean up the way how signature on commit objects are exported to
+ and imported from fast-import stream.
+
Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
@@ -91,6 +97,12 @@
* Flipping the default hash function to SHA-256 at Git 3.0 boundary
is planned.
+ * Declare weather-balloon we raised for "bool" type 18 months ago a
+ success and officially allow using the type in our codebase.
+
+ * GIT_TEST_INSTALLED was not honored in the recent topic related to
+ SHA256 hashes, which has been corrected.
+
Fixes since v2.50
-----------------
@@ -195,6 +207,24 @@
expansion.
(merge 7d275cd5c0 jb/gpg-program-variable-is-a-pathname later to maint).
+ * Our <sane-ctype.h> header file relied on that the system-supplied
+ <ctype.h> header is not later included, which would override our
+ macro definitions, but "amazon linux" broke this assumption. Fix
+ this by preemptively including <ctype.h> near the beginning of
+ <sane-ctype.h> ourselves.
+ (merge 9d3b33125f ps/sane-ctype-workaround later to maint).
+
+ * Clean-up compat/bswap.h mess.
+ (merge f4ac32c03a ss/compat-bswap-revamp later to maint).
+
+ * Meson-based build did not handle libexecdir setting correctly,
+ which has been corrected.
+ (merge 056dbe8612 rj/meson-libexecdir-fix later to maint).
+
+ * Document that we do not require "real" name when signing your
+ patches off.
+ (merge 1f0fed312a bc/contribution-under-non-real-names later to maint).
+
* Other code cleanup, docfix, build fix, etc.
(merge b257adb571 lo/my-first-ow-doc-update later to maint).
(merge 8b34b6a220 ly/sequencer-update-squash-is-fixup-only later to maint).
@@ -220,3 +250,4 @@
(merge ad7780b38f ps/doc-pack-refs-auto-with-files-backend-fix later to maint).
(merge f4fa8a3687 rh/doc-glob-pathspec-fix later to maint).
(merge b27be108c8 ja/doc-git-log-markup later to maint).
+ (merge 14d7583beb pw/config-kvi-remove-path later to maint).
diff --git a/SubmittingPatches.adoc b/SubmittingPatches.adoc
index 958e3cc..86ca7f6 100644
--- a/SubmittingPatches.adoc
+++ b/SubmittingPatches.adoc
@@ -408,8 +408,15 @@
from that of the project you are accustomed to.
[[real-name]]
-Also notice that a real name is used in the `Signed-off-by` trailer. Please
-don't hide your real name.
+Please use a known identity in the `Signed-off-by` trailer, since we cannot
+accept anonymous contributions. It is common, but not required, to use some form
+of your real name. We realize that some contributors are not comfortable doing
+so or prefer to contribute under a pseudonym or preferred name and we can accept
+your patch either way, as long as the name and email you use are distinctive,
+identifying, and not misleading.
+
+The goal of this policy is to allow us to have sufficient information to contact
+you if questions arise about your contribution.
[[commit-trailers]]
If you like, you can put extra trailers at the end:
diff --git a/SubmittingPatches.html b/SubmittingPatches.html
index 72712f3..75101d5 100644
--- a/SubmittingPatches.html
+++ b/SubmittingPatches.html
@@ -961,8 +961,16 @@
from that of the project you are accustomed to.</p>
</div>
<div id="real-name" class="paragraph">
-<p>Also notice that a real name is used in the <code>Signed-off-by</code> trailer. Please
-don’t hide your real name.</p>
+<p>Please use a known identity in the <code>Signed-off-by</code> trailer, since we cannot
+accept anonymous contributions. It is common, but not required, to use some form
+of your real name. We realize that some contributors are not comfortable doing
+so or prefer to contribute under a pseudonym or preferred name and we can accept
+your patch either way, as long as the name and email you use are distinctive,
+identifying, and not misleading.</p>
+</div>
+<div class="paragraph">
+<p>The goal of this policy is to allow us to have sufficient information to contact
+you if questions arise about your contribution.</p>
</div>
<div id="commit-trailers" class="paragraph">
<p>If you like, you can put extra trailers at the end:</p>
@@ -1584,7 +1592,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-06-16 09:27:49 -0700
+Last updated 2025-07-24 21:55:32 -0700
</div>
</div>
</body>
diff --git a/git-fast-export.adoc b/git-fast-export.adoc
index 43bbb4f..297b57b 100644
--- a/git-fast-export.adoc
+++ b/git-fast-export.adoc
@@ -50,6 +50,23 @@
is the same as how earlier versions of this command without
this option behaved.
+
+When exported, a signature starts with:
++
+gpgsig <git-hash-algo> <signature-format>
++
+where <git-hash-algo> is the Git object hash so either "sha1" or
+"sha256", and <signature-format> is the signature type, so "openpgp",
+"x509", "ssh" or "unknown".
++
+For example, an OpenPGP signature on a SHA-1 commit starts with
+`gpgsig sha1 openpgp`, while an SSH signature on a SHA-256 commit
+starts with `gpgsig sha256 ssh`.
++
+While all the signatures of a commit are exported, an importer may
+choose to accept only some of them. For example
+linkgit:git-fast-import[1] currently stores at most one signature per
+Git hash algorithm in each commit.
++
NOTE: This is highly experimental and the format of the data stream may
change in the future without compatibility guarantees.
diff --git a/git-fast-export.html b/git-fast-export.html
index 92527b7..5f36797 100644
--- a/git-fast-export.html
+++ b/git-fast-export.html
@@ -506,6 +506,28 @@
<em>--signed-tags</em>, but for commits. Default is <em>strip</em>, which
is the same as how earlier versions of this command without
this option behaved.</p>
+<div class="paragraph">
+<p>When exported, a signature starts with:</p>
+</div>
+<div class="paragraph">
+<p>gpgsig <git-hash-algo> <signature-format></p>
+</div>
+<div class="paragraph">
+<p>where <git-hash-algo> is the Git object hash so either "sha1" or
+"sha256", and <signature-format> is the signature type, so "openpgp",
+"x509", "ssh" or "unknown".</p>
+</div>
+<div class="paragraph">
+<p>For example, an OpenPGP signature on a SHA-1 commit starts with
+<code>gpgsig</code> <code>sha1</code> <code>openpgp</code>, while an SSH signature on a SHA-256 commit
+starts with <code>gpgsig</code> <code>sha256</code> <code>ssh</code>.</p>
+</div>
+<div class="paragraph">
+<p>While all the signatures of a commit are exported, an importer may
+choose to accept only some of them. For example
+<a href="git-fast-import.html">git-fast-import(1)</a> currently stores at most one signature per
+Git hash algorithm in each commit.</p>
+</div>
<div class="admonitionblock note">
<table>
<tr>
@@ -823,7 +845,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-06-02 12:42:06 -0700
+Last updated 2025-07-24 21:55:32 -0700
</div>
</div>
</body>
diff --git a/git-fast-import.adoc b/git-fast-import.adoc
index 250d866..d232784 100644
--- a/git-fast-import.adoc
+++ b/git-fast-import.adoc
@@ -445,7 +445,7 @@
original-oid?
('author' (SP <name>)? SP LT <email> GT SP <when> LF)?
'committer' (SP <name>)? SP LT <email> GT SP <when> LF
- ('gpgsig' SP <alg> LF data)?
+ ('gpgsig' SP <algo> SP <format> LF data)?
('encoding' SP <encoding> LF)?
data
('from' SP <commit-ish> LF)?
@@ -518,13 +518,39 @@
^^^^^^^^
The optional `gpgsig` command is used to include a PGP/GPG signature
-that signs the commit data.
+or other cryptographic signature that signs the commit data.
-Here <alg> specifies which hashing algorithm is used for this
-signature, either `sha1` or `sha256`.
+....
+ 'gpgsig' SP <git-hash-algo> SP <signature-format> LF data
+....
-NOTE: This is highly experimental and the format of the data stream may
-change in the future without compatibility guarantees.
+The `gpgsig` command takes two arguments:
+
+* `<git-hash-algo>` specifies which Git object format this signature
+ applies to, either `sha1` or `sha256`. This allows to know which
+ representation of the commit was signed (the SHA-1 or the SHA-256
+ version) which helps with both signature verification and
+ interoperability between repos with different hash functions.
+
+* `<signature-format>` specifies the type of signature, such as
+ `openpgp`, `x509`, `ssh`, or `unknown`. This is a convenience for
+ tools that process the stream, so they don't have to parse the ASCII
+ armor to identify the signature type.
+
+A commit may have at most one signature for the SHA-1 object format
+(stored in the "gpgsig" header) and one for the SHA-256 object format
+(stored in the "gpgsig-sha256" header).
+
+See below for a detailed description of the `data` command which
+contains the raw signature data.
+
+Signatures are not yet checked in the current implementation
+though. (Already setting the `extensions.compatObjectFormat`
+configuration option might help with verifying both SHA-1 and SHA-256
+object format signatures when it will be implemented.)
+
+NOTE: This is highly experimental and the format of the `gpgsig`
+command may change in the future without compatibility guarantees.
`encoding`
^^^^^^^^^^
diff --git a/git-fast-import.html b/git-fast-import.html
index d2de5de..a06e3d5 100644
--- a/git-fast-import.html
+++ b/git-fast-import.html
@@ -998,7 +998,7 @@
original-oid?
('author' (SP <name>)? SP LT <email> GT SP <when> LF)?
'committer' (SP <name>)? SP LT <email> GT SP <when> LF
- ('gpgsig' SP <alg> LF data)?
+ ('gpgsig' SP <algo> SP <format> LF data)?
('encoding' SP <encoding> LF)?
data
('from' SP <commit-ish> LF)?
@@ -1082,11 +1082,47 @@
<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>
+or other cryptographic signature that signs the commit data.</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre> 'gpgsig' SP <git-hash-algo> SP <signature-format> LF data</pre>
+</div>
</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>
+<p>The <code>gpgsig</code> command takes two arguments:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><em><git-hash-algo></em> specifies which Git object format this signature
+applies to, either <code>sha1</code> or <code>sha256</code>. This allows to know which
+representation of the commit was signed (the SHA-1 or the SHA-256
+version) which helps with both signature verification and
+interoperability between repos with different hash functions.</p>
+</li>
+<li>
+<p><em><signature-format></em> specifies the type of signature, such as
+<code>openpgp</code>, <code>x509</code>, <code>ssh</code>, or <code>unknown</code>. This is a convenience for
+tools that process the stream, so they don’t have to parse the ASCII
+armor to identify the signature type.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>A commit may have at most one signature for the SHA-1 object format
+(stored in the "gpgsig" header) and one for the SHA-256 object format
+(stored in the "gpgsig-sha256" header).</p>
+</div>
+<div class="paragraph">
+<p>See below for a detailed description of the <code>data</code> command which
+contains the raw signature data.</p>
+</div>
+<div class="paragraph">
+<p>Signatures are not yet checked in the current implementation
+though. (Already setting the <code>extensions.compatObjectFormat</code>
+configuration option might help with verifying both SHA-1 and SHA-256
+object format signatures when it will be implemented.)</p>
</div>
<div class="admonitionblock note">
<table>
@@ -1095,8 +1131,8 @@
<div class="title">Note</div>
</td>
<td class="content">
-This is highly experimental and the format of the data stream may
-change in the future without compatibility guarantees.
+This is highly experimental and the format of the <code>gpgsig</code>
+command may change in the future without compatibility guarantees.
</td>
</tr>
</table>
@@ -2572,7 +2608,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-06-02 12:42:06 -0700
+Last updated 2025-07-24 21:55:32 -0700
</div>
</div>
</body>