Subject: What's cooking in git.git (Dec 2025, #09)

From: Junio C Hamano <[email-masked]>
Date: Tue, 30 Dec 2025 22:47:45 +0900

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).

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/

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

* dk/ci-rust-fix (2025-12-18) 2 commits
  (merged to 'next' on 2025-12-22 at 5f7e5b040b)
 + rust: build correctly without GNU sed
 + Merge branch 'ps/ci-rust' into dk/ci-rust-fix

 Build fix.
 source: <a33f4e511[email-masked]>

* gf/clear-path-cache-cleanup (2025-12-18) 1 commit
  (merged to 'next' on 2025-12-22 at 748d7c2c93)
 + repository: remove duplicate free of cache->squash_msg

 Code clean-up.
 source: <[email-masked]>

* gf/maintenance-is-needed-fix (2025-12-18) 1 commit
  (merged to 'next' on 2025-12-22 at a84d7e8a32)
 + refs: dereference the value of the required pointer

 Brown-paper-bag fix to a recently graduated
 'kn/maintenance-is-needed' topic.
 source: <[email-masked]>

* jc/object-read-stream-fix (2025-12-17) 2 commits
  (merged to 'next' on 2025-12-23 at b26856ce64)
 + odb: do not use "blank" substitute for NULL
 + Merge branch 'ps/object-read-stream' into jc/object-read-stream-fix
 (this branch is used by ps/read-object-info-improvements.)

 Fix a performance regression in recently graduated topic.
 source: <[email-masked]>

* jk/test-curl-updates (2025-12-18) 2 commits
  (merged to 'next' on 2025-12-23 at ef92594ee8)
 + t5563: add missing end-of-line in HTTP header
 + t5551: handle trailing slashes in expected cookies output

 Update HTTP tests to adjust for changes in curl 8.18.0
 source: <[email-masked]>

* js/test-func-comment-fix (2025-12-18) 1 commit
  (merged to 'next' on 2025-12-22 at 5eadd4ae77)
 + test_detect_ref_format: fix comment

 Comment fix.
 source: <[email-masked]>

* js/test-symlink-windows (2025-12-17) 10 commits
  (merged to 'next' on 2025-12-22 at 3eaa789d0d)
 + t7800: work around the MSYS path conversion on Windows
 + t6423: introduce Windows-specific handling for symlinking to /dev/null
 + t1305: skip symlink tests that do not apply to Windows
 + t1006: accommodate for symlink support in MSYS2
 + t0600: fix incomplete prerequisite for a test case
 + t0301: another fix for Windows compatibility
 + t0001: handle `diff --no-index` gracefully
 + mingw: special-case `open(symlink, O_CREAT | O_EXCL)`
 + apply: symbolic links lack a "trustable executable bit"
 + t9700: accommodate for Windows paths
 (this branch is used by js/prep-symlink-windows and js/symlink-windows.)

 Prepare test suite for Git for Windows that supports symbolic
 links.
 source: <[email-masked]>

* jt/doc-rev-list-filter-provided-objects (2025-12-15) 1 commit
  (merged to 'next' on 2025-12-22 at 31970a567d)
 + docs: clarify git-rev-list(1) --filter behavior

 Document "rev-list --filter-provided-objects" better.
 source: <[email-masked]>

* jt/repo-struct-more-objinfo (2025-12-17) 7 commits
  (merged to 'next' on 2025-12-22 at d04904c31c)
 + builtin/repo: add object disk size info to structure table
 + builtin/repo: add disk size info to keyvalue stucture output
 + builtin/repo: add inflated object info to structure table
 + builtin/repo: add inflated object info to keyvalue structure output
 + builtin/repo: humanise count values in structure output
 + strbuf: split out logic to humanise byte values
 + builtin/repo: group per-type object values into struct

 More object database related information are shown in "git repo
 structure" output.
 source: <[email-masked]>

* mh/doc-core-attributesfile (2025-12-17) 1 commit
  (merged to 'next' on 2025-12-22 at 5d68c3ef97)
 + docs: note the type of core.attributesfile

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

