What's cooking in git.git (Oct 2026, #08)

From: Junio C Hamano <hidden>
Date: 2026-10-22 21:14:39

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

We are seeing a surge of incoming patches, many of which are in
'seen' only because I kept them to avoid forgetting them, not
because I carefully read them and found them promising, which was
the original purpose of the 'seen' branch.  Other reviewers and I
have made comments that have not been adequately addressed, leaving
these topics stalled in the "Waiting for response" state.  I am
absorbing topics into 'seen' at a rate way over our capacity, and I
should start throttling them.  Unless the situation improves, I may
have to be more aggressive in dropping stalled topics from my tree.
It is highly unusual to have 100 topic merges between 'master' and
'seen', and only 30 topics among them are in or anywhere close to
'next'.

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']

* bb/unicode-width-table-18 (2026-10-12) 1 commit
  (merged to 'next' on 2026-10-15 at 2c18040c27)
 + unicode: update the width tables to Unicode 18

 Unicode character width table has been updated to match
 Unicode 18 announced on 2026-09-16.

 Graduated to 'master'.
 cf. <xmqqpkxe4nni.fsf@gitster.g>
 source: [ref]


* cc/lazy-fetch-trusted-bit (2026-10-02) 5 commits
  (merged to 'next' on 2026-10-14 at 1ec904b173)
 + builtin/upload-pack: don't disable lazy fetching on trusted repo
 + promisor-remote: prevent infinite recursion when lazy fetching
 + upload-pack: read uploadpack.lazyFetchTrusted
 + setup: extract path_allowlist_apply()
 + promisor-remote: factor out lazy_fetch_objects()

 A new 'uploadpack.lazyFetchTrusted' configuration variable has been
 introduced to allow 'upload-pack' to lazily fetch missing objects from
 configured promisor remotes when serving trusted repositories.

 Graduated to 'master'.
 cf. <xmqqo6d8ma4l.fsf@gitster.g>
 source: [ref]


* ch/fetch-followremotehead-lazy-validation (2026-10-05) 1 commit
  (merged to 'next' on 2026-10-10 at 07225ecfe2)
 + fetch.c: defer fetch.followRemoteHEAD validation

 Validation of the 'fetch.followRemoteHEAD' configuration variable
 has been deferred to when it is actually used, preventing irrelevant
 warnings during 'git fetch' invocations that do not consult it.

 Graduated to 'master'.
 cf. <xmqqece1a206.fsf@gitster.g>
 source: [ref]


* hn/ci-leak-sanitizer-annotations (2026-10-05) 2 commits
  (merged to 'next' on 2026-10-16 at 5192346936)
 + ci: point test failures and fixed known breakages at their file and line
 + ci: annotate leaks and stop a leak-sanitizer script at its first failure

 CI on GitHub Actions gets a better annotation experience.  Leak test
 scripts are stopped at their first failure with --immediate to
 prevent flooding the log, and failures are correctly annotated with
 their file and line number.

 Graduated to 'master'.
 cf. [ref]
 cf. <xmqq7bjlxvf5.fsf@gitster.g>
 source: [ref]


* hn/t7004-flaky-gpg-test-fix (2026-10-08) 1 commit
  (merged to 'next' on 2026-10-12 at 129ede20d9)
 + t7004: check a missing key without deleting gpghome

 The test for verifying a signed tag with a missing key has been
 updated to point GNUPGHOME to an unused directory rather than
 deleting the active gpghome directory, working around a flaky rm
 failure caused by the background gpg-agent observed on Alpine.

 Graduated to 'master'.
 cf. <xmqqpkxkyo90.fsf@gitster.g>
 source: [ref]


* je/status-merge-specific-help (2026-10-09) 1 commit
  (merged to 'next' on 2026-10-12 at faf92af151)
 + status: suggest `git merge --continue`, not `git commit`

 "git status" now suggests to use 'git merge --continue', not 'git commit',
 when done with conflicts during a 'git merge'.

 Graduated to 'master'.
 cf. [ref]
 source: [ref]


* kk/fetch-write-commit-graph-incremental (2026-10-07) 2 commits
  (merged to 'next' on 2026-10-12 at a3a4e0019e)
 + fetch: write commit-graph using updated refs only
 + test-tool read-graph: add commit-info subcommand

 The fetch.writeCommitGraph behavior has been optimized to
 incrementally update the commit graph using only the newly fetched
 commits as seeds.  This avoids a full reachability scan of all
 references and drastically reduces the post-fetch commit-graph
 update time for repositories with many references.

 Graduated to 'master'.
 cf. [ref]
 source: [ref]


* kn/packed-refs-verbatim-write (2026-10-07) 1 commit
  (merged to 'next' on 2026-10-12 at c6b56e5487)
 + packed-refs: use `fwrite()` when passing refs verbatim

 The routine that rewrites the packed-refs file has been optimized to
 directly pass unmodified reference records verbatim to the output
 via fwrite(3p), instead of redundantly re-formatting them with
 fprintf(3p).

 Graduated to 'master'.
 cf. [ref]
 cf. [ref]
 source: [ref]


* oa/delta-islands-i18n-use-q (2026-10-13) 1 commit
  (merged to 'next' on 2026-10-16 at becbceb2fd)
 + delta-islands: use Q_() for island count

 The progress message emitted by the 'delta-islands' subsystem has
 been updated to use the Q_() macro, allowing translators to properly
 handle plural forms based on the number of islands marked.

 Graduated to 'master'.
 cf. <xmqqv775xyz9.fsf@gitster.g>
 source: [ref]


* ps/odb-files-alternates (2026-10-08) 13 commits
  (merged to 'next' on 2026-10-12 at 1c691e7860)
 + odb/source: drop `read_alternates` callback
 + odb/source-files: move alternates into the backend
 + odb/source-files: extract reading alternates
 + odb/source: make `will_destroy` an implementation detail
 + tmp-objdir: replace primary source at creation time
 + tmp-objdir: manage quarantine as an object directory
 + tmp-objdir: absorb logic to set and restore primary sources
 + odb/source-files: add the ability to have multiple object dirs
 + odb: refactor `odb_find_source()` to yield dirs
 + odb: refactor `odb_for_each_alternate()` to yield dirs
 + odb/source-files: introduce `struct odb_files_dir`
 + commit-graph: stop depending on `struct odb_source`
 + commit-graph: require resolved packfile paths for `stdin_packs`
 (this branch is used by ps/odb-files-alternates-cleanups.)

 The odb_source API has been refactored to make alternates an
 implementation detail of the files backend instead of managing them
 at the core object database layer.

 Graduated to 'master'.
 cf. [ref]
 source: [ref]


* ps/packfile-stale-delta-base-cache-fix (2026-10-06) 2 commits
  (merged to 'next' on 2026-10-10 at e22da2de11)
 + packfile: fix corruption due to stale delta base cache entries
 + packfile: move around `close_pack()`

 Closing a packfile did not evict the entries belonging to it from
 the delta base cache, which could lead to data corruption when a
 newly allocated packfile happened to reuse the same memory address.
 The cache eviction logic has been updated to remove these stale
 entries upon closing a pack

 Graduated to 'master'.
 cf. [ref]
 source: [ref]


* pw/checkout-m-conflict-labels (2026-10-13) 3 commits
  (merged to 'next' on 2026-10-16 at 6a04190bee)
 + merge: remember conflict labels
 + checkout -m <path>: cache merge settings
 + remove_branch_state: convert boolean argument to flags

 When recreating a merge conflict using 'git checkout -m', the
 original conflict labels (such as branch names) were lost and
 replaced with generic ones.  The merge machinery has been updated to
 record the original labels in '.git/MERGE_LABELS', allowing 'git
 checkout -m' to restore them.

 Graduated to 'master'.
 cf. <xmqqzewhy05i.fsf@gitster.g>
 source: [ref]


* ss/history-sign-rewrites (2026-10-03) 2 commits
  (merged to 'next' on 2026-10-16 at dece36488c)
 + history: sign rewritten commits
 + replay: allow callers to sign commits

 The git history command and its subcommands have been updated to
 honor the commit.gpgSign configuration variable and accept the
 --gpg-sign and --no-gpg-sign command-line options, ensuring both
 rewritten commits and their replayed descendants are
 cryptographically signed by the committer.

 Graduated to 'master'.
 cf. <xmqqecdtwgm4.fsf@gitster.g>
 source: [ref]

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

* of/bundle-uninitialized-memory-fix (2026-10-18) 1 commit
  (merged to 'next' on 2026-10-22 at 444b851810)
 + bundle: do not free uninitialized memory on bad arguments

 The 'git bundle create' command has been updated to initialize the
 revs_copy structure at declaration. This prevents a potential crash
 caused by reading uninitialized stack memory during cleanup when an
 unrecognized argument is provided.

 Will merge to 'master'.
 cf. [ref]
 cf. [ref]
 source: [ref]


* of/config-buf-fgetc-unsigned (2026-10-18) 1 commit
  (merged to 'next' on 2026-10-22 at bbc906379a)
 + config: read the bytes of a blob as unsigned characters

 The internal config file parser has been updated to treat the
 content read from a blob as a sequence of unsigned bytes, preventing
 bytes with the high bit set from being mistakenly interpreted as
 'EOF'.

 Will merge to 'master'.
 source: [ref]


* ag/fsck-connectivity-msg-i18n (2026-10-19) 1 commit
 - fsck: use Q_() for the verbose connectivity message
 (this branch is used by ag/fsck-connectivity-count.)

 The verbose "Checking connectivity" message in 'git fsck' has been
 updated to use the pluralizing translation macro, and the message
 has been corrected to report the true count of parsed objects rather
 than the internal hash table capacity.

 Looking good.
 cf. <xmqqld7t1gtw.fsf@gitster.g>
 source: [ref]


* os/rebase-doc-incompatible-options (2026-10-20) 1 commit
 - doc: git-rebase: update incompatible options

 Outdated cross-references to the "INCOMPATIBLE OPTIONS" section in
 the 'git rebase' documentation have been removed, and a missing one
 for the '--onto' option has been added.

 Expecting a reroll.
 cf. [ref]
 source: [ref]


* jc/config-honor-file-permission (2026-10-19) 1 commit
 - config: honor file permission bits

 The configuration file writing machinery has been updated to inspect
 the permission bits of the original configuration file and refrain
 from overwriting a read-only file using its lockfile renaming
 mechanism.

 Needs review.
 source: <xmqqbj8p7okv.fsf@gitster.g>


* je/doc-new-git-tutorial (2026-10-20) 3 commits
 - SQUASH???
 - doc: add new Git tutorial for beginners
 - doc: remove gittutorial

 The beginner's tutorial in 'gittutorial.adoc' has been rewritten to
 focus on a minimal set of commands needed to create a repository,
 make commits, and push to a remote host, optimizing for a quick
 one-hour learning experience.

 Expecting a reroll.
 cf. [ref]
 source: [ref]


* tb/negotiator-skipping-parse-parents (2026-10-19) 1 commit
 - negotiator/skipping.c: parse parents before queueing

 The skipping fetch negotiator has been updated to parse parent
 commits before adding them to the priority queue, ensuring they are
 sorted by their actual commit date rather than being delayed as old
 commits with a zero date.

 Waiting for response.
 cf. [ref]
 source: [ref]


* mh/init-show-abspath (2026-10-22) 1 commit
 - init: show absolute path of (re)initialized repository
 - Merge branch 'ps/odb-alternates-at-creation' into mh/init-show-abspath

 The output from 'git init' has been corrected to display the
 absolute path of the created repository, addressing a recent
 regression.

 Needs review.
 cf. [ref]
 source: [ref]


* ag/fsck-connectivity-count (2026-10-20) 1 commit
 - fsck: report the real object count in the connectivity message
 - Merge branch 'ag/fsck-connectivity-msg-i18n' into ag/fsck-connectivity-count
 (this branch uses ag/fsck-connectivity-msg-i18n.)

 The verbose "Checking connectivity" message in 'git fsck' has been
 updated to report the actual number of objects instead of the size
 of the object hash bucket array.

 Needs review.
 source: [ref]


* hn/fetch-shallow-v2-fix (2026-10-20) 1 commit
 - upload-pack: fix slow fetches from a shallow repository

 The server-side computation of shallow boundaries for a protocol v2
 fetch from a shallow repository has been optimized by directly
 sending all known shallow roots, avoiding expensive commit history
 walks and matching protocol v0 behavior.  Additionally, local commit
 history traversal for 'git fetch --unshallow' has been corrected to
 visit each commit exactly once, preventing hangs on repositories
 with long histories.

 Needs review.
 source: [ref]


* ps/odb-reload-alternates (2026-10-20) 4 commits
 - odb/source-files: only reload alternates when the file has changed
 - odb/source-files: avoid rechecking already-known alternates
 - odb/source-files: reload alternates on retry
 - odb/source-files: rename alternates-related functions
 - Merge branch 'ps/odb-files-alternates-cleanups' into ps/odb-reload-alternates
 (this branch uses ps/odb-files-alternates-cleanups.)

 The object database files backend has been updated to reload
 alternates when an object lookup fails on retry. This restores a
 lost capability to find objects moved to a newly added alternate
 during a concurrent repository rewrite, with caching to avoid
 performance regressions.

 Expecting a reroll.
 cf. [ref]
 cf. <xmqq33u0uoqp.fsf@gitster.g>
 cf. [ref]
 source: [ref]


* rk/mktree-batch-tests (2026-10-20) 1 commit
 - t1010: add basic tests for mktree --batch

 Basic tests for the batch mode of 'git mktree' have been added.

 Needs review.
 source: [ref]


* rk/t5301-use-test-path-helpers (2026-10-20) 1 commit
 - t5301: use test_path_is_file instead of test -f

 The test in 't5301' has been modernized to use the
 'test_path_is_file' helper instead of the raw 'test -f' command.

 Will merge to 'next'?
 cf. <xmqqse1zqc05.fsf@gitster.g>
 source: [ref]


* ti/branch-set-upstream-hint-fix (2026-10-21) 1 commit
 - branch: strip refs/heads/ from the --set-upstream-to hint

 The hint printed when tracking configuration fails to be written has
 been corrected to produce a valid remote-tracking branch name.
 Additionally, 'git switch' and 'git checkout' have been updated to
 complete the branch switch instead of aborting when the tracking
 configuration fails to write, matching the behavior of 'git push -u'.

 Expecting a reroll.
 cf. [ref]
 source: [ref]


* ak/cargo-pin-target-dir (2026-10-18) 1 commit
 - Makefile: pin cargo --target-dir to ./target

 The Makefile has been updated to explicitly pass '--target-dir
 target' to 'cargo' when building the 'gitcore' library, fixing a
 link error that occurs when the user has a custom target directory
 configured via 'CARGO_TARGET_DIR' or their Cargo configuration.

 Will merge to 'next'?
 cf. [ref]
 cf. <xmqq1p9kt6nz.fsf@gitster.g>
 source: [ref]


* cc/pack-index-v3 (2026-10-20) 13 commits
 - doc: move pack index v3 documentation
 - packfile: allow looking up compat object IDs in packs
 - loose: map object IDs using pack index v3
 - packfile: validate pack index v3 tables
 - packfile: add support for reading pack index v3
 - object-file: handle compatibility algorithm
 - builtin: populate pack index v3 fields when indexing
 - pack-write: add support for pack index v3
 - object-file-convert: implement mapping in terms of object DB
 - odb: implement interoperability functions
 - loose: add a flag to control whether we write mapped OIDs
 - loose: rename repo_add_loose_object_map
 - loose: allow looking up in object map with source

 The third part of the SHA-1/SHA-256 interoperability work has been
 added, implementing support for reading and writing pack index v3.
 This allows packed objects to be mapped between hash algorithms by
 storing object IDs in both the main and compatibility hash
 algorithms.

 Waiting for response.
 cf. <xmqqzew6naiw.fsf@gitster.g>
 source: [ref]


* cr/doc-gpg-ssh-key-lifetime (2026-10-21) 1 commit
 - doc: gpg: say which date SSH key lifetimes are checked against

 The documentation for SSH and GPG signature verification has been
 updated to clarify that key lifetime checks depend on dates that
 can be arbitrarily spoofed by the signer, making them ineffective
 for protecting against a compromised key backdating signatures.

 Waiting for response.
 cf. [ref]
 source: [ref]


* ep/status-missing-upstream (2026-10-21) 1 commit
 - status: reword message for a missing upstream branch

 The message given by 'git status' and 'git checkout' when the
 upstream branch does not exist has been reworded to explicitly say
 so, and to suggest running 'git push' if pushing would create it,
 instead of claiming that the upstream is gone.

 Needs review.
 cf. <xmqqzew91i5g.fsf@gitster.g>
 source: [ref]


* hn/imap-send-header-fix (2026-10-21) 4 commits
 - imap-send: match header names case insensitively
 - imap-send: check git send-email copies like other messages
 - imap-send: accept messages with Subject before Date
 - imap-send: wait for the tunnel command to finish

 The 'git imap-send' command has been updated to accept message
 headers in any order and to match header names case-insensitively,
 allowing it to properly process messages saved by 'git send-email'.
 A memory leak in the IMAP tunnel initialization has also been
 plugged.

 Needs review.
 source: [ref]


* hn/status-compare-branches-default (2026-10-21) 1 commit
 - status: compare against both upstream and push branch by default

 The default behavior of 'git status' has been updated to compare
 the current branch against both its upstream and push tracking
 counterparts.  This makes it easier for users with triangular
 workflows to see all relevant comparisons without needing to
 configure 'status.compareBranches'.

 Needs review.
 source: [ref]


* jg/t3429-test-path-is-file (2026-10-21) 1 commit
 - t3429: use test_path_is_file helper

 A test script has been modernized to use 'test_path_is_file'
 instead of 'test -e' to verify the existence of a file.

 Waiting for response.
 cf. [ref]
 source: [ref]


* cu/t2104-avoid-pipes (2026-10-20) 1 commit
 - t2104: avoid suppressing git's exit code

 Will merge to 'next'?
 cf. [ref]
 source: [ref]


* jc/myfirstcontribution-discuss-then-reroll (2026-10-20) 2 commits
 - MyFirstContribution: clarify that "reviewing" is a discussion
 - MyFirstContribution: move "how to send v2" after discussing reviews

 The documentation on contributing has been updated to emphasize the
 importance of discussing review feedback before sending the next
 iteration, and the section on sending an updated version has been
 moved to appear after the discussion of the review process.

 Expecting a reroll.
 cf. <xmqqecdjqb10.fsf@gitster.g>
 source: [ref]


* ps/odb-object-storage-extension (2026-10-20) 7 commits
 - builtin/submodule: propagate "--object-storage-format="
 - builtin/clone: introduce "--object-storage-format="
 - builtin/init: introduce handling of object storage format
 - builtin: expose the object storage format
 - setup: allow overriding object storage format via environment
 - setup: introduce object storage extension
 - loose: drop unused `repo_write_loose_object_map()`
 - Merge branch 'ps/setup-enforce-repo-passed-to-create-repository-has-no-state' into ps/odb-object-storage-extension
 - Merge branch 'ps/odb-files-alternates' into ps/odb-object-storage-extension
 (this branch uses ps/setup-enforce-repo-passed-to-create-repository-has-no-state.)

 The object storage format has been made configurable via the
 'extensions.objectStorage' configuration variable, allowing users
 to specify the storage backend and an optional payload, mirroring
 the design of 'extensions.refStorage'.

 Waiting for response.
 cf. [ref]
 source: [ref]


* tj/checkout-orphan-more-plural (2026-10-21) 1 commit
 - checkout: use Q_() for messages with counts

 The message 'git checkout' prints to describe orphaned commits has
 been updated to use the Q_() macro, allowing translators to use the
 correct plural forms for numbers greater than one.

 Needs review.
 source: [ref]


* cr/ssh-revocation-file-fail-closed (2026-10-21) 1 commit
 - gpg-interface: fail when the ssh revocation file is missing

 Waiting for response.
 cf. [ref]
 cf. <xmqq1p9hiszk.fsf@gitster.g>
 cf. <xmqqh5idiv9k.fsf@gitster.g>
 source: [ref]


* hn/branch-delete-merged-squash (2026-10-21) 3 commits
 - branch: add --squashed to find squash merged branches
 - branch: let --delete-merged find rebase merged branches
 - branch: move the deleteMerged opt-out check into a helper

 Expecting a reroll.
 cf. [ref]
 source: [ref]


* ti/checkout-track-failure (2026-10-21) 2 commits
 - checkout: finish switching when the tracking config cannot be written
 - branch: return an error from setup_tracking()

 Needs review.
 source: [ref]

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

* jt/odb-keep-lockfile-fix (2026-10-21) 4 commits
 - object-file: write ".keep" lockfiles during transaction commit
 - object-file: explicitly write ".keep" lockfile
 - pack-write: lift and expose index-pack report parsing
 - pack-write: make index-pack output comment hash agnostic

 The creation of '.keep' lockfiles during object database
 transactions has been deferred to commit time, explicitly managing
 the lockfiles within the files backend rather than relying on
 'git-index-pack', to prevent race conditions that could lead to
 concurrent lockfiles being erroneously deleted.

 Looking good.
 cf. [ref]
 source: [ref]


* oa/merge-blobs-stop-using-the-repository (2026-10-17) 1 commit
 - merge-blobs: stop using the_repository

 The merge-blobs subsystem has been updated to remove its reliance on
 the global the_repository variable by threading the repository
 context available from the index_state down to its helper functions.

 Needs review.
 cf. [ref]
 source: [ref]


* ss/t2403-modernize-test-d (2026-10-15) 1 commit
 - t2403: modernize test for directory existence

 The test for worktree removal in 't/t2403-worktree-move.sh' has been
 modernized to use the 'test_path_is_dir' helper instead of the raw
 'test -d' shell command.

 Needs review.
 cf. [ref]
 source: [ref]


* tb/sideband-skip-unrecognized-allow-control-characters (2026-10-16) 1 commit
 - sideband: skip unrecognized allowControlCharacters keywords

 The configuration parser for 'sideband.allowControlCharacters' has
 been updated to correctly advance past unrecognized values,
 preventing an infinite loop when an unknown control character
 keyword is encountered.

 Needs review.
 cf. <xmqq8q3xh98n.fsf@gitster.g>
 source: [ref]


* ak/refs-files-root-refs-cache (2026-10-19) 1 commit
 - refs/files: keep root refs out of loose ref cache

 The loose refs cache in the files backend has been updated to avoid
 caching root refs (like 'HEAD'), preventing them from being omitted
 from subsequent iterators that explicitly request them when a
 previous iterator populated the cache without them.

 Will merge to 'next'?
 cf. [ref]
 source: [ref]


* jc/ci-update-macos-15 (2026-10-20) 1 commit
 - github-ci: update macos jobs from macos-14

 The macOS CI jobs have been updated to use a mixture of 'macos-15' and
 'macos-latest' images, as the 'macos-14' hosted runner image is being
 deprecated by GitHub.

 Will merge to 'next'?
 cf. [ref]
 source: <xmqqa4o7sp0j.fsf@gitster.g>


* ak/pretty-wrap-fix (2026-10-17) 1 commit
 - pretty: fix lost indent after newline in %w()

 The string-wrapping logic used by the '%w()' formatting directive
 has been corrected to stop skipping a whitespace character that
 immediately follows a hard line break.

 Needs review.
 source: [ref]


* ak/sequencer-head-refdup (2026-10-14) 1 commit
  (merged to 'next' on 2026-10-19 at 2ff8066fce)
 + sequencer: don't clobber HEAD ref name in worktree lookup

 The branch decoration logic in the sequencer has been updated to use
 an allocated buffer for the HEAD reference name, preventing it from
 being clobbered when evaluating branches checked out in other
 worktrees.

 Will merge to 'master'.
 cf. <xmqqik34qd6s.fsf@gitster.g>
 cf. [ref]
 source: [ref]


* js/coverity-overflow-fixes (2026-10-13) 5 commits
 - date: avoid overflow in approxidate relative-time multiplication
 - git-compat-util: add `signed_mult_overflows` and `mult_overflows` macros
 - wrapper: reject insanely large byte counts when reading/writing
 - http: use `size_t` for byte position in fwrite_sha1_file
 - archive-tar: guard get_path_prefix against zero-length input

 Various integer overflow and bounds-checking issues reported by
 Coverity have been fixed, including adding robust compile-time
 macros for overflow detection in integer multiplication and using
 them to protect time offset calculations.

 Waiting for response.
 cf. [ref]
 cf. [ref]
 cf. [ref]
 source: [ref]


* ps/pack-check-bigfile-threshold (2026-10-14) 1 commit
  (merged to 'next' on 2026-10-19 at d477f68a6d)
 + pack-check: fix bogus corruption report with core.bigFileThreshold

 A boundary check in 'git fsck' against the big file threshold has
 been corrected to prevent bogus corruption reports on packed objects
 whose sizes exactly match the threshold.

 Will merge to 'master'.
 cf. <xmqq8q40tczj.fsf@gitster.g>
 source: [ref]


* dt/t0410-missing-tree-test (2026-10-20) 2 commits
 - t0410: keep git's exit code in test_grep calls
 - t0410: use rev-parse to get the subtree OID

 The missing-tree test in 't0410' has been cleaned up to avoid
 dropped exit codes and hardcoded assumptions about the length of
 object names.

 Needs review.
 source: [ref]


* iw/connected-deepen-fetch-no-alternate-refs (2026-10-19) 2 commits
 - odb: ignore refs of shallow and grafted alternates
 - connected: negate alternate refs in deepening fetches too

 The post-fetch connectivity check in 'git fetch' has been corrected
 to avoid passing alternate refs as positive revisions during a
 deepening fetch, plugging a severe performance bug.

 Expecting a reroll.
 cf. [ref]
 source: [ref]


* yn/worktree-repair-fix (2026-10-17) 5 commits
 - worktree repair: avoid breaking unrelated .git file and gitdir
 - worktree repair: reduce .git file reads
 - worktree repair: use read_gitfile_raw() in infer_backlink()
 - worktree repair: centralize inferred backlink selection
 - worktree repair: align .git file handling with repair_gitfile()

 The 'git worktree repair' command learned to thoroughly validate the
 worktree ID and the inferred gitdir pathway, preventing it from
 corrupting unrelated '.git' files and gitdirs when repositories and
 their linked worktrees are moved or swapped.

 Needs review.
 source: [ref]


* mb/fast-import-reference-pending (2026-10-14) 1 commit
  (merged to 'next' on 2026-10-19 at 7dfc4734f0)
 + fast-import: allow 'from' to reference new commits and tags by oid

 The 'from' command in 'git fast-import' has been updated to
 correctly resolve references to newly created commits and tags by
 checking the internal object table, preventing a crash when the
 objects are not yet available in the object database.

 Will merge to 'master'.
 cf. <xmqqqzhrq4ye.fsf@gitster.g>
 source: [ref]


* mc/repo-structure-filtering (2026-10-15) 1 commit
 . repo: add filtering options to "repo structure"

 The 'git repo structure' command has been taught to accept standard
 revision arguments to filter the set of objects being counted.

 Waiting for response.
 cf. [ref]
 cf. <xmqq33u5c6z6.fsf@gitster.g>
 source: [ref]


* mv/log-follow-speedup (2026-10-18) 1 commit
 - log: speed up --follow following renames for non-linear history

 An optimization for the rename detection logic in 'git log
 --follow' across non-linear history attempts to skip expensive tree
 diffs when a tracked path remains identical in at least one parent,
 though this shortcut drops history on branches where the file was
 renamed.

 Needs review.
 source: [ref]


* oa/merge-without-the-repository (2026-10-15) 1 commit
 - merge: stop using the_repository

 The 'merge.c' code has been updated to eliminate its reliance on the
 global 'the_repository' and 'the_hash_algo' variables by passing down
 the repository context already available to its entry points.

 Needs review.
 cf. [ref]
 source: [ref]


* ps/gitlab-ci-whitespace-job-shallow-clone-fix (2026-10-16) 1 commit
 - gitlab-ci: fix "check" jobs with large merge requests

 The GitLab CI configuration has been updated to disable shallow clones
 for the 'check-whitespace' and 'check-style' jobs by setting
 'GIT_DEPTH' to 0, preventing them from failing on large merge requests
 that exceed the default shallow clone depth.

 Needs review.
 cf. [ref]
 source: [ref]


* sw/cache-tree-ignore-locked-index (2026-10-16) 1 commit
  (merged to 'next' on 2026-10-21 at 454f8302e1)
 + cache-tree: do not die when the index is locked

 The internal write_index_as_tree() function has been updated to
 take the index lock gently. This allows it to skip the optional
 cache-tree write-back when the lock is held by another process,
 preventing commands like 'git rebase' from dying due to background
 tasks holding the lock.

 Will merge to 'master'.
 cf. [ref]
 source: [ref]


* vs/refs-seek-fix (2026-10-15) 1 commit
 - refs: fix loose-ref seeking across directory boundaries

 The logic to seek through loose references across directory
 boundaries has been corrected by including the trailing slash when
 comparing directory components, and by properly adjusting the
 iterator position when leaf entries sort either strictly before or
 after the seek point.

 Waiting for review.
 cf. [ref]
 source: [ref]


* ab/describe-no-i18n-of-debug-messages (2026-10-16) 1 commit
 - describe: do not translate --debug output

 The debug output of 'git describe' has been updated not to
 localize the output to make it more helpful for developers.

 Needs review.
 source: [ref]


* je/doc-detached-head (2026-10-16) 2 commits
 - SQUASH???
 - doc: checkout: rewrite detached HEAD state explanation

 The description of the detached HEAD state in 'git help checkout'  has
 been updated and moved to a standalone guide to make it easier  for
 users to understand and reference.

 Waiting for response.
 cf. <xmqqse25cni7.fsf@gitster.g>
 source: [ref]


* js/doc-test-fix-anti-pattern (2026-10-11) 1 commit
 - SubmittingPatches: avoid add-failing-test-then-fix anti-pattern

 The 'SubmittingPatches' document has been updated to discourage the
 anti-pattern of adding a failing test in one commit and fixing it in
 a subsequent one, advising contributors to combine the test and fix
 into a single commit for easier review

 Needs review.
 source: [ref]


* js/push-refspec-match-speedup (2026-10-13) 12 commits
 - remote: use strmap for apply_push_cas()
 - remote: restructure apply_push_cas() loops
 - t/perf: measure --force-with-lease in p5516
 - remote: use strmap for match_explicit_refs()
 - remote: reject duplicate destinations on an empty remote
 - t5408: check refspec order with distinct destinations
 - t5408, t5410: test duplicate updates without relying on the client
 - send-pack: plug leak upon match_push_refs failure
 - remote: use strmap for check_push_refs()
 - refs: stop using mkpath() in refname_match()
 - t/perf: add explicit delete refspec matching test
 - remote: validate --force-with-lease <refname> argument

 The client-side refspec matching during 'git push' has been
 optimized by replacing linear traversals with string map lookups,
 speeding up pushes with lots of delete refspecs against a server
 with many advertised refs.

 Needs review.
 source: [ref]


* rs/archive-zip-omit-out-of-range-mtime (2026-10-19) 1 commit
 - archive-zip: omit UT extra field if mtime is out of range

 The ZIP archive creation code has been updated to omit the 'UT'
 extended timestamp extra field when the commit time exceeds the
 32-bit positive signed integer limit, avoiding integer wraparound
 for dates past the year 2038.

 Will merge to 'next'.
 cf. [off-list ref]
 source: [off-list ref]


* dk/stash-completion-updates (2026-10-12) 5 commits
 - completion: drop "stash save" completion altogether
 - doc: drop usage mentions of "git stash save"
 - completion: fix Zsh handling of stash names
 - completion: extract common stash listing code
 - completion: simplify stash subcommand completion

 The command-line completion for 'git stash' has been updated to
 dynamically discover subcommands and to correct a Zsh-specific
 formatting issue where stash references were improperly unquoted.
 Additionally, the deprecated 'save' subcommand has been removed from
 completions and synopsis documentation.

 Expecting a reroll.
 cf. [off-list ref]
 cf. [off-list ref]
 source: [off-list ref]


* ic/includeif-hostname (2026-10-15) 3 commits
  (merged to 'next' on 2026-10-19 at dc388c8226)
 + config: learn the "hostname:" includeIf condition
 + t6500: get hostname from "git var"
 + var: add GIT_HOSTNAME

 The conditional configuration inclusion mechanism via 'includeIf'
 has been extended to support matching the machine's hostname, and
 the system's hostname as seen by Git can now be queried using 'git
 var GIT_HOSTNAME'.

 Will merge to 'master'.
 cf. <xmqqjynin4iv.fsf@gitster.g>
 cf. <xmqqa4oi67tx.fsf@gitster.g>
 source: [off-list ref]


* kk/connectivity-check-incremental (2026-10-21) 6 commits
 - connected: add "auto" connectivity check mode
 - connected: add incremental connectivity check via rev-list
 - connected: add transfer.connectivityCheck config
 - connected: drop dependency on `the_repository`
 - p5413: add perf tests for connectivity check
 - Documentation: describe connectivity checking

 The connectivity check in 'git fetch' and 'git receive-pack' has
 been optimized with an alternative incremental mode, available via
 'transfer.connectivityCheck=incremental'.  Instead of walking the
 full object closure of the boundary commits, it compares the trees
 of incoming commits against their trusted parent trees, skipping
 unchanged subtrees.

 Expecting a reroll.
 cf. [off-list ref]
 source: [off-list ref]


* kn/fetch-tag-backfill-batch-fix (2026-10-15) 1 commit
 - fetch: commit references fetched before backfilling tags

 When 'git fetch' uses batched reference updates, references are not
 committed before backfilling tags, causing shallow fetches to report
 no local references during negotiation and receive all objects from
 the server again.  The batched update is now committed before tag
 backfilling begins.

 Expecting a reroll.
 cf. [off-list ref]
 source: [off-list ref]


* bb/imap-send-openssl-set-verify (2026-10-17) 3 commits
 - imap-send: prepare for OpenSSL 4.0
 - imap-send: let OpenSSL do the hostname verification
 - imap-send: use the recommended TLS_method()

 imap-send used to use hand coded peer hostname verification,
 which has been replaced with the native API OpenSSL offered since
 version 1.1.0.

 Waiting for response.
 cf. [off-list ref]
 cf. [off-list ref]
 cf. [off-list ref]
 cf. [off-list ref]
 source: [off-list ref]


* ps/odb-files-alternates-cleanups (2026-10-14) 6 commits
  (merged to 'next' on 2026-10-19 at 242a7794ab)
 + odb/source: drop `local` flag
 + odb: don't try re-fetching corrupt objects
 + odb: remove read loop for found objects
 + odb/source-files: make the second read an implementation detail
 + odb/source-files: fix performance when streaming objects with alternates
 + odb/source-files: fix performance when reading objects with alternates
 + Merge branch 'ps/odb-files-alternates' into ps/odb-files-alternates-cleanups
 (this branch is used by ps/odb-reload-alternates.)

 The object database "files" backend has been optimized to check
 packfiles across all alternate object directories before falling
 back to checking loose objects, significantly reducing the number of
 'stat(3p)' system calls.  Additional refactoring drops the generic
 'local' flag from the object database source interface in favor of
 backend-specific fields, and simplifies the retry loop for missing
 objects.

 Will merge to 'master'.
 cf. <atEMt5wgfblCiv5a@denethor>
 cf. <xmqqfqy5is5o.fsf@gitster.g>
 source: [off-list ref]


* cs/read-cache-conversion-size (2026-10-13) 1 commit
 - read-cache: do not trust a size change when conversion is active

 The index refresh logic has been updated to no longer trust a file
 size change as conclusive proof of modification when the path is
 subject to conversion, preventing false dirty statuses for files
 with only line-ending changes.

 Waiting for response.
 cf. <xmqq1p9twdhh.fsf@gitster.g>
 cf. <20261020205644.GB6367@tb-raspi4>
 source: [off-list ref]


* jw/wait-for-index-lock (2026-10-17) 4 commits
 - reset: fix write race
 - commit: fix write race
 - repository: add core.indexLockTimeout
 - repository: add repo_try_hold_locked_index()

 A new configuration variable 'core.indexLockTimeout' has been
 introduced to allow commands to retry when the index file is locked
 by another process, and 'git commit' has been updated to take
 advantage of this feature.

 Needs review.
 source: [off-list ref]


* mf/complete-log-graph-indent (2026-10-13) 1 commit
 - bash-completions: add --[no-]graph-indent

 The command line completion script (in contrib/) has been taught to
 complete the '--[no-]graph-indent' option of 'git log'.

 Needs review.
 source: [off-list ref]


* ps/ci-housekeeping-and-modernizations (2026-10-14) 8 commits
  (merged to 'next' on 2026-10-19 at c0cf13277b)
 + ci: improve reftable test coverage
 + ci: drop now-dead Python 2 coverage
 + ci: switch away from EOL'd Ubuntu version in linux-feature-testbed
 + ci: rename linux-TEST-vars job
 + ci: switch away from unsupported i386/ubuntu image
 + ci: drop unused "linux-clang" logic
 + ci: fix "fedora-breaking-changes-meson" job
 + t5004: fix test creating an archive with large objects under SHA256

 Various CI jobs have been updated to use modern OS images, drop dead
 code, and remove redundant jobs. Support for Python 2 in CI has been
 removed, and the linux-TEST-vars job has been renamed to
 linux-feature-testbed.

 Will merge to 'master'.
 cf. [off-list ref]
 source: [off-list ref]


* qs/repack-kept-pack-fix (2026-10-08) 5 commits
 - repack: tell pack-objects which packs are kept
 - pack-objects: add --keep-pack-from-file
 - pack-objects: sort --keep-pack list for lookup
 - pack-objects: reset kept-pack cache for cruft walk
 - pack-objects: keep --keep-pack open when following

 The behavior of repack and pack-objects has been updated to avoid
 losing objects to a '.keep' file that appears mid-run.  Instead of
 pack-objects looking for '.keep' files independently, repack now
 hands it a snapshot of kept packs via a new --keep-pack-from-file
 option.

 Expecting a reroll.
 cf. [off-list ref]
 source: [off-list ref]


* ss/repack-drop-filtered-dry-run (2026-10-16) 1 commit
  (merged to 'next' on 2026-10-21 at f79ccf53bc)
 + repack: do not rebuild packs on --dry-run

 The '--dry-run' option of 'git repack --drop-filtered' used to
 actually rebuild packs and delete redundant ones, which has been
 corrected to only list the candidates without making changes.

 Will merge to 'master'.
 cf. <xmqqse25e5ja.fsf@gitster.g>
 cf. [off-list ref]
 source: [off-list ref]


* rm/blame-default-ignore-revs (2026-10-13) 2 commits
  (merged to 'next' on 2026-10-17 at 31af0a1889)
 + blame: ignore revs in .git-blame-ignore-revs by default
 + blame: harden ignore-revs parser and tag peeling

 'git blame' and 'git annotate' have been updated to automatically
 use the '.git-blame-ignore-revs' file from the working tree (or
 'HEAD:.git-blame-ignore-revs' in bare repositories) as the default
 ignore list if it exists, and the parser has been hardened.

 Will merge to 'master'.
 cf. <xmqqse29uyh3.fsf@gitster.g>
 source: [off-list ref]


* jk/test-lazy-prereq-heredoc (2026-10-05) 1 commit
  (merged to 'next' on 2026-10-21 at 464c813cc7)
 + test-lib: allow lazy prerequisite snippets as here-docs
 + Merge branch 'jk/t5551-test-shell-quote-fix' into jk/test-lazy-prereq-heredoc

 The lazy prerequisite set-up script can be fed as a here-doc, just
 like test_expect_{success,failure} scripts these days.

 Will merge to 'master'.
 cf. <xmqqik3fhv81.fsf@gitster.g>
 source: [off-list ref]


* hn/status-push-rebased-on-newer-upstream (2026-10-06) 6 commits
 - push: suggest a force push after a clean rebase
 - push: offer a force push after rewriting pushed commits
 - push: name the branch to pull from when it is not the upstream
 - status: suggest a force push after a clean rebase
 - status: say when the push branch was rebased cleanly
 - status: count push divergence outside the upstream

 The 'git status' output and 'git push' rejection advice have been
 improved to recognize when a pushed branch was cleanly rebased onto
 a newer upstream, and now correctly suggest force-pushing instead of
 pulling.

 Needs review.
 source: [off-list ref]


* je/doc-promote-git-help (2026-10-16) 1 commit
  (merged to 'next' on 2026-10-19 at 67e49ef79c)
 + doc: use `man git` to teach users how to navigate the docs

 The earliest part of 'man git' has been rewritten to explain various
 ways to use 'git help' to get help.

 Will merge to 'master'.
 source: [off-list ref]


* ik/fsmonitor-untracked-cache-trivial-response (2026-10-04) 1 commit
 - fsmonitor: check the untracked cache after a trivial response

 The index writer has been taught to check the untracked cache
 against the filesystem when an FSMonitor trivial response is
 received, preventing commands like 'git add' from saving a new token
 while leaving stale untracked cache entries intact.

 Needs review.
 source: [off-list ref]


* ps/repo-ref-storage-format-fix (2026-10-05) 1 commit
 - builtin/repo: rename "references.format" to "references.storageFormat"

 The output of 'git repo info' has been updated to use
 'references.storageFormat' instead of 'references.format' for
 consistency with recent ref-storage-format terminology updates.

 Needs review.
 cf. [off-list ref]
 source: [off-list ref]


* pw/stash-change-check-only-once (2026-10-20) 7 commits
 - stash: simplify reset_tree() function signature
 - stash create: remove unnecessary index load and refresh
 - stash create: rework temporary index creation
 - stash push: avoid duplicate calls to preload_index()
 - stash push: remove duplicate changes detection
 - stash create: remove duplicate changes detection
 - stash: use an enum for create status

 "git stash create/push" checked if there are checks that need to be
 saved twice, which has been reduced to just once.

 Expecting a reroll.
 cf. <xmqqo6cnsyqj.fsf@gitster.g>
 cf. [off-list ref]
 source: [off-list ref]


* dm/libsecret-explicit-load (2026-09-27) 1 commit
 - credential/libsecret: load secrets explicitly

 The 'libsecret' credential helper has been updated to explicitly
 load secrets instead of relying on the search flag, preventing
 assertion failures when items are concurrently deleted or locked.

 Needs review.
 source: [off-list ref]


* pm/replay-add-signing-support (2026-09-25) 2 commits
 . replay: add the -S option
 . replay: handle failure to create commits

 The experimental 'git replay' command has been taught to GPG-sign
 commits, fixing an existing limitation and plugging a bug where
 intermediate commit creation failures were silently ignored.

 Waiting for response.
 cf. <xmqqse2nvltp.fsf@gitster.g>
 cf. [off-list ref]
 cf. [off-list ref]
 source: [off-list ref]


* tb/repack-cruft-less-midx-corner-cases (2026-09-30) 8 commits
 - repack: include required packs in incremental MIDX writes
 - repack: defer allocating the append plan's write step
 - repack: track the preferred pack explicitly in MIDX write steps
 - repack: follow kept packs when omitting cruft from the MIDX
 - repack: use a sorted list for explicitly kept packs
 - repack: retain cruft packs in MIDXs after incremental repacks
 - pack-objects: ensure tree/tag closure with '--stdin-packs=follow'
 - pack-objects: introduce `stdin_packs_context` struct

 Various corner cases in the cruft-less MIDX feature have been fixed
 to ensure reachability closure when writing reachability bitmaps,
 such as properly retaining cruft packs after incremental repacks or
 when containing kept packs.

 Waiting for review.
 cf. <asBRayrg2RvzjevI@com-79390>
 cf. <asBUBwM2N8lQM602@com-79390>
 source: [off-list ref]


* hn/fetch-refmap (2026-10-20) 5 commits
 - remote: default to --limited-fetch in a shallow repository
 - remote: add "git remote add --limited-fetch"
 - fetch: infer branches to fetch from a refmap-only remote
 - fetch: extract collect_upstream_from_remote() helper
 - fetch: add remote.<name>.refmap

 In a shallow repository, adding a new remote and fetching from it
 used to eagerly fetch all remote branches.  The default refspec
 configured for remotes added in shallow repositories has been
 changed to rely on `remote.<name>.refmap` rather than
 `remote.<name>.fetch`, pulling only those remote branches tracked
 by local branches.

 Needs review.
 source: [off-list ref]


* am/p4-apply-commit-shell-injection-fix (2026-09-24) 1 commit
 - git-p4: avoid shell interpretation of commit ids in applyCommit

 The `applyCommit()` function inside 'git-p4.py' has been updated to
 use direct subprocess pipes in order to avoid shell interpolation,
 plugging a potential shell injection vulnerability when processing
 commit IDs.

 Needs review.
 source: [off-list ref]


* mc/refs-rename-transaction (2026-10-08) 4 commits
 . refs: remove backend-specific copy and rename callbacks
 . refs: run copy and rename through ordinary transactions
 . refs: support replacing reflogs in a transaction
 . refs: distinguish internal transactions from logical updates

 Both reference rename and copy operations have been refactored to use
 the generic reference transaction API, ensuring that hooks observe the
 updates as unified logical operations rather than piece-meal internal
 deletions and additions.

 Waiting for response.  Breaks 'seen' when merged.
 cf. [off-list ref]
 cf. [off-list ref]
 cf. [off-list ref]
 source: [off-list ref]


* hn/shallow-history-advice (2026-09-23) 1 commit
 - object-name: explain why <rev>~N fails in a shallow clone

 Providing advice when ~<n> or ^<n> resolves to a commit whose
 parents are missing due to the repository being a shallow clone,
 instead of an unhelpful 'not a commit' error.

 Needs review.
 source: [off-list ref]


* mc/refs-hook-report-old-values (2026-09-24) 1 commit
 - refs: report old values to transaction hooks

 The 'reference-transaction' hook has been updated to report the
 observed old object IDs and symref targets for unconditional ref
 updates and deletions, instead of reporting the null object ID.

 Needs review.
 source: [off-list ref]


* td/ls-files-untracked-cache (2026-09-23) 3 commits
 - ls-files: use and update the untracked cache
 - dir: share untracked caches across output modes
 - dir: hash ignore files before appending newline

 The git ls-files command has been optimized to reuse and populate
 the untracked cache for the working tree, and untracked cache
 implementations have been updated to share identical caches across
 -unormal and -uall outputs, avoiding redundant filesystem
 traversals.

 Needs review.
 source: [off-list ref]


* je/doc-merge-conflicts (2026-10-12) 7 commits
 - SQUASH???
 - doc: git-pull: link to new merge conflicts guide
 - doc: git-cherry-pick: link to new merge conflicts guide
 - doc: git-revert: link to new merge conflicts guide
 - doc: git-rebase: link to new merge conflicts guide
 - doc: git-merge: link to new merge conflicts guide
 - doc: add new gitmergeconflicts man page

 A new user manual page on how to resolve merge conflicts has been
 introduced, and other commands that could encounter conflicts have
 been updated to link to it.

 Expecting a reroll.
 cf. [off-list ref]
 source: [off-list ref]


* ps/setup-enforce-repo-passed-to-create-repository-has-no-state (2026-09-28) 7 commits
  (merged to 'next' on 2026-10-17 at 68944adf51)
 + setup: enforce that passed-in repo does not carry relevant state
 + repository: adapt `repo_clear()` to fully reset the repository
 + builtin/clone: don't apply "core.sharedRepository" to leading dirs
 + builtin/init: move handling of "core.sharedRepository" into "setup.c"
 + builtin/init: refactor messy creation of leading directories
 + path: introduce `safe_create_leading_directories_no_share_const()`
 + path: drop useless `safe_create_leading_directories_1()`
 + Merge branch 'ps/odb-alternates-at-creation' into ps/setup-enforce-repo-passed-to-create-repository-has-no-state
 (this branch is used by ps/odb-object-storage-extension.)

 The repository initialization sequence has been refactored to treat
 the repository object passed to create_repository() purely as an
 out-parameter.

 Will merge to 'master'.
 source: [off-list ref]


* jc/advice-config-set-global (2026-09-14) 1 commit
 - advice: give cut-and-pasteable advice to squelch

 The advice subsystem has been updated to suggest using the
 '--global' option when recommending a command snippet to squelch
 future advice messages, since global configuration is generally
 more appropriate for user-level preferences than per-repository
 settings.

 Needs review.
 source: <xmqq33vb4hma.fsf@gitster.g>


* hn/range-diff-matched-only (2026-09-15) 1 commit
 - range-diff: add --matched-only to skip one-sided commits

 The 'git range-diff' command has been augmented with a
 '--matched-only' option to skip commits that are only present on
 one side, allowing users to easily focus on only the commits that
 have been retained.

 Needs review.
 source: [off-list ref]


* tb/rerere-wait-for-merge-rr-lock (2026-10-13) 2 commits
  (merged to 'next' on 2026-10-21 at 2479322e68)
 + rerere: add "gc --skip-locked" for auto maintenance
 + rerere: wait for MERGE_RR.lock before giving up

 Instead of failing to record conflicts to be resolved immediately,
 wait while "rerere gc" is ongoing.

 Will merge to 'master'.
 cf. [off-list ref]
 cf. <xmqqy0c1zi6j.fsf@gitster.g>
 cf. [off-list ref]
 source: [off-list ref]


* pp/midx-write-skip-empty (2026-09-08) 1 commit
 - midx-write: skip writes with no object entries

 The `git multi-pack-index write` command has been updated to
 silently return success when there are no object entries to index.
 This avoids writing empty `multi-pack-index` layers, which
 previously caused subsequent incremental midx writes using the
 `--bitmap` option to fail when attempting to load the missing
 reverse index.

 Waiting for review.
 cf. <aqAkfGZtLJ97nG1m@com-79390>
 cf. [off-list ref]
 source: [off-list ref]


* mh/rust-crate-subdir (2026-09-16) 1 commit
 - move rust gitcore crate to a different subdirectory

 The Rust code and its 'Cargo.toml' file have been moved from the
 top-level repository root and 'src/' directory into a dedicated
 'rust/' subdirectory.  This avoids confusing Cargo's packaging
 mechanism when the Git repository is included as a submodule in
 other Rust projects.

 Waiting for review.
 cf. <yc4bgjoyxnm6o7q4gwols4d6zvdrq3ydw2c65wjdwof3hjyde6@2osv37jtuxx3>
 source: [off-list ref]


* tc/push-force-if-includes-fixes (2026-10-18) 3 commits
 - push: --force-if-includes should allow fast-forward
 - push: fix --force-if-includes non-branch advice
 - push: check pushed ref for --force-if-includes

 The '--force-if-includes' protection for 'git push' has been updated
 to consult the reflog of the local branch being pushed, rather than
 incorrectly checking the reflog of a local branch that shares the name
 of the remote destination branch.  The push advice for detached HEAD
 scenarios has also been adjusted to indicate that the remote ref
 cannot be verified locally.  A regression that caused perfectly valid
 fast-forward pushes to be rejected when reflogs were expired has been
 fixed.

 Needs review.
 source: [off-list ref]


* cc/early-scan-options (2026-10-12) 4 commits
 - fast-import: use early_scan_options() for --allow-unsafe-features
 - parse-options: add early_scan_options()
 - parse-options: extract lookup_long_opt() from parse_long_opt()
 - parse-options: add parse_options_takes_argument()

 The process of parsing command-line options in commands that
 perform an early scan over their arguments (such as 'git bisect',
 'git rev-parse', and 'git fast-import') has been unified using a
 new early-scan sub-API, which parses and skips known options taking
 separate values to prevent logic bugs.

 Needs review.
 source: [off-list ref]


* ec/commit-fixup-options (2026-09-22) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Waiting for response.
 cf. [off-list ref]
 cf. [off-list ref]
 source: [off-list ref]


* ll/doc-pushcert-if-asked (2026-08-29) 1 commit
 - doc: remote-helpers: option pushcert if-asked

 The remote helper documentation for the 'pushcert' option has been
 updated to mention that it can also take 'if-asked', reflecting the
 existing implementation in the code.

 Needs review.
 source: [off-list ref]


* ws/squelch-svn-migrate (2026-08-27) 2 commits
 - Makefile: add NO_GIT_SVN knob to skip building/installing git-svn
 - git-svn: don't print v1-layout migration noise when there's nothing to migrate

 Needs review.
 source: [off-list ref]


* dw/config-read-both-global (2026-10-09) 2 commits
 - config: read global scope via config_sequence
 - t1300: test list with missing global config

 The 'git config --global' read operations have been updated to
 respect both '$HOME/.gitconfig' and '$XDG_CONFIG_HOME/git/config',
 fixing an inconsistency where only the former was read when both
 configuration files are present.

 Needs review.
 source: [off-list ref]


* vv/branch-recurse-no-start-ref (2026-08-21) 2 commits
 - branch: allow recursion with no tracking name
 - branch: do not track a start point with no ref

 The --recurse-submodules option in 'git branch' has been fixed to
 avoid a crash when the start point is not a reference (e.g., a raw
 object ID).  The creation path now skips setting up tracking and
 properly forwards the absent tracking name to the submodule helper.

 Needs review.
 source: [off-list ref]


* ap/http-preserve-wwwauth-redirect (2026-08-19) 1 commit
 - http: preserve wwwauth_headers across redirects

 When an HTTP request triggers a redirect and the target yields an
 authentication challenge, the WWW-Authenticate headers received
 during the redirect are now explicitly preserved across the
 credential URL update, fixing an issue where they were incorrectly
 cleared.

 Needs review.
 source: [off-list ref]


* kh/format-rev-more-options (2026-08-18) 5 commits
 - format-rev: learn --abbrev, --color, and --date
 - doc: rev-list-options.adoc: factor out --date alts
 - format-rev: factor option variables into a struct
 - format-rev: place BUG calls first in callback
 - format-rev: use lower case for opts description

 The experimental 'git format-rev' has been taught a few more
 formatting options.

 Needs review.
 source: [off-list ref]


* bc/restrict-hex-to-lowercase (2026-09-07) 7 commits
 - hex: allow only lowercase object IDs in breaking changes mode
 - t5324: adjust tests for corrupt commit-graph
 - object-name: use hexval
 - hex: label usages of hex parsing for object IDs
 - hex: make hex_to_bytes accept kind of hex to use
 - hex: allow specifying hex type with hex2chr
 - hex: add functionality for lowercase-only hex

 The parser for hex object names has been updated to reject uppercase
 hexadecimal characters when running in the breaking changes mode, in
 preparation for Git 3.0.

 Needs review.
 source: [off-list ref]


* kj/repo-info-more-path-keys (2026-09-27) 8 commits
 - repo: add path.cdup
 - repo: add path.git-prefix
 - repo: add path.grafts with absolute and relative suffixes
 - repo: add path.index with absolute and relative suffixes
 - repo: add path.hooks with absolute and relative suffixes
 - repo: add path.superproject-root with absolute and relative suffixes
 - submodule: use repository to find superproject
 - repo: add path.toplevel with absolute and relative suffix formatting

 The 'git repo info' command has been taught more keys to output
 paths of various repository components (such as the working tree
 root, superproject working tree, object database, etc.), supporting
 both absolute and relative path formats.

 Needs review.
 source: [off-list ref]


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command can now configure how submodule fetch errors
 are handled via 'fetch.submoduleErrors' and '--submodule-errors',
 making them non-fatal.  A premature failure during recursive submodule
 fetches has been fixed by deferring the error until the OID-based
 retry phase fails.

 Needs review.
 source: [off-list ref]


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. [off-list ref]
 source: [off-list ref]


* mm/line-log-limited-ops (2026-09-02) 7 commits
 - diffcore-pickaxe: limit -G to the -L tracked range
 - diff: support --check with -L line ranges
 - diff: support stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename line-range filter struct and clarify fields
 (this branch is used by mm/diff-process-hunks.)

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: [off-list ref]


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Expecting a reroll.
 cf. <an4uIQA09rDCwwBp@com-79390>
 cf. [off-list ref]
 source: [off-list ref]


* mm/diff-process-hunks (2026-08-13) 11 commits
 - fixup! diff: consult oid-only hunk providers via diff.<driver>.process
 - diff: consult oid-only hunk providers via diff.<driver>.process
 - userdiff: add diff.<driver>.process config
 - sub-process: add a gentle status read
 - sub-process: separate process lifecycle from hashmap management
 - blame: read precomputed hunks
 - diff: read precomputed hunks for stat output
 - diff: record precomputed hunks during stat output
 - diff-hunks: add the store format, library, and command
 - diff: introduce a hunk provider interface
 - gitattributes: document how external diff drivers relate to diff features
 - Merge branch 'mm/line-log-limited-ops' into mm/diff-process-hunks
 (this branch uses mm/line-log-limited-ops.)

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll.
 cf. [off-list ref]
 source: [off-list ref]

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

* bs/runtime-prefix-obsd-getexecpath (2026-09-16) 1 commit
 . exec_cmd: RUNTIME_PREFIX on OpenBSD systems

 Git on OpenBSD historically lacked an authoritative mechanism to
 resolve its executable path, as it doesn't support the
 KERN_PROC_PATHNAME sysctl.  With OpenBSD 8.0 introducing
 getexecpath(3), it is now utilized to provide proper RUNTIME_PREFIX
 resolution instead of relying on argv[0] fallback.

 Waiting for response for too long, stalled.
 cf. <xmqq4ifio83d.fsf@gitster.g>
 source: [off-list ref]


* gg/http-ssl-verify-status (2026-09-15) 1 commit
 . http: add http.sslVerifyStatus to check stapled OCSP responses

 The HTTP transport has been taught to check the revocation status of
 the server certificate using the stapled OCSP response during the
 TLS handshake via a new 'http.sslVerifyStatus' configuration
 variable.

 It seems to make CI stuck and time out after 6 hours.

 Waiting for response for too long, stalled.
 cf. [off-list ref]
 cf. <xmqq1pa04wn0.fsf@gitster.g>
 source: [off-list ref]


* tc/last-modified-bloom (2026-09-01) 6 commits
 . last-modified: keep per-path Bloom filters for wildcard pathspecs
 . last-modified: check pathspec against Bloom filter first
 . revision: add Bloom check that includes parent directories
 . bloom: add helper to check if any key in a vector is present
 . revision: expose check for paths maybe changed in Bloom filter
 . revision: move bloom keyvec precondition into function

 The 'git last-modified' command has been optimized by using Bloom
 filters.  It now reuses revision walk filtering logic from 'git log'
 to pre-filter commits, and maintains per-path Bloom filters even when
 wildcard pathspecs are used.

 Waiting for response for too long, stalled.
 cf. [off-list ref]
 cf. [off-list ref]
 source: [off-list ref]
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help