Subject: What's cooking in git.git (Sep 2025, #02; Wed, 3)

From: Junio C Hamano <[email-masked]>
Date: Wed, 03 Sep 2025 22:07:49 -0700

Here are the topics that have been cooking in my tree.  Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all and may be annotated with an URL
to a message that raises issues but they are no means exhaustive.  A
topic without enough support may be discarded after a long period of
no activity (of course they can be resubmit when new interests
arise).

There are a few topics that have been expecting a reroll for close
to a month.  I've moved them to the [Stalled] section below.  Let's
tighten rules around these topics a bit so that we can keep the tree
somewhat cleaner.

Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors.  Some
repositories have only a subset of branches.

With maint, master, next, seen, todo:

	git://git.kernel.org/pub/scm/git/git.git/
	git://repo.or.cz/alt-git.git/
	https://kernel.googlesource.com/pub/scm/git/git/
	https://github.com/git/git/
	https://gitlab.com/git-scm/git/

With all the integration branches and topics broken out:

	https://github.com/gitster/git/

Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):

	git://git.kernel.org/pub/scm/git/git-htmldocs.git/
	https://github.com/gitster/git-htmldocs.git/

Release tarballs are available at:

	https://www.kernel.org/pub/software/scm/git/

--------------------------------------------------
[New Topics]

* ds/midx-write-fixes (2025-08-30) 6 commits
 - midx-write: simplify error cases
 - midx-write: reenable signed comparison errors
 - midx-write: use uint32_t for preferred_pack_idx
 - midx-write: use cleanup when incremental midx fails
 - midx-write: put failing response value back
 - midx-write: only load initialized packs

 Fixes multiple crashes around midx write-out codepaths.

 Comments?
 source: <[email-masked]>

* km/alias-doc-markup-fix (2025-09-01) 1 commit
  (merged to 'next' on 2025-09-03 at 02da1fc9b3)
 + doc: fix formatting of function-wrap shell alias

 Docfix.

 Will merge to 'master'.
 source: <[email-masked]>

* ms/refs-exists (2025-08-25) 4 commits
  (merged to 'next' on 2025-09-03 at c6fc4c7461)
 + t: add test for git refs exists subcommand
 + t1422: refactor tests to be shareable
 + t1403: split 'show-ref --exists' tests into a separate file
 + builtin/refs: add 'exists' subcommand

 "git refs exists" that works like "git show-ref --exists" has been
 added.

 Will merge to 'master'.
 cf. <[email-masked]>
 source: <[email-masked]>

* ps/gitlab-ci-disable-windows-monitoring (2025-09-02) 1 commit
  (merged to 'next' on 2025-09-03 at f6148f5d05)
 + gitlab-ci: disable realtime monitoring to unbreak Windows jobs

 Windows "real-time monitoring" interferes with the execution of
 tests and affects negatively in both correctness and performance,
 which has been disabled in Gitlab CI.

 Will merge to 'master'.
 source: <[email-masked]>

* ps/packfile-store (2025-09-02) 16 commits
 - packfile: refactor `get_packed_git_mru()` to work on packfile store
 - packfile: refactor `get_all_packs()` to work on packfile store
 - packfile: remove `get_packed_git()`
 - packfile: move `get_multi_pack_index()` into "midx.c"
 - packfile: introduce function to load and add packfiles
 - packfile: refactor `install_packed_git()` to work on packfile store
 - packfile: split up responsibilities of `reprepare_packed_git()`
 - packfile: refactor `prepare_packed_git()` to work on packfile store
 - packfile: reorder functions to avoid function declaration
 - odb: move kept cache into `struct packfile_store`
 - odb: move MRU list of packfiles into `struct packfile_store`
 - odb: move packfile map into `struct packfile_store`
 - odb: move initialization bit into `struct packfile_store`
 - odb: move list of packfiles into `struct packfile_store`
 - packfile: introduce a new `struct packfile_store`
 - Merge branch 'ps/object-store-midx-dedup-info' into ps/packfile-store
 (this branch uses ps/object-store-midx-dedup-info.)

 Code clean-up around the in-core list of all the pack files and
 object database(s).

 Comments?
 source: <[email-masked]>