* ps/repack-avoid-noop-midx-rewrite (2025-12-10) 3 commits
  (merged to 'next' on 2025-12-22 at 0d3b9de55c)
 + midx-write: skip rewriting MIDX with `--stdin-packs` unless needed
 + midx-write: extract function to test whether MIDX needs updating
 + midx: fix `BUG()` when getting preferred pack without a reverse index

 Even when there is no changes in the packfile and no need to
 recompute bitmaps, "git repack" recomputed and updated the MIDX
 file, which has been corrected.
 source: <[email-masked]>

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

* dd/t5403-modernise (2025-12-29) 1 commit
 - t5403: use test_path_is_file instead of test -f

 Test micro-clean-up.

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

* ds/diff-lazy-fetch-with-name-only-fix (2025-12-29) 1 commit
 - diff: avoid segfault with freed entries

 Running "git diff" with "--name-only" and other options that allows
 us not to look at the blob contents, while objects that are lazily
 fetched from a promisor remote, caused use-after-free, which has
 been corrected.

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

* en/fsck-snapshot-ref-state (2025-12-29) 1 commit
 - fsck: snapshot default refs before object walk

 "git fsck" used inconsistent set of refs to show a confused
 warning, which has been corrected.

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

* en/ort-recursive-d-f-conflict-fix (2025-12-29) 1 commit
 - merge-ort: fix corner case recursive submodule/directory conflict handling

 The ort merge machinery was hit an assertion failure in a history
 with criss-cross merges renamed a directory and a non-directory,
 which has been corrected.

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

* rs/tag-wo-the-repository (2025-12-28) 4 commits
 - tag: stop using the_repository
 - tag: support arbitrary repositories in parse_tag()
 - tag: support arbitrary repositories in gpg_verify_tag()
 - tag: use algo of repo parameter in parse_tag_buffer()

 Code clean-up.

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

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

* kh/replay-invalid-onto-advance (2025-12-22) 2 commits
 - t3650: add more regression tests for failure conditions
 - replay: die descriptively when invalid commit-ish

 Test coverage of "git replay" has been improved.

 Expecting a rework on the bottom patch.
 source: <[email-masked]>

* bc/checkout-error-message-fix (2025-12-24) 1 commit
  (merged to 'next' on 2025-12-28 at d807c22e01)
 + checkout: quote invalid treeish in error message

 Message fix.

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

* cc/lop-filter-auto (2025-12-23) 9 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filter in memory
 - list-objects-filter-options: implement auto filter resolution
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <[email-masked]>

* rs/commit-stack (2025-12-24) 14 commits
 - commit-reach: use commit_stack
 - commit-graph: use commit_stack
 - commit: add commit_stack_grow()
 - shallow: use commit_stack
 - pack-bitmap-write: use commit_stack
 - commit: add commit_stack_init()
 - test-reach: use commit_stack
 - remote: use commit_stack for src_commits
 - remote: use commit_stack for sent_tips
 - remote: use commit_stack for local_commits
 - name-rev: use commit_stack
 - midx: use commit_stack
 - log: use commit_stack
 - revision: export commit_stack

 Code clean-up, unifying various hand-rolled "list of commit
 objects" and use the commit_stack API.

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

* rs/parse-config-expiry-simplify (2025-12-27) 1 commit
  (merged to 'next' on 2025-12-30 at 138de1df67)
 + config: use git_parse_int() in git_config_get_expiry_in_days()

 Code clean-up.

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

* rs/show-branch-prio-queue (2025-12-25) 1 commit
  (merged to 'next' on 2025-12-28 at 99d21acd7b)
 + show-branch: use prio_queue

 Code clean-up.

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

* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <[email-masked]>

* sb/bundle-uri-without-uri (2025-12-19) 1 commit
 - bundle-uri: validate that bundle entries have a uri

 Diagnose invalid bundle-URI that lack the URI entry, instead of
 crashing.

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

* sb/doc-worktree-prune-expire-improvement (2025-12-19) 2 commits
 - worktree: use 'prune' instead of 'expire' in help text
 - worktree: clarify --expire applies to missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

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

* ja/doc-synopsis-style-more (2025-12-20) 5 commits
 - doc: convert git-remote to synopsis style
 - doc: convert git stage to use synopsis block
 - doc: convert git-status tables to AsciiDoc format
 - doc: convert git-status to synopsis style
 - doc: fix t0450-txt-doc-vs-help to select only first synopsis block

 More doc style updates.

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

* js/symlink-windows (2025-12-17) 19 commits
 - mingw: special-case index entries for symlinks with buggy size
 - mingw: emulate `stat()` a little more faithfully
 - mingw: try to create symlinks without elevated permissions
 - mingw: add support for symlinks to directories
 - mingw: implement basic `symlink()` functionality (file symlinks only)
 - mingw: implement `readlink()`
 - mingw: allow `mingw_chdir()` to change to symlink-resolved directories
 - mingw: support renaming symlinks
 - mingw: handle symlinks to directories in `mingw_unlink()`
 - mingw: add symlink-specific error codes
 - mingw: change default of `core.symlinks` to false
 - mingw: factor out the retry logic
 - mingw: compute the correct size for symlinks in `mingw_lstat()`
 - mingw: teach dirent about symlinks
 - mingw: let `mingw_lstat()` error early upon problems with reparse points
 - mingw: drop the separate `do_lstat()` function
 - mingw: implement `stat()` with symlink support
 - mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
 - Merge branch 'js/prep-symlink-windows' into js/symlink-windows
 (this branch uses js/prep-symlink-windows.)

 Upstream symbolic link support on Windows from Git-for-Windows.

 Expecting review responses.
 cf. <[email-masked]>
 source: <[email-masked]>

* pc/lockfile-pid (2025-12-17) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.
 source: <[email-masked]>

* js/neuter-sideband (2025-12-17) 4 commits
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 cf. <[email-masked]>
 source: <[email-masked]>

* ps/read-object-info-improvements (2025-12-18) 8 commits
 - packfile: drop repository parameter from `packed_object_info()`
 - packfile: skip unpacking object header for disk size requests
 - packfile: disentangle return value of `packed_object_info()`
 - packfile: always populate pack-specific info when reading object info
 - packfile: extend `is_delta` field to allow for "unknown" state
 - packfile: always declare object info to be OI_PACKED
 - object-file: always set OI_LOOSE when reading object info
 - Merge branch 'jc/object-read-stream-fix' into ps/read-object-info-improvements

 The object-info API has been cleaned up.

 Comments?
 source: <202[email-masked]>

* tb/macos-iconv-workarounds (2025-12-15) 6 commits
 . config.mak.uname: activate ICONV_RESTART_RESET if needed
 . Makefile: make all darwin into config.mak.uname
 . utf8.c: prepare workaround for iconv under macOS 14/15
 . Merge branch 'rs/macos-iconv-workaround' into tb/macos-iconv-workarounds
 . config.mak.uname: use iconv from Homebrew on macOS
 . Makefile: add NO_HOMEBREW

 The iconv library on macOS fails to correctly handle stateful
 ISO/IEC 2022 encoded strings.  Work it around instead of replacing
 it wholesale from homebrew.

 RFC.
 needs to be debased from older rs/macos-iconv-workaround topic.
 source: <[email-masked]>

* js/prep-symlink-windows (2025-12-16) 6 commits
 - trim_last_path_component(): avoid hard-coding the directory separator
 - strbuf_readlink(): support link targets that exceed PATH_MAX
 - strbuf_readlink(): avoid calling `readlink()` twice in corner-cases
 - init: do parse _all_ core.* settings early
 - mingw: do resolve symlinks in `getcwd()`
 - Merge branch 'js/test-symlink-windows' into js/prep-symlink-windows
 (this branch is used by js/symlink-windows.)

 Further preparation to upstream symbolic link support on Windows.

 Expecting review responses.
 cf. <[email-masked]>
 source: <[email-masked]>

* ap/http-probe-rpc-use-auth (2025-11-12) 1 commit
 - remote-curl: Use auth for probe_rpc() requests too

 source: <[email-masked]>

* ps/packfile-store-in-odb-source (2025-12-17) 12 commits
 - packfile: move MIDX into packfile store
 - packfile: refactor `find_pack_entry()` to work on the packfile store
 - packfile: inline `find_kept_pack_entry()`
 - packfile: only prepare owning store in `packfile_store_prepare()`
 - packfile: only prepare owning store in `packfile_store_get_packs()`
 - packfile: move packfile store into object source
 - packfile: refactor misleading code when unusing pack windows
 - packfile: refactor kept-pack cache to work with packfile stores
 - packfile: pass source to `prepare_pack()`
 - packfile: create store via its owning source
 - Merge branch 'ps/odb-misc-fixes' into ps/packfile-store-in-odb-source
 - Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
 (this branch uses ps/odb-misc-fixes.)

 The packfile_store data structure is moved from object store to odb
 source.

 Comments?
 source: <[email-masked]>

* rs/macos-iconv-workaround (2025-12-24) 2 commits
  (merged to 'next' on 2025-12-28 at 94ed776719)
 + macOS: use iconv from Homebrew if needed and present
 + macOS: make Homebrew use configurable

 Workaround the "iconv" shipped as part of macOS, which is broken
 handling stateful ISO/IEC 2022 encoded strings.

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

* lo/repo-info-keys (2025-12-09) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Comments?
 source: <[email-masked]>

* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

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

* ps/odb-misc-fixes (2025-12-10) 3 commits
 - odb: properly close sources before freeing them
 - builtin/gc: fix condition for whether to write commit graphs
 - Merge branch 'ps/object-source-management' into ps/odb-misc-fixes
 (this branch is used by ps/packfile-store-in-odb-source.)

 Miscellaneous fixes on object database layer.

 Comments?
 source: <[email-masked]>

* ps/clar-integers (2025-12-06) 3 commits
 - gitattributes: disable blank-at-eof errors for clar test expectations
 - t/unit-tests: demonstrate use of integer comparison assertions
 - t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.

 Comments?
 source: <[email-masked]>

* tb/incremental-midx-part-3.2 (2025-12-06) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: split `get_midx_checksum()` by adding `get_midx_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

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

* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?
 source: <[email-masked]>

* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

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

* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

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

* pw/replay-drop-empty (2025-12-18) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic gains consensus and stabilizes.
 source: <375a[email-masked]>

* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <[email-masked]>

* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <[email-masked]>

* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

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

* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

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

* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <[email-masked]>

* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <[email-masked]>

* ar/run-command-hook (2025-12-26) 11 commits
  (merged to 'next' on 2025-12-28 at 048cdffe21)
 + receive-pack: convert receive hooks to hook API
 + receive-pack: convert update hooks to new API
 + hooks: allow callers to capture output
 + run-command: allow capturing of collated output
 + hook: allow overriding the ungroup option
 + reference-transaction: use hook API instead of run-command
 + transport: convert pre-push to hook API
 + hook: convert 'post-rewrite' hook in sequencer.c to hook API
 + hook: provide stdin via callback
 + run-command: add stdin callback for parallelization
 + run-command: add first helper for pp child states

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

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

* je/doc-reset (2025-12-18) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

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

* ps/history (2025-12-03) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'pw/replay-exclude-gpgsig-fix' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 What's the status of this topic?
 source: <[email-masked]>

* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=[email-masked]>
 source: <a[email-masked]>

* ar/submodule-gitdir-tweak (2025-12-20) 11 commits
 - submodule: detect conflicts with existing gitdir configs
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - 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.

 Comments?
 source: <[email-masked]>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will discard.  We do not complete single-letter options themselves.
 cf. <[email-masked]>
 source: <[email-masked]>