Autogenerated HTML docs for v2.51.0-68-g954d33
diff --git a/RelNotes/2.52.0.adoc b/RelNotes/2.52.0.adoc
new file mode 100644
index 0000000..1919e03
--- /dev/null
+++ b/RelNotes/2.52.0.adoc
@@ -0,0 +1,58 @@
+Git v2.52 Release Notes
+=======================
+
+UI, Workflows & Features
+------------------------
+
+
+Performance, Internal Implementation, Development Support etc.
+--------------------------------------------------------------
+
+ * string_list_split*() family of functions have been extended to
+ simplify common use cases.
+
+ * Arrays of strbuf is often a wrong data structure to use, and
+ strbuf_split*() family of functions that create them often have
+ better alternatives. Update several code paths and replace
+ strbuf_split*().
+
+ * Revision traversal limited with pathspec, like "git log dir/*",
+ used to ignore changed-paths Bloom filter when the pathspec
+ contained wildcards; now they take advantage of the filter when
+ they can.
+
+Fixes since v2.51
+-----------------
+
+Unless otherwise noted, all the changes in 2.51.X maintenance track,
+including security updates, are included in this release.
+
+ * During interactive rebase, using 'drop' on a merge commit lead to
+ an error, which was incorrect.
+ (merge 4d491ade8f js/rebase-i-allow-drop-on-a-merge later to maint).
+
+ * "git refs migrate" to migrate the reflog entries from a refs
+ backend to another had a handful of bugs squashed.
+ (merge 465eff81de ps/reflog-migrate-fixes later to maint).
+
+ * "git remote rename origin upstream" failed to move origin/HEAD to
+ upstream/HEAD when origin/HEAD is unborn and performed other
+ renames extremely inefficiently, which has been corrected.
+ (merge 16c4fa26b9 ps/remote-rename-fix later to maint).
+
+ * "git describe" has been optimized by using better data structure.
+ (merge 08bb69d70f rs/describe-with-prio-queue later to maint).
+
+ * "git push" had a code path that led to BUG() but it should have
+ been a die(), as it is a response to a usual but invalid end-user
+ action to attempt pushing an object that does not exist.
+ (merge dfbfc2221b dl/push-missing-object-error later to maint).
+
+ * Various bugs about rename handling in "ort" merge strategy have
+ been fixed.
+ (merge f6ecb603ff en/ort-rename-fixes later to maint).
+
+ * 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).
+ (merge 529a60a885 ua/t1517-short-help-tests later to maint).
diff --git a/git-config.html b/git-config.html
index c8b7667..bc4e262 100644
--- a/git-config.html
+++ b/git-config.html
@@ -6520,14 +6520,27 @@
<dd>
<p>Print out the ref names of any commits that are shown by the log
command. Possible values are:</p>
-<div class="listingblock">
+<div class="openblock">
<div class="content">
-<pre>`short`;; the ref name prefixes `refs/heads/`, `refs/tags/` and
- `refs/remotes/` are not printed.
-`full`;; the full ref name (including prefix) are printed.
-`auto`;; if the output is going to a terminal,
- the ref names are shown as if `short` were given, otherwise no ref
- names are shown.</pre>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>short</code></dt>
+<dd>
+<p>the ref name prefixes <code>refs/heads/</code>, <code>refs/tags/</code> and
+<code>refs/remotes/</code> are not printed.</p>
+</dd>
+<dt class="hdlist1"><code>full</code></dt>
+<dd>
+<p>the full ref name (including prefix) are printed.</p>
+</dd>
+<dt class="hdlist1"><code>auto</code></dt>
+<dd>
+<p>if the output is going to a terminal,
+the ref names are shown as if <code>short</code> were given, otherwise no ref
+names are shown.</p>
+</dd>
+</dl>
+</div>
</div>
</div>
<div class="paragraph">
diff --git a/git-log.html b/git-log.html
index e1e739f..be5c7d7 100644
--- a/git-log.html
+++ b/git-log.html
@@ -4279,14 +4279,27 @@
<dd>
<p>Print out the ref names of any commits that are shown by the log
command. Possible values are:</p>
-<div class="listingblock">
+<div class="openblock">
<div class="content">
-<pre>`short`;; the ref name prefixes `refs/heads/`, `refs/tags/` and
- `refs/remotes/` are not printed.
-`full`;; the full ref name (including prefix) are printed.
-`auto`;; if the output is going to a terminal,
- the ref names are shown as if `short` were given, otherwise no ref
- names are shown.</pre>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>short</code></dt>
+<dd>
+<p>the ref name prefixes <code>refs/heads/</code>, <code>refs/tags/</code> and
+<code>refs/remotes/</code> are not printed.</p>
+</dd>
+<dt class="hdlist1"><code>full</code></dt>
+<dd>
+<p>the full ref name (including prefix) are printed.</p>
+</dd>
+<dt class="hdlist1"><code>auto</code></dt>
+<dd>
+<p>if the output is going to a terminal,
+the ref names are shown as if <code>short</code> were given, otherwise no ref
+names are shown.</p>
+</dd>
+</dl>
+</div>
</div>
</div>
<div class="paragraph">
diff --git a/git-reflog.adoc b/git-reflog.adoc
index 412f06b..38af0c9 100644
--- a/git-reflog.adoc
+++ b/git-reflog.adoc
@@ -8,16 +8,17 @@
SYNOPSIS
--------
-[verse]
-'git reflog' [show] [<log-options>] [<ref>]
-'git reflog list'
-'git reflog expire' [--expire=<time>] [--expire-unreachable=<time>]
+[synopsis]
+git reflog [show] [<log-options>] [<ref>]
+git reflog list
+git reflog exists <ref>
+git reflog write <ref> <old-oid> <new-oid> <message>
+git reflog delete [--rewrite] [--updateref]
+ [--dry-run | -n] [--verbose] <ref>@{<specifier>}...
+git reflog drop [--all [--single-worktree] | <refs>...]
+git reflog expire [--expire=<time>] [--expire-unreachable=<time>]
[--rewrite] [--updateref] [--stale-fix]
[--dry-run | -n] [--verbose] [--all [--single-worktree] | <refs>...]
-'git reflog delete' [--rewrite] [--updateref]
- [--dry-run | -n] [--verbose] <ref>@{<specifier>}...
-'git reflog drop' [--all [--single-worktree] | <refs>...]
-'git reflog exists' <ref>
DESCRIPTION
-----------
@@ -43,11 +44,15 @@
The "list" subcommand lists all refs which have a corresponding reflog.
-The "expire" subcommand prunes older reflog entries. Entries older
-than `expire` time, or entries older than `expire-unreachable` time
-and not reachable from the current tip, are removed from the reflog.
-This is typically not used directly by end users -- instead, see
-linkgit:git-gc[1].
+The "exists" subcommand checks whether a ref has a reflog. It exits
+with zero status if the reflog exists, and non-zero status if it does
+not.
+
+The "write" subcommand writes a single entry to the reflog of a given
+reference. This new entry is appended to the reflog and will thus become
+the most recent entry. The reference name must be fully qualified. Both the old
+and new object IDs must not be abbreviated and must point to existing objects.
+The reflog message gets normalized.
The "delete" subcommand deletes single entries from the reflog, but
not the reflog itself. Its argument must be an _exact_ entry (e.g. "`git
@@ -58,9 +63,11 @@
references. This is in contrast to "expire" and "delete", both of which
can be used to delete reflog entries, but not the reflog itself.
-The "exists" subcommand checks whether a ref has a reflog. It exits
-with zero status if the reflog exists, and non-zero status if it does
-not.
+The "expire" subcommand prunes older reflog entries. Entries older
+than `expire` time, or entries older than `expire-unreachable` time
+and not reachable from the current tip, are removed from the reflog.
+This is typically not used directly by end users -- instead, see
+linkgit:git-gc[1].
OPTIONS
-------
@@ -71,65 +78,6 @@
`git reflog show` accepts any of the options accepted by `git log`.
-Options for `expire`
-~~~~~~~~~~~~~~~~~~~~
-
---all::
- Process the reflogs of all references.
-
---single-worktree::
- By default when `--all` is specified, reflogs from all working
- trees are processed. This option limits the processing to reflogs
- from the current working tree only.
-
---expire=<time>::
- Prune entries older than the specified time. If this option is
- not specified, the expiration time is taken from the
- configuration setting `gc.reflogExpire`, which in turn
- defaults to 90 days. `--expire=all` prunes entries regardless
- of their age; `--expire=never` turns off pruning of reachable
- entries (but see `--expire-unreachable`).
-
---expire-unreachable=<time>::
- Prune entries older than `<time>` that are not reachable from
- the current tip of the branch. If this option is not
- specified, the expiration time is taken from the configuration
- setting `gc.reflogExpireUnreachable`, which in turn defaults
- to 30 days. `--expire-unreachable=all` prunes unreachable
- entries regardless of their age; `--expire-unreachable=never`
- turns off early pruning of unreachable entries (but see
- `--expire`).
-
---updateref::
- Update the reference to the value of the top reflog entry (i.e.
- <ref>@\{0\}) if the previous top entry was pruned. (This
- option is ignored for symbolic references.)
-
---rewrite::
- If a reflog entry's predecessor is pruned, adjust its "old"
- SHA-1 to be equal to the "new" SHA-1 field of the entry that
- now precedes it.
-
---stale-fix::
- Prune any reflog entries that point to "broken commits". A
- broken commit is a commit that is not reachable from any of
- the reference tips and that refers, directly or indirectly, to
- a missing commit, tree, or blob object.
-+
-This computation involves traversing all the reachable objects, i.e. it
-has the same cost as 'git prune'. It is primarily intended to fix
-corruption caused by garbage collecting using older versions of Git,
-which didn't protect objects referred to by reflogs.
-
--n::
---dry-run::
- Do not actually prune any entries; just show what would have
- been pruned.
-
---verbose::
- Print extra information on screen.
-
-
Options for `delete`
~~~~~~~~~~~~~~~~~~~~
@@ -140,14 +88,74 @@
Options for `drop`
~~~~~~~~~~~~~~~~~~
---all::
+`--all`::
Drop the reflogs of all references from all worktrees.
---single-worktree::
+`--single-worktree`::
By default when `--all` is specified, reflogs from all working
trees are dropped. This option limits the processing to reflogs
from the current working tree only.
+
+Options for `expire`
+~~~~~~~~~~~~~~~~~~~~
+
+`--all`::
+ Process the reflogs of all references.
+
+`--single-worktree`::
+ By default when `--all` is specified, reflogs from all working
+ trees are processed. This option limits the processing to reflogs
+ from the current working tree only.
+
+`--expire=<time>`::
+ Prune entries older than the specified time. If this option is
+ not specified, the expiration time is taken from the
+ configuration setting `gc.reflogExpire`, which in turn
+ defaults to 90 days. `--expire=all` prunes entries regardless
+ of their age; `--expire=never` turns off pruning of reachable
+ entries (but see `--expire-unreachable`).
+
+`--expire-unreachable=<time>`::
+ Prune entries older than `<time>` that are not reachable from
+ the current tip of the branch. If this option is not
+ specified, the expiration time is taken from the configuration
+ setting `gc.reflogExpireUnreachable`, which in turn defaults
+ to 30 days. `--expire-unreachable=all` prunes unreachable
+ entries regardless of their age; `--expire-unreachable=never`
+ turns off early pruning of unreachable entries (but see
+ `--expire`).
+
+`--updateref`::
+ Update the reference to the value of the top reflog entry (i.e.
+ <ref>@\{0\}) if the previous top entry was pruned. (This
+ option is ignored for symbolic references.)
+
+`--rewrite`::
+ If a reflog entry's predecessor is pruned, adjust its "old"
+ SHA-1 to be equal to the "new" SHA-1 field of the entry that
+ now precedes it.
+
+`--stale-fix`::
+ Prune any reflog entries that point to "broken commits". A
+ broken commit is a commit that is not reachable from any of
+ the reference tips and that refers, directly or indirectly, to
+ a missing commit, tree, or blob object.
++
+This computation involves traversing all the reachable objects, i.e. it
+has the same cost as 'git prune'. It is primarily intended to fix
+corruption caused by garbage collecting using older versions of Git,
+which didn't protect objects referred to by reflogs.
+
+`-n`::
+`--dry-run`::
+ Do not actually prune any entries; just show what would have
+ been pruned.
+
+`--verbose`::
+ Print extra information on screen.
+
+
GIT
---
Part of the linkgit:git[1] suite
diff --git a/git-reflog.html b/git-reflog.html
index 353565f..34fa3a4 100644
--- a/git-reflog.html
+++ b/git-reflog.html
@@ -452,15 +452,16 @@
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
-<pre class="content"><em>git reflog</em> [show] [<log-options>] [<ref>]
-<em>git reflog list</em>
-<em>git reflog expire</em> [--expire=<time>] [--expire-unreachable=<time>]
- [--rewrite] [--updateref] [--stale-fix]
- [--dry-run | -n] [--verbose] [--all [--single-worktree] | <refs>…​]
-<em>git reflog delete</em> [--rewrite] [--updateref]
- [--dry-run | -n] [--verbose] <ref>@{<specifier>}…​
-<em>git reflog drop</em> [--all [--single-worktree] | <refs>…​]
-<em>git reflog exists</em> <ref></pre>
+<pre class="content"><code>git</code> <code>reflog</code> [<code>show</code>] [<em><log-options></em>] [<em><ref></em>]
+<code>git</code> <code>reflog</code> <code>list</code>
+<code>git</code> <code>reflog</code> <code>exists</code> <em><ref></em>
+<code>git</code> <code>reflog</code> <code>write</code> <em><ref></em> <em><old-oid></em> <em><new-oid></em> <em><message></em>
+<code>git</code> <code>reflog</code> <code>delete</code> [<code>--rewrite</code>] [<code>--updateref</code>]
+ [<code>--dry-run</code> | <code>-n</code>] [<code>--verbose</code>] <em><ref></em><code>@</code>{<em><specifier></em>}…​
+<code>git</code> <code>reflog</code> <code>drop</code> [<code>--all</code> [<code>--single-worktree</code>] | <em><refs></em>…​]
+<code>git</code> <code>reflog</code> <code>expire</code> [<code>--expire=</code><em><time></em>] [<code>--expire-unreachable=</code><em><time></em>]
+ [<code>--rewrite</code>] [<code>--updateref</code>] [<code>--stale-fix</code>]
+ [<code>--dry-run</code> | <code>-n</code>] [<code>--verbose</code>] [<code>--all</code> [<code>--single-worktree</code>] | <em><refs></em>…​]</pre>
</div>
</div>
</div>
@@ -495,11 +496,16 @@
<p>The "list" subcommand lists all refs which have a corresponding reflog.</p>
</div>
<div class="paragraph">
-<p>The "expire" subcommand prunes older reflog entries. Entries older
-than <code>expire</code> time, or entries older than <code>expire-unreachable</code> time
-and not reachable from the current tip, are removed from the reflog.
-This is typically not used directly by end users — instead, see
-<a href="git-gc.html">git-gc(1)</a>.</p>
+<p>The "exists" subcommand checks whether a ref has a reflog. It exits
+with zero status if the reflog exists, and non-zero status if it does
+not.</p>
+</div>
+<div class="paragraph">
+<p>The "write" subcommand writes a single entry to the reflog of a given
+reference. This new entry is appended to the reflog and will thus become
+the most recent entry. The reference name must be fully qualified. Both the old
+and new object IDs must not be abbreviated and must point to existing objects.
+The reflog message gets normalized.</p>
</div>
<div class="paragraph">
<p>The "delete" subcommand deletes single entries from the reflog, but
@@ -513,9 +519,11 @@
can be used to delete reflog entries, but not the reflog itself.</p>
</div>
<div class="paragraph">
-<p>The "exists" subcommand checks whether a ref has a reflog. It exits
-with zero status if the reflog exists, and non-zero status if it does
-not.</p>
+<p>The "expire" subcommand prunes older reflog entries. Entries older
+than <code>expire</code> time, or entries older than <code>expire-unreachable</code> time
+and not reachable from the current tip, are removed from the reflog.
+This is typically not used directly by end users — instead, see
+<a href="git-gc.html">git-gc(1)</a>.</p>
</div>
</div>
</div>
@@ -529,78 +537,6 @@
</div>
</div>
<div class="sect2">
-<h3 id="_options_for_expire">Options for <code>expire</code></h3>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">--all</dt>
-<dd>
-<p>Process the reflogs of all references.</p>
-</dd>
-<dt class="hdlist1">--single-worktree</dt>
-<dd>
-<p>By default when <code>--all</code> is specified, reflogs from all working
-trees are processed. This option limits the processing to reflogs
-from the current working tree only.</p>
-</dd>
-<dt class="hdlist1">--expire=<time></dt>
-<dd>
-<p>Prune entries older than the specified time. If this option is
-not specified, the expiration time is taken from the
-configuration setting <code>gc.reflogExpire</code>, which in turn
-defaults to 90 days. <code>--expire=all</code> prunes entries regardless
-of their age; <code>--expire=never</code> turns off pruning of reachable
-entries (but see <code>--expire-unreachable</code>).</p>
-</dd>
-<dt class="hdlist1">--expire-unreachable=<time></dt>
-<dd>
-<p>Prune entries older than <em><time></em> that are not reachable from
-the current tip of the branch. If this option is not
-specified, the expiration time is taken from the configuration
-setting <code>gc.reflogExpireUnreachable</code>, which in turn defaults
-to 30 days. <code>--expire-unreachable=all</code> prunes unreachable
-entries regardless of their age; <code>--expire-unreachable=never</code>
-turns off early pruning of unreachable entries (but see
-<code>--expire</code>).</p>
-</dd>
-<dt class="hdlist1">--updateref</dt>
-<dd>
-<p>Update the reference to the value of the top reflog entry (i.e.
-<ref>@{0}) if the previous top entry was pruned. (This
-option is ignored for symbolic references.)</p>
-</dd>
-<dt class="hdlist1">--rewrite</dt>
-<dd>
-<p>If a reflog entry’s predecessor is pruned, adjust its "old"
-SHA-1 to be equal to the "new" SHA-1 field of the entry that
-now precedes it.</p>
-</dd>
-<dt class="hdlist1">--stale-fix</dt>
-<dd>
-<p>Prune any reflog entries that point to "broken commits". A
-broken commit is a commit that is not reachable from any of
-the reference tips and that refers, directly or indirectly, to
-a missing commit, tree, or blob object.</p>
-<div class="paragraph">
-<p>This computation involves traversing all the reachable objects, i.e. it
-has the same cost as <em>git prune</em>. It is primarily intended to fix
-corruption caused by garbage collecting using older versions of Git,
-which didn’t protect objects referred to by reflogs.</p>
-</div>
-</dd>
-<dt class="hdlist1">-n</dt>
-<dt class="hdlist1">--dry-run</dt>
-<dd>
-<p>Do not actually prune any entries; just show what would have
-been pruned.</p>
-</dd>
-<dt class="hdlist1">--verbose</dt>
-<dd>
-<p>Print extra information on screen.</p>
-</dd>
-</dl>
-</div>
-</div>
-<div class="sect2">
<h3 id="_options_for_delete">Options for <code>delete</code></h3>
<div class="paragraph">
<p><code>git</code> <code>reflog</code> <code>delete</code> accepts options <code>--updateref</code>, <code>--rewrite</code>, <code>-n</code>,
@@ -612,11 +548,11 @@
<h3 id="_options_for_drop">Options for <code>drop</code></h3>
<div class="dlist">
<dl>
-<dt class="hdlist1">--all</dt>
+<dt class="hdlist1"><code>--all</code></dt>
<dd>
<p>Drop the reflogs of all references from all worktrees.</p>
</dd>
-<dt class="hdlist1">--single-worktree</dt>
+<dt class="hdlist1"><code>--single-worktree</code></dt>
<dd>
<p>By default when <code>--all</code> is specified, reflogs from all working
trees are dropped. This option limits the processing to reflogs
@@ -625,6 +561,78 @@
</dl>
</div>
</div>
+<div class="sect2">
+<h3 id="_options_for_expire">Options for <code>expire</code></h3>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>--all</code></dt>
+<dd>
+<p>Process the reflogs of all references.</p>
+</dd>
+<dt class="hdlist1"><code>--single-worktree</code></dt>
+<dd>
+<p>By default when <code>--all</code> is specified, reflogs from all working
+trees are processed. This option limits the processing to reflogs
+from the current working tree only.</p>
+</dd>
+<dt class="hdlist1"><code>--expire=</code><em><time></em></dt>
+<dd>
+<p>Prune entries older than the specified time. If this option is
+not specified, the expiration time is taken from the
+configuration setting <code>gc.reflogExpire</code>, which in turn
+defaults to 90 days. <code>--expire=all</code> prunes entries regardless
+of their age; <code>--expire=never</code> turns off pruning of reachable
+entries (but see <code>--expire-unreachable</code>).</p>
+</dd>
+<dt class="hdlist1"><code>--expire-unreachable=</code><em><time></em></dt>
+<dd>
+<p>Prune entries older than <em><time></em> that are not reachable from
+the current tip of the branch. If this option is not
+specified, the expiration time is taken from the configuration
+setting <code>gc.reflogExpireUnreachable</code>, which in turn defaults
+to 30 days. <code>--expire-unreachable=all</code> prunes unreachable
+entries regardless of their age; <code>--expire-unreachable=never</code>
+turns off early pruning of unreachable entries (but see
+<code>--expire</code>).</p>
+</dd>
+<dt class="hdlist1"><code>--updateref</code></dt>
+<dd>
+<p>Update the reference to the value of the top reflog entry (i.e.
+<ref>@{0}) if the previous top entry was pruned. (This
+option is ignored for symbolic references.)</p>
+</dd>
+<dt class="hdlist1"><code>--rewrite</code></dt>
+<dd>
+<p>If a reflog entry’s predecessor is pruned, adjust its "old"
+SHA-1 to be equal to the "new" SHA-1 field of the entry that
+now precedes it.</p>
+</dd>
+<dt class="hdlist1"><code>--stale-fix</code></dt>
+<dd>
+<p>Prune any reflog entries that point to "broken commits". A
+broken commit is a commit that is not reachable from any of
+the reference tips and that refers, directly or indirectly, to
+a missing commit, tree, or blob object.</p>
+<div class="paragraph">
+<p>This computation involves traversing all the reachable objects, i.e. it
+has the same cost as <em>git prune</em>. It is primarily intended to fix
+corruption caused by garbage collecting using older versions of Git,
+which didn’t protect objects referred to by reflogs.</p>
+</div>
+</dd>
+<dt class="hdlist1"><code>-n</code></dt>
+<dt class="hdlist1"><code>--dry-run</code></dt>
+<dd>
+<p>Do not actually prune any entries; just show what would have
+been pruned.</p>
+</dd>
+<dt class="hdlist1"><code>--verbose</code></dt>
+<dd>
+<p>Print extra information on screen.</p>
+</dd>
+</dl>
+</div>
+</div>
</div>
</div>
<div class="sect1">
@@ -638,7 +646,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-06-20 18:10:42 -0700
+Last updated 2025-08-21 14:43:15 -0700
</div>
</div>
</body>