* kh/doc-markup-fixes (2025-09-02) 2 commits
  (merged to 'next' on 2025-09-03 at 1ba7204a04)
 + doc: remove extra backtick for inline-verbatim
 + doc: add missing backtick for inline-verbatim

 Doc markup fixes.

 Will merge to 'master'.
 source: <[email-masked]>

* kn/refs-files-case-insensitive (2025-09-02) 2 commits
 - refs/files: handle F/D conflicts in case-insensitive FS
 - refs/files: use correct error type when locking fails

 source: <20250902-587-git-fetch-1-[email-masked]>

* mm/worktree-doc-typofix (2025-09-03) 1 commit
 - docs: fix typo in worktree.adoc 'extension'

 source: <[email-masked]>

* ps/upload-pack-oom-protection (2025-09-02) 2 commits
 - upload-pack: don't ACK non-commits repeatedly in protocol v2
 - t5530: modernize tests

 source: <202509[email-masked]>

--------------------------------------------------
[Stalled]

These topics have been expecting updates for quite some time.  I'll
eject any of them when they start to conflict with other topics in
'seen' and may drop them from my tree when they are dormant for too
long (let's say 8 weeks is way too long, for now).  After that, they
can be proposed again by rerolling them in a shape that would work
well with other topics in 'seen' (and of course 'next' and
"master').

* lc/rebase-trailer (2025-08-03) 2 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`

 Expecting a reroll.
 cf. <[email-masked]>
 cf. <[email-masked]>
 source: <[email-masked]>

* ac/deglobal-sparse-variables (2025-07-18) 3 commits
 - environment: remove the global variable 'sparse_expect_files_outside_of_patterns'
 - environment: move access to "core.sparsecheckoutcone" into repo_settings
 - environment: move access to "core.sparsecheckout" into repo_settings
 (this branch is used by ds/sparse-checkout-clean.)

 Two global variables related to sparse checkout have been moved to
 the repository settings structure.

 Expecting a reroll.
 cf. <[email-masked]>
 source: <[email-masked]>

* tb/prepare-midx-pack-cleanup (2025-05-28) 5 commits
 . midx: return a `packed_git` pointer from `prepare_midx_pack()`
 . midx-write.c: extract inner loop from fill_packs_from_midx()
 . midx-write.c: guard against incremental MIDXs in want_included_pack()
 . midx: access pack names through `nth_midxed_pack_name()`
 . Merge branch 'ps/midx-negative-packfile-cache' into tb/prepare-midx-pack-cleanup

 Improvement on Multi-pack-index API.

 Expecting a reroll.
 cf. <[email-masked]>
 source: <[email-masked]>

* cc/promisor-remote-capability (2025-07-31) 5 commits
 - promisor-remote: use string constants for 'name' and 'url' too
 - promisor-remote: allow a client to check fields
 - promisor-remote: refactor how we parse advertised fields
 - promisor-remote: allow a server to advertise more fields
 - promisor-remote: refactor to get rid of 'struct strvec'

 The "promisor-remote" capability mechanism has been updated to
 allow the "partialCloneFilter" settings and the "token" value to be
 communicated from the server side.

 Expecting a reroll.
 cf. <[email-masked]>
 source: <[email-masked]>

* ar/submodule-gitdir-tweak (2025-09-02) 11 commits
 - fixup! t: submodules: add basic mixed gitdir path tests
 - fixup! t: add gitdir encoding tests
 - t: add gitdir encoding tests
 - t: move nested gitdir tests to proper location
 - submodule: remove validate_submodule_git_dir()
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - t: submodules: add basic mixed gitdir path tests
 - submodule: add gitdir path config override
 - submodule: create new gitdirs under submodules path
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting a reroll.
 cf. <[email-masked]>
 source: <[email-masked]>

--------------------------------------------------
[Graduated to 'master']

* ds/doc-ggg-pr-fork-clarify (2025-08-23) 1 commit
  (merged to 'next' on 2025-08-25 at 71aea64ee4)
 + doc: clarify which remotes can be used with GitGitGadget

 Update the instruction to use of GGG in the MyFirstContribution
 document to say that a GitHub PR could be made against `git/git`
 instead of `gitgitgadget/git`.
 source: <[email-masked]>

* ja/asciidoc-doctor-verbatim-fixes (2025-08-20) 1 commit
  (merged to 'next' on 2025-08-22 at 61fb953314)
 + doc: fix asciidoc format compatibility in pretty-formats.adoc

 Doc mark-up fix.
 source: <[email-masked]>

* js/doc-sending-patch-via-thunderbird (2025-08-22) 1 commit
  (merged to 'next' on 2025-08-25 at 1e63ebff8c)
 + doc/format-patch: adjust Thunderbird MUA hint to new add-on

 Doc update.
 source: <[email-masked]>

* kh/doc-config-typofix (2025-08-24) 1 commit
  (merged to 'next' on 2025-08-25 at f82e0a4c9b)
 + doc: config: replace backtick with apostrophe for possessive

 Documentation typofix.
 source: <[email-masked]>

* kh/doc-interpret-trailers-markup-fix (2025-08-22) 1 commit
  (merged to 'next' on 2025-08-25 at 9bee54a64d)
 + doc: interpret-trailers: close all pairs of single quotes

 Fix missing single-quote pairs in a documentation page.
 source: <[email-masked]>

--------------------------------------------------
[Cooking]

* tc/t0450-harden (2025-08-08) 2 commits
 - t0450: add allowlist for builtins with missing .adoc
 - t0450: fix test for out-of-tree builds

 Test updates.

 Will merge to 'next'.
 source: <[email-masked]>

* ag/doc-sendmail-gmail-example-update (2025-08-26) 1 commit
 - docs: update sendmail docs to use more secure SMTP server for Gmail

 Doc update.

 Will merge to 'next'?
 source: <[email-masked]>

* da/cargo-serialize (2025-08-26) 1 commit
  (merged to 'next' on 2025-08-29 at 5a193b1525)
 + Makefile: build libgit-rs and libgit-sys serially

 Makefile tried to run multiple "cargo build" which would not work
 very well; serialize their execution to work it around.

 Will merge to 'master'.
 source: <[email-masked]>

* en/rust-xdiff (2025-08-29) 15 commits
 - xdiff: implement xdl_trim_ends() in Rust
 - xdiff: make xdfile_t more rust friendly
 - xdiff: delete recs field from xdfile_t
 - xdiff: delete nrec field from xdfile_t
 - xdiff: replace chastore with an ivec in xdfile_t
 - xdiff: use one definition for freeing xdfile_t
 - xdiff: make fields of xrecord_t Rust friendly
 - xdiff: delete unnecessary fields from xrecord_t and xdfile_t
 - xdiff/xprepare: remove superfluous forward declarations
 - ivec: create a vector type that is interoperable between C and Rust
 - github workflows: upload Cargo.lock
 - win+Meson: do allow linking with the Rust-built xdiff
 - github workflows: install rust
 - xdiff: introduce rust
 - doc: add a policy for using Rust

 Rust!

 Comments?
 source: <[email-masked]>

* je/doc-checkout (2025-09-03) 6 commits
 - doc: git-checkout: clarify restoring files section
 - doc: git-checkout: split up restoring files section
 - doc: git-checkout: deduplicate --detach explanation
 - doc: git-checkout: clarify `-b` and `-B`
 - doc: git-checkout: clarify `git checkout <branch>`
 - doc: git-checkout: clarify intro

 Doc updates.

 Expecting a (hopefully small and final) reroll.
 cf. <[email-masked]>
 source: <[email-masked]>

* kn/clang-format-bitfields (2025-08-26) 1 commit
 - Documentation: note styling for bit fields

 CodingGuidelines now spells out how bitfields are to be written.

 Will merge to 'next'?
 source: <[email-masked]>

* jk/curl-global-trace-components (2025-08-27) 1 commit
 - curl: add support for curl_global_trace() components

 Adjust to the way newer versions of cURL selectivel enables tracing
 options, so that our tests can continue to work.

 Will merge to 'next'?
 source: <[email-masked]>

* kh/you-still-use-whatchanged-fix (2025-08-29) 4 commits
 - BreakingChanges: remove claim about whatchanged reports
 - whatchanged: remove not-even-shorter clause
 - whatchanged: tell users the git-log(1) equivalent
 - you-still-use-that??: help the user help themselves

 Update "do you still use it?" message given by a command that is
 deeply deprecated and allow us to suggest alternatives.

 Will merge to 'next'?
 source: <[email-masked]>

* ds/ls-files-lazy-unsparse (2025-08-15) 1 commit
  (merged to 'next' on 2025-08-29 at a48fee2dde)
 + ls-files: conditionally leave index sparse

 "git ls-files <pathspec>..." should not necessarily have to expand
 the index fully if a sparsified directory is excluded by the
 pathspec; the code is taught to expand the index on demand to avoid
 this.

 Will merge to 'master'.
 source: <[email-masked]>

* pc/range-diff-memory-limit (2025-08-29) 1 commit
 - range-diff: add configurable memory limit for cost matrix

 "git range-diff" learned a way to limit the memory consumed by
 O(N*N) cost matrix.

 Will merge to 'next'?
 source: <[email-masked]>

* ne/alloc-free-and-null (2025-08-29) 1 commit
 - alloc: fix dangling pointer in alloc_state cleanup

 The clear_alloc_state() API function was not fully clearing the
 structure for reuse, but since nobody reuses it, replace it with a
 variant that frees the structure as well, making the callers simpler.

 Will merge to 'next'?
 source: <[email-masked]>

* rs/describe-with-lazy-queue-and-oidset (2025-09-02) 1 commit
 - describe: use oidset in finish_depth_computation()

 Instead of scanning for the remaining items to see if there are
 still commits to be explored in the queue, use khash to remember
 which items are still on the queue (an unacceptable alternative is
 to reserve one object flag bits).

 Will merge to 'next'.
 source: <[email-masked]>

* lo/repo-info-step-2 (2025-09-01) 3 commits
 - repo: add the field objects.format
 - repo: add the flag -z as an alias for --format=nul
 - Merge branch 'lo/repo-info' into lo/repo-info-step-2

 "repo info" learns a short-hand option "-z" that is the same as
 "--format=nul", and learns to report the objects format used in the
 repository.

 Will merge to 'next'?
 source: <[email-masked]>

* jc/doc-includeif-hasconfig-remote-url-fix (2025-08-21) 1 commit
 - config: document includeIf conditions consistently

 Doc mark-up fix.

 Will merge to 'next'?
 source: <[email-masked]>

* jk/add-i-color (2025-08-21) 4 commits
 - contrib/diff-highlight: mention interactive.diffFilter
 - add-interactive: manually fall back color config to color.ui
 - add-interactive: respect color.diff for diff coloring
 - stash: pass --no-color to diff-tree child processes

 Some among "git add -p" and friends ignored color.diff and/or
 color.ui configuration variables, which is an old regression, which
 has been corrected.

 Will merge to 'next'?
 source: <[email-masked]>

* jt/de-global-bulk-checkin (2025-08-22) 4 commits
 - bulk-checkin: use repository variable from transaction
 - bulk-checkin: require transaction for index_blob_bulk_checkin()
 - bulk-checkin: remove global transaction state
 - bulk-checkin: introduce object database transaction structure

 The bulk-checkin code used to depend on a file-scope static
 singleton variable, which has been updated to pass an instance
 throughout the callchain.

 Will merge to 'next'?
 source: <[email-masked]>

* je/doc-add (2025-08-29) 3 commits
  (merged to 'next' on 2025-09-02 at 6aa32994dd)
 + doc: rephrase the purpose of the staging area
  (merged to 'next' on 2025-08-25 at 0c84501ed2)
 + doc: git-add: simplify discussion of ignored files
 + doc: git-add: clarify intro & add an example

 Documentation for "git add" has been updated.

 Will merge to 'master'.
 source: <[email-masked]>
 source: <[email-masked]>

* ds/path-walk-repack-fix (2025-08-25) 2 commits
  (merged to 'next' on 2025-08-29 at 13028ffb8e)
 + path-walk: create initializer for path lists
 + path-walk: fix setup of pending objects

 "git repack --path-walk" lost objects in some corner cases, which
 has been corrected.

 Will merge to 'master'.
 cf. <CABPp-BHFxxGrqKc0m==TjQNjDGdO=H5Rf6EFsf2nfE1=[email-masked]>
 source: <[email-masked]>

* sg/line-log-boundary-fixes (2025-08-18) 2 commits
 - line-log: show all line ranges touched by the same diff range
 - line-log: fix assertion error

 Fix for a corner case bug in "git log -L...".

 Will merge to 'next'?
 source: <[email-masked]>

* jc/longer-disambiguation-fix (2025-08-14) 1 commit
 - abbrev: allow extending beyond 32 chars to disambiguate

 "git rev-parse --short" and friends failed to disambiguate two
 objects with object names that share common prefix longer than 32
 characters.

 Will merge to 'next'?
 source: <[email-masked]>

* ps/object-store-midx-dedup-info (2025-08-11) 11 commits
  (merged to 'next' on 2025-09-03 at 4b12427226)
 + midx: compute paths via their source
 + midx: stop duplicating info redundant with its owning source
 + midx: write multi-pack indices via their source
 + midx: load multi-pack indices via their source
 + midx: drop redundant `struct repository` parameter
 + odb: simplify calling `link_alt_odb_entry()`
 + odb: return newly created in-memory sources
 + odb: consistently use "dir" to refer to alternate's directory
 + odb: allow `odb_find_source()` to fail
 + odb: store locality in object database sources
 + Merge branch 'ps/object-store-midx' into ps/object-store-midx-dedup-info
 (this branch is used by ps/packfile-store.)

 Further code clean-up for multi-pack-index code paths.

 Will merge to 'master'.
 cf. <[email-masked]>
 source: <[email-masked]>

* am/xdiff-hash-tweak (2025-07-28) 2 commits
  (merged to 'next' on 2025-08-29 at 43590f0b38)
 + xdiff: optimize xdl_hash_record_verbatim
 + xdiff: refactor xdl_hash_record()

 Inspired by Ezekiel's recent effort to showcase Rust interface, the
 hash function implementation used to hash lines have been updated
 to the one used for ELF symbol lookup by Glibc.

 Will merge to 'master'.
 cf. <[email-masked]>
 source: <[email-masked]>

* ag/send-email-imap-sent (2025-08-11) 2 commits
 - send-email: enable copying emails to an IMAP folder without actually sending them
 - send-email: add ability to send a copy of sent emails to an IMAP folder

 "git send-email" learned to drive "git imap-send" to store already
 sent e-mails in an IMAP folder.

 Will merge to 'next'?
 source: <[email-masked]>

* ds/sparse-checkout-clean (2025-07-16) 9 commits
 - sparse-checkout: make 'clean' clear more files
 - t: expand tests around sparse merges and clean
 - sparse-index: point users to new 'clean' action
 - sparse-checkout: add --verbose option to 'clean'
 - dir: add generic "walk all files" helper
 - sparse-checkout: match some 'clean' behavior
 - sparse-checkout: add basics of 'clean' command
 - sparse-checkout: remove use of the_repository
 - Merge branch 'ac/deglobal-sparse-variables' into ds/sparse-checkout-clean
 (this branch uses ac/deglobal-sparse-variables.)

 "git sparse-checkout" subcommand learned a new "clean" action to
 prune otherwise unused working-tree files that are outside the
 areas of interest.

 Needs to wait for the base topic to solidify.
 Waiting for review responses.
 cf. <[email-masked]>
 source: <[email-masked]>

* pw/3.0-commentchar-auto-deprecation (2025-08-26) 4 commits
 - commit: print advice when core.commentString=auto
 - config: warn on core.commentString=auto
 - breaking-changes: deprecate support for core.commentString=auto
 - Merge branch 'ps/config-wo-the-repository' into pw/3.0-commentchar-auto-deprecation

 Proposes to deprecate "core.commentChar=auto" that attempts to
 dynamically pick a suitable comment character, as it is too much
 trouble to support for little benefit.

 Will merge to 'next'?
 source: <[email-masked]>

* tc/last-modified (2025-08-05) 3 commits
  (merged to 'next' on 2025-08-29 at 3f3e111189)
 + last-modified: use Bloom filters when available
 + t/perf: add last-modified perf script
 + last-modified: new subcommand to show when files were last modified

 A new command "git last-modified" is proposed to show the closest
 ancestor commit that touched each path.

 Will merge to 'master'.
 source: <[email-masked]>