Autogenerated HTML docs for v2.51.0-480-g60f3f5
diff --git a/BreakingChanges.adoc b/BreakingChanges.adoc index a67ad4e..90b53ab 100644 --- a/BreakingChanges.adoc +++ b/BreakingChanges.adoc
@@ -171,6 +171,51 @@ matches the default branch name used in new repositories by many of the big Git forges. +* Git will require Rust as a mandatory part of the build process. While Git + already started to adopt Rust in Git 2.49, all parts written in Rust are + optional for the time being. This includes: ++ + ** The Rust wrapper around libgit.a that is part of "contrib/" and which has + been introduced in Git 2.49. + ** Subsystems that have an alternative implementation in Rust to test + interoperability between our C and Rust codebase. + ** Newly written features that are not mission critical for a fully functional + Git client. ++ +These changes are meant as test balloons to allow distributors of Git to prepare +for Rust becoming a mandatory part of the build process. There will be multiple +milestones for the introduction of Rust: ++ +-- +1. Initially, with Git 2.52, support for Rust will be auto-detected by Meson and + disabled in our Makefile so that the project can sort out the initial + infrastructure. +2. In Git 2.53, both build systems will default-enable support for Rust. + Consequently, builds will break by default if Rust is not available on the + build host. The use of Rust can still be explicitly disabled via build + flags. +3. In Git 3.0, the build options will be removed and support for Rust is + mandatory. +-- ++ +You can explicitly ask both Meson and our Makefile-based system to enable Rust +by saying `meson configure -Drust=enabled` and `make WITH_RUST=YesPlease`, +respectively. ++ +The Git project will declare the last version before Git 3.0 to be a long-term +support release. This long-term release will receive important bug fixes for at +least four release cycles and security fixes for six release cycles. The Git +project will hand over maintainership of the long-term release to distributors +in case they need to extend the life of that long-term release even further. +Details of how this long-term release will be handed over to the community will +be discussed once the Git project decides to stop officially supporting it. ++ +We will evaluate the impact on downstream distributions before making Rust +mandatory in Git 3.0. If we see that the impact on downstream distributions +would be significant, we may decide to defer this change to a subsequent minor +release. This evaluation will also take into account our own experience with +how painful it is to keep Rust an optional component. + === Removals * Support for grafting commits has long been superseded by git-replace(1).
diff --git a/BreakingChanges.html b/BreakingChanges.html index 834d6c9..cd65c76 100644 --- a/BreakingChanges.html +++ b/BreakingChanges.html
@@ -694,6 +694,76 @@ matches the default branch name used in new repositories by many of the big Git forges.</p> </li> +<li> +<p>Git will require Rust as a mandatory part of the build process. While Git +already started to adopt Rust in Git 2.49, all parts written in Rust are +optional for the time being. This includes:</p> +<div class="ulist"> +<ul> +<li> +<p>The Rust wrapper around libgit.a that is part of "contrib/" and which has +been introduced in Git 2.49.</p> +</li> +<li> +<p>Subsystems that have an alternative implementation in Rust to test +interoperability between our C and Rust codebase.</p> +</li> +<li> +<p>Newly written features that are not mission critical for a fully functional +Git client.</p> +<div class="paragraph"> +<p>These changes are meant as test balloons to allow distributors of Git to prepare +for Rust becoming a mandatory part of the build process. There will be multiple +milestones for the introduction of Rust:</p> +</div> +<div class="openblock"> +<div class="content"> +<div class="olist arabic"> +<ol class="arabic"> +<li> +<p>Initially, with Git 2.52, support for Rust will be auto-detected by Meson and +disabled in our Makefile so that the project can sort out the initial +infrastructure.</p> +</li> +<li> +<p>In Git 2.53, both build systems will default-enable support for Rust. +Consequently, builds will break by default if Rust is not available on the +build host. The use of Rust can still be explicitly disabled via build +flags.</p> +</li> +<li> +<p>In Git 3.0, the build options will be removed and support for Rust is +mandatory.</p> +</li> +</ol> +</div> +</div> +</div> +<div class="paragraph"> +<p>You can explicitly ask both Meson and our Makefile-based system to enable Rust +by saying <code>meson</code> <code>configure</code> <code>-Drust=enabled</code> and <code>make</code> <code>WITH_RUST=YesPlease</code>, +respectively.</p> +</div> +<div class="paragraph"> +<p>The Git project will declare the last version before Git 3.0 to be a long-term +support release. This long-term release will receive important bug fixes for at +least four release cycles and security fixes for six release cycles. The Git +project will hand over maintainership of the long-term release to distributors +in case they need to extend the life of that long-term release even further. +Details of how this long-term release will be handed over to the community will +be discussed once the Git project decides to stop officially supporting it.</p> +</div> +<div class="paragraph"> +<p>We will evaluate the impact on downstream distributions before making Rust +mandatory in Git 3.0. If we see that the impact on downstream distributions +would be significant, we may decide to defer this change to a subsequent minor +release. This evaluation will also take into account our own experience with +how painful it is to keep Rust an optional component.</p> +</div> +</li> +</ul> +</div> +</li> </ul> </div> </div> @@ -839,7 +909,7 @@ </div> <div id="footer"> <div id="footer-text"> -Last updated 2025-10-02 14:07:14 -0700 +Last updated 2025-10-08 13:52:53 -0700 </div> </div> </body>
diff --git a/RelNotes/2.52.0.adoc b/RelNotes/2.52.0.adoc index ee7ea2e..7fb1a3c 100644 --- a/RelNotes/2.52.0.adoc +++ b/RelNotes/2.52.0.adoc
@@ -113,6 +113,9 @@ documentation, similar to "make doc". (merge ff4ec8ded0 ps/meson-build-docs later to maint). + * Dip our toes a bit to (optionally) use Rust implemented helper + called from our C code. + Fixes since v2.51 ----------------- @@ -289,6 +292,12 @@ checking has been updated to use the existing helper function. (merge ecc5749578 js/curl-off-t-fixes later to maint). + * "git reflog write" did not honor the configured user.name/email + which has been corrected. + + * Handling of an empty subdirectory of .git/refs/ in the ref-files + backend has been corrected. + * Other code cleanup, docfix, build fix, etc. (merge 823d537fa7 kh/doc-git-log-markup-fix later to maint). (merge cf7efa4f33 rj/t6137-cygwin-fix later to maint). @@ -315,3 +324,4 @@ (merge fafc9b08b8 ag/doc-sendmail-gmail-example-update later to maint). (merge a66fc22bf9 rs/get-oid-with-flags-cleanup later to maint). (merge e1d062e8ba ps/odb-clean-stale-wrappers later to maint). + (merge fdd21ba116 mh/doc-credential-url-prefix later to maint).
diff --git a/gitcredentials.adoc b/gitcredentials.adoc index 3337bb4..60c2cc4 100644 --- a/gitcredentials.adoc +++ b/gitcredentials.adoc
@@ -150,9 +150,8 @@ username = foo -------------------------------------- -then we will match: both protocols are the same, both hosts are the same, and -the "pattern" URL does not care about the path component at all. However, this -context would not match: +then we will match: both protocols are the same and both hosts are the same. +However, this context would not match: -------------------------------------- [credential "https://kernel.org"] @@ -166,11 +165,11 @@ the domain name and other pattern matching techniques as with the `http.<URL>.*` options. -If the "pattern" URL does include a path component, then this too must match -exactly: the context `https://example.com/bar/baz.git` will match a config -entry for `https://example.com/bar/baz.git` (in addition to matching the config -entry for `https://example.com`) but will not match a config entry for -`https://example.com/bar`. +If the "pattern" URL does include a path component, then this must match +as a prefix path: the context `https://example.com/bar` will match a config +entry for `https://example.com/bar/baz.git` but will not match a config entry for +`https://example.com/other/repo.git` or `https://example.com/barry/repo.git` +(even though it is a string prefix). CONFIGURATION OPTIONS
diff --git a/gitcredentials.html b/gitcredentials.html index 4df81cc..01741c2 100644 --- a/gitcredentials.html +++ b/gitcredentials.html
@@ -664,9 +664,8 @@ </div> </div> <div class="paragraph"> -<p>then we will match: both protocols are the same, both hosts are the same, and -the "pattern" URL does not care about the path component at all. However, this -context would not match:</p> +<p>then we will match: both protocols are the same and both hosts are the same. +However, this context would not match:</p> </div> <div class="listingblock"> <div class="content"> @@ -683,11 +682,11 @@ options.</p> </div> <div class="paragraph"> -<p>If the "pattern" URL does include a path component, then this too must match -exactly: the context <code>https://example.com/bar/baz.git</code> will match a config -entry for <code>https://example.com/bar/baz.git</code> (in addition to matching the config -entry for <code>https://example.com</code>) but will not match a config entry for -<code>https://example.com/bar</code>.</p> +<p>If the "pattern" URL does include a path component, then this must match +as a prefix path: the context <code>https://example.com/bar</code> will match a config +entry for <code>https://example.com/bar/baz.git</code> but will not match a config entry for +<code>https://example.com/other/repo.git</code> or <code>https://example.com/barry/repo.git</code> +(even though it is a string prefix).</p> </div> </div> </div> @@ -899,7 +898,7 @@ </div> <div id="footer"> <div id="footer-text"> -Last updated 2025-06-24 11:24:02 -0700 +Last updated 2025-10-08 13:52:53 -0700 </div> </div> </body>