What's cooking (2026/08 #09)

todo
Junio C Hamano 2026-08-20 15:20:06 -07:00
parent eb4f30ea92
commit 99fa371e24
1 changed files with 327 additions and 272 deletions

View File

@ -1,10 +1,10 @@
To: git@vger.kernel.org
Subject: What's cooking in git.git (Aug 2026, #08)
X-master-at: 18e66859d87fb4b76599f73460b54f0848c76b16
X-next-at: 4b6b3295ed0a0353274850d13b4360ed82b2335a
Subject: What's cooking in git.git (Aug 2026, #09)
X-master-at: 1a3e64c6c4a623626ff0687008732a8e007e2a1c
X-next-at: b25b4bd76c75363f63222e781088d0833952c20c
Bcc: lwn@lwn.net, gitster@pobox.com

What's cooking in git.git (Aug 2026, #08)
What's cooking in git.git (Aug 2026, #09)
-----------------------------------------

Here are the topics that have been cooking in my tree. Commits
@ -51,6 +51,239 @@ Release tarballs are available at:

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

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

* kn/receive-report-hook (2026-08-18) 1 commit
- hook: introduce the report hook for git-receive-pack(1)

A new hook 'report' is added to 'git receive-pack', which runs after
reference updates and allows the server to filter or modify the
packet-line status report sent back to the client.

Expecting a reroll.
cf. <CAOLa=ZSuzd3FozharJ_1LRgaQdpY+eRZnMOJYoLJNvPXiait1w@mail.gmail.com>
source: <20260818-758-introduce-hook-v1-1-8a8d89e65838@gmail.com>


* en/midx-missing-pack-fallback (2026-08-18) 2 commits
- packfile: recover when a multi-pack-index names a removed pack
- replay: fail gracefully when a merge input is unreadable

The object lookup machinery has been taught to gracefully recover
when a multi-pack-index points to an owning pack that was removed
during a concurrent geometric repack, and 'git replay' has been
fixed to not segfault when reading such missing objects.

Waiting for response.
cf. <xmqqfr0augls.fsf@gitster.g>
cf. <aoayppoxHAkcFTBN@pks.im>
source: <pull.2207.git.1787092446.gitgitgadget@gmail.com>


* ll/zsh-complete-git-potty-options (2026-08-19) 1 commit
- completion: zsh: support completion after "git -C <path>"

The zsh completion script (in 'contrib/') has been updated to
correctly locate the Git command after global options like '-C' by
properly skipping them, similar to how the bash completion does.

Needs review.
cf. <CALnO6CC35iuyJpKZtkEN7fGuGK7zKd_jbebyZdKSQ1pyfOBRZA@mail.gmail.com>
source: <pull.2155.v2.git.1787144872870.gitgitgadget@gmail.com>


* ps/odb-generic-corrupt-objects (2026-08-19) 5 commits
- odb: handle `OBJECT_INFO_DIE_IF_CORRUPT` generically
- odb/source: allow `read_object_info()` to bubble up error messages
- odb/source: let callers discern missing and corrupt objects
- odb/source: introduce error status when reading objects
- odb/source-packed: flag known-bad objects as corrupt and not missing

The object database (odb) API has been refactored to distinguish
between missing objects and corrupt ones by returning more
descriptive error statuses. Both the packed and loose backends now
faithfully propagate error details using a generic strbuf error
mechanism, removing backend-specific leakage from central lookup
paths.

Waiting for review.
cf. <CAOLa=ZTVxdVAJynKjb0LjmZ-+b5nQmyD0Bm-aT81rOOdJ0a5yg@mail.gmail.com>
cf. <aocNsR60-8W2A-fy@pks.im>
cf. <aocNq1N9MWS4BeaJ@pks.im>
source: <20260819-pks-odb-generic-corrupt-objects-v2-0-a984e3a0ad6f@pks.im>


* 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: <20260819-http-preserve-wwwauth-redirect-v2-1-4c61039432b0@nvidia.com>


* fr/pack-objects-trace-pack-bytes (2026-08-19) 1 commit
- pack-objects: trace pack bytes written

The pack-objects command has been updated to record the total bytes
written to pack files in trace2 output, allowing performance
analysis of different compression settings by comparing the
resulting pack sizes.

Needs review.
cf. <aobFLJuiuM1EuNpv@pks.im>
cf. <20260820082102.GA2973952@coredump.intra.peff.net>
source: <c6a8cdac36d2202055d637ebcc97e484122cdcd4.1787158152.git.friel@openai.com>


* kh/doc-datamodel (2026-08-20) 4 commits
- doc: datamodel: link to the glossary
- doc: glossary: link four of the terms to gitdatamodel(7)
- doc: git: link to the gitdatamodel(7) tutorial
- doc: git: list gitdatamodel(7) as a concept guide

The gitdatamodel documentation page has been linked from a handful
of key documentaiton pages.

Needs review.
source: <CV_doc_datamodel_advertize.bea@msgid.xyz>


* yn/worktree-repair-relative (2026-08-20) 1 commit
- worktree repair: detect relative path in .git file correctly

The git worktree repair command failed to rewrite the .git file of
a working tree from a relative path to an absolute path when the
command was run in the working tree itself. The
read_gitfile_gently() function was modified to also return whether
the path originally recorded in the file was absolute, and this new
capability is used to correctly detect such mismatches.

Needs review.
source: <pull.2205.v2.git.1787240760069.gitgitgadget@gmail.com>

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

* hn/bisect-reset-when-found (2026-08-02) 2 commits
(merged to 'next' on 2026-08-11 at cad4ed37c6)
+ bisect: add --reset-when-found to leave when done
+ bisect: let bisect_reset() optionally check out quietly

The 'git bisect' command has been taught a
'--reset-when-found[=<where>]' option that tells the command to
automatically run 'git bisect reset' to jump back to the original
state or to the found culprit.

Graduated to 'master'.
cf. <xmqqldajjgn3.fsf@gitster.g>
source: <pull.2335.v6.git.git.1785705860.gitgitgadget@gmail.com>


* hn/branch-delete-merged (2026-08-05) 7 commits
(merged to 'next' on 2026-08-13 at 07f0138e2e)
+ branch: add --dry-run for --delete-merged
+ branch: add branch.<name>.deleteMerged opt-out
+ branch: add --delete-merged <pattern>
+ branch: prepare delete_branches for a bulk caller
+ branch: let delete_branches skip unmerged branches on bulk refusal
+ branch: convert delete_branches() to a flags argument
+ branch: add --forked filter for --list mode

The 'git branch' command has been taught the '--delete-merged' option
to remove local branches that are already merged into their tracked
remote-tracking branches.

Graduated to 'master'.
cf. <10b22a6b-e028-469c-a117-8dc2ed5bed3b@gmail.com>
source: <pull.2285.v25.git.git.1785939877.gitgitgadget@gmail.com>


* kh/doc-refs-migrate-limitations (2026-08-05) 2 commits
(merged to 'next' on 2026-08-11 at 2eb1041920)
+ doc: refs: linkgit to git-maintenance(1)
+ doc: refs: put ref migration warning under the command

The known limitations of the ref format migration in 'git refs' have
been moved to be displayed as a warning admonition directly under the
description of the 'migrate' subcommand, improving visibility. A
reference to 'git-maintenance' has also been corrected to use the
'linkgit' macro.

Graduated to 'master'.
cf. <anQYWlv3UhpS3iE7@pks.im>
cf. <CAOLa=ZQQnrRca60BAfnm6Azu=bHvnoVhcGwQ3KkDT7yqLDd8Dw@mail.gmail.com>
source: <V3_CV_git_ref_migration_warning.b23@msgid.xyz>


* kh/doc-trailers (2026-08-09) 11 commits
(merged to 'next' on 2026-08-13 at 2966f0265a)
+ doc: interpret-trailers: document comment line treatment
+ doc: interpret-trailers: rewrite new-trailers paragraphs
+ doc: interpret-trailers: commit to “trailer block” term
+ doc: interpret-trailers: join new-trailers again
+ doc: interpret-trailers: add key format example
+ doc: interpret-trailers: explain key format
+ doc: interpret-trailers: explain the format after the intro
+ doc: interpret-trailers: not just for commit messages
+ doc: interpret-trailers: use “metadata” in Name as well
+ doc: interpret-trailers: replace “lines” with “metadata”
+ doc: interpret-trailers: stop fixating on RFC 822
(this branch is used by kh/trailers-no-urls.)

Documentation for 'git interpret-trailers' has been updated to explain
the format of trailer keys (alphanumeric characters and hyphens),
replace outdated terminology, define key terms upfront, and document
how comment lines in the input are treated.

Graduated to 'master'.
cf. <0687D60D-DF6B-4547-868C-FCFC5B27ECAF@gmail.com>
source: <V5_CV_doc_int-tr_key_format.b26@msgid.xyz>


* ps/odb-make-creation-pluggable (2026-08-06) 6 commits
(merged to 'next' on 2026-08-13 at 749fa77ae1)
+ odb: make creation of on-disk structures pluggable
+ odb/source: introduce function to map source type to name
+ setup: defer object database creation
+ setup: handle ODB-related environment variables in `odb_new()`
+ setup: detangle loading of loose object maps
+ loose: load loose object map for the correct source
(this branch is used by ps/odb-eagerly-load-alternates.)

The creation of the on-disk data structures for the object database
has been made pluggable, allowing future backends to customize their
setup. As part of this, the initialization of the object database
has been deferred, and the loading of the loose-object map has been
detangled from repository initialization.

Graduated to 'master'.
cf. <87jyq24cxm.fsf@emacs.iotcl.com>
source: <20260807-pks-odb-create-on-disk-v5-0-399da0b0b140@pks.im>


* ps/writev (2026-08-06) 5 commits
(merged to 'next' on 2026-08-11 at bc2a935c92)
+ fast-import: use writev(3p) to send cat-blob responses
+ sideband: use writev(3p) to send pktlines
+ wrapper: properly handle MAX_IO_SIZE in writev(3p)
+ wrapper: introduce writev(3p) wrappers
+ compat/posix: introduce writev(3p) wrapper

A compatibility wrapper for writev(3p) has been reintroduced,
including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
Calls to write(3p) in send_sideband() and cat_blob() have been
refactored to use writev(3p) wrappers to reduce syscall overhead.

Graduated to 'master'.
cf. <xmqqcxvvhu6q.fsf@gitster.g>
source: <20260807-pks-reintroduce-writev-v2-0-30fcff0e89c1@pks.im>

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

@ -68,32 +301,32 @@ Release tarballs are available at:
source: <20260721140443.1809379-2-hugo@hsal.es>

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

* sk/object-name-use-after-free (2026-08-17) 1 commit
- object-name: avoid use-after-free in get_oid_with_context_1()
(merged to 'next' on 2026-08-20 at b0804dff5f)
+ object-name: avoid use-after-free in get_oid_with_context_1()

A heap-use-after-free bug in the object name parsing code when
reporting failures with a relative path to a sparse directory has
been corrected.

Will merge to 'next'?
Will merge to 'master'.
cf. <xmqq1pbw7nwi.fsf@gitster.g>
source: <20260817082127.81132-1-diy2903@gmail.com>

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

* kh/format-rev-doc-synopsis (2026-08-17) 2 commits
- doc: format-rev: use [synopsis] on code block
- doc: format-rev: quote subject placeholder before and after
(merged to 'next' on 2026-08-20 at b9c47eddd0)
+ doc: format-rev: use [synopsis] on code block
+ doc: format-rev: quote subject placeholder before and after

The documentation for 'git format-rev' has been updated to use the
[synopsis] block definition on code blocks to properly highlight
placeholders, and a quoting inconsistency in the running text has
been fixed.

Will merge to 'next'?
Will merge to 'master'.
cf. <xmqq33wc4dyq.fsf@gitster.g>
source: <V4_CV_synopsis_block.b8e@msgid.xyz>

@ -112,7 +345,7 @@ Release tarballs are available at:
source: <V2_CV_format-rev_three_more_opts.bd3@msgid.xyz>


* ps/odb-pluggable-pack-generation (2026-08-16) 6 commits
* ps/odb-pluggable-pack-generation (2026-08-20) 6 commits
- bundle: generate packfiles via the object database
- bundle: get (mostly) rid of `the_repository`
- builtin/bundle: refactor option handling for progress meter
@ -126,9 +359,9 @@ Release tarballs are available at:
'pack-objects' and enabling alternative ODBs to serve packfiles
themselves.

Waiting for review.
cf. <aoPtDyISRa0mVXRa@pks.im>
source: <20260817-b4-pks-odb-generate-pack-v2-0-4c8a96ccfdb3@pks.im>
Expecting a reroll.
cf. <aobnos_v8xko0w57@pks.im>
source: <20260820-b4-pks-odb-generate-pack-v3-0-bc42252f6169@pks.im>


* ty/repository-fetch-if-missing (2026-08-14) 1 commit
@ -149,7 +382,9 @@ Release tarballs are available at:

A few additional tests.

Needs review.
Expecting a reroll.
cf. <20260820151325.58087-1-nikolauspschuetz@gmail.com>
cf. <20260820144648.47267-1-nikolauspschuetz@gmail.com>
source: <pull.2204.git.1786655554197.gitgitgadget@gmail.com>
source: <pull.2203.git.1786653837190.gitgitgadget@gmail.com>

@ -166,24 +401,26 @@ Release tarballs are available at:


* ss/submittingpatches-typofix (2026-08-14) 1 commit
- doc: fix typo in submitting patches
(merged to 'next' on 2026-08-18 at b251ddc3d7)
+ doc: fix typo in submitting patches

Typofix.

Will merge to 'next'.
Will merge to 'master'.
cf. <xmqq7blsmru5.fsf@gitster.g>
source: <pull.2383.git.git.1786733219160.gitgitgadget@gmail.com>


* ch/chdir-notify-drop-name (2026-08-14) 1 commit
- chdir-notify.h: Removed unused param 'name'
(merged to 'next' on 2026-08-18 at 973cefddd7)
+ chdir-notify.h: Removed unused param 'name'

The unused name parameter in 'struct chdir_notify_entry' has been
removed from chdir_notify_register(), chdir_notify_unregister(), and
related callback signatures across several subsystems, simplifying the
API now that trace output no longer uses it.

Will merge to 'next'.
Will merge to 'master'.
cf. <20260815051213.GA26013@coredump.intra.peff.net>
source: <20260814214210.1625-1-colinlewishinton@gmail.com>

@ -216,7 +453,7 @@ Release tarballs are available at:
source: <pull.2198.v2.git.1786528498689.gitgitgadget@gmail.com>


* jt/receive-pack-pluggable-writes (2026-08-11) 9 commits
* jt/receive-pack-pluggable-writes (2026-08-19) 9 commits
- odb/transaction: add transaction interface to write packfiles
- odb: return temporary ODB source when set
- builtin/receive-pack: explicitly pass packfile fd
@ -232,18 +469,22 @@ Release tarballs are available at:
backend-agnostic.

Expecting a reroll.
cf. <an8YSE8iIDXPSkH8@denethor>
source: <20260811175415.2044235-1-jltobler@gmail.com>
cf. <aodyeILDMaBOX--K@denethor>
cf. <aoaiz7M1oGboydY4@pks.im>
cf. <aoaiy1wmSXjL30-m@pks.im>
cf. <aoaixMF1biKYhWN2@pks.im>
source: <20260819215311.3880274-1-jltobler@gmail.com>


* jc/complete-checkout (2026-08-13) 4 commits
- completion: 'git checkout' completes untracked paths as a last resort
- completion: complete tracked paths for "git checkout"
- completion: no-op refactoring of checkout completion
- Merge branch 'jc/complete-diff-tracked-paths' into jc/complete-checkout
(merged to 'next' on 2026-08-19 at 758fc8c411)
+ completion: 'git checkout' completes untracked paths as a last resort
+ completion: complete tracked paths for "git checkout"
+ completion: no-op refactoring of checkout completion
+ Merge branch 'jc/complete-diff-tracked-paths' into jc/complete-checkout
(this branch uses jc/complete-diff-tracked-paths.)

Will merge to 'next'?
Will merge to 'master'.
cf. <CABPp-BFeLStBR3OeTCJoBmC7cn_VXrn4RcvBg-WWGyz4LpJxsg@mail.gmail.com>
source: <20260813191234.1066662-1-gitster@pobox.com>

@ -281,7 +522,6 @@ Release tarballs are available at:
- odb: decouple source path comparisons from `the_repository`
- setup: create ref and object databases after config is written
- Merge branch 'ps/odb-make-creation-pluggable' into ps/odb-eagerly-load-alternates
(this branch uses ps/odb-make-creation-pluggable.)

The object database layer has been simplified by eagerly loading
alternate object directories upon initialization, instead of
@ -289,11 +529,14 @@ Release tarballs are available at:
for scattered lazy-loading calls throughout the codebase and paves
the way for integrating alternates with the pluggable backends.

Needs review.
Waiting for response.
cf. <an36BA_Nw7eLAKYC@denethor>
cf. <CAOLa=ZT-ObRJ3t0XYAkL33CPDZ2ULu_5M7c477rr0pZBqTBi9w@mail.gmail.com>
cf. <xmqqmrugsryl.fsf@gitster.g>
source: <20260817-pks-odb-eagerly-prepare-alternates-v3-0-1115a7e02467@pks.im>


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

The HTTP transport has been taught to check the revocation status of
@ -301,20 +544,20 @@ Release tarballs are available at:
TLS handshake via a new 'http.sslVerifyStatus' configuration
variable.

Waiting for response.
cf. <aoQOxISPfEwh-ik2@pks.im>
source: <20260817185242.22736-1-ggordon@gitlab.com>
Needs review.
source: <20260818214858.65122-1-ggordon@gitlab.com>


* js/packfile-fast-append (2026-08-13) 1 commit
- packfile: fix perf regression with many packs
(merged to 'next' on 2026-08-18 at cc3da5a03d)
+ packfile: fix perf regression with many packs

The performance of adding numerous new packfiles has been improved
by introducing a fast path for known-new packfiles to skip an
unnecessary traversal in packfile_list_append(), avoiding a
quadratic complexity regression on load.

Will merge to 'next'.
Will merge to 'master'.
cf. <an7ItVYrKZFXg2ci@pks.im>
cf. <xmqqy0e8pxos.fsf@gitster.g>
source: <pull.2202.v2.git.1786633010179.gitgitgadget@gmail.com>
@ -335,19 +578,20 @@ Release tarballs are available at:


* ss/repack-drop-filtered (2026-08-13) 6 commits
- builtin/repack: add guards for --drop-filtered
- builtin/repack: actually drop filtered promisor blobs
- builtin/repack: enumerate promisor blobs for --drop-filtered
- repack-promisor: allow excluding objects from the rebuilt promisor pack
- list-objects-filter: add list_objects_filter__filter_oidset()
- builtin/repack: add --drop-filtered and --dry-run options
(merged to 'next' on 2026-08-18 at 23ad3f2b76)
+ builtin/repack: add guards for --drop-filtered
+ builtin/repack: actually drop filtered promisor blobs
+ builtin/repack: enumerate promisor blobs for --drop-filtered
+ repack-promisor: allow excluding objects from the rebuilt promisor pack
+ list-objects-filter: add list_objects_filter__filter_oidset()
+ builtin/repack: add --drop-filtered and --dry-run options

'git repack' has been taught '--drop-filtered' to delete local
promisor blobs exceeding a limit (currently 'blob:limit=') in partial
clones, reclaiming space. Guards prevent running during other
operations or if referenced by the index.

Will merge to 'next'.
Will merge to 'master'.
cf. <CAP8UFD1esJ0fk3xPXvAmQhMK_5wrpGKZJg9YaFV0-qUAC7bf5g@mail.gmail.com>
source: <20260813200830.84348-1-r.siddharth.shrimali@gmail.com>

@ -376,7 +620,8 @@ Release tarballs are available at:
The command line completion (in contrib/) has been taught to handle
the experimental 'git history' command.

Needs review.
Will merge to 'next'?
cf. <aoWP3TYq5rNjUx7S@pks.im>
source: <20260813-history_autocompletion-v3-0-69eed1cea93a@kernel.org>


@ -392,12 +637,15 @@ Release tarballs are available at:
configured promisor remotes when serving trusted repositories.

Waiting for response.
cf. <xmqq1pc0mr5i.fsf@gitster.g>
cf. <xmqqecg0oabe.fsf@gitster.g>
cf. <xmqqy0e8mv0k.fsf@gitster.g>
cf. <xmqqjypsoami.fsf@gitster.g>
cf. <xmqq1pc0mr5i.fsf@gitster.g>
source: <20260813154748.2378747-1-christian.couder@gmail.com>


* dk/use-nsec-runtime (2026-08-14) 3 commits
* dk/use-nsec-runtime (2026-08-20) 3 commits
- core: convert build-time USE_NSEC into runtime core.useNanosec
- environment: align repo_config_values_init with struct declaration
- meson: expose knob for xmlto relative links in manuals
@ -407,9 +655,9 @@ Release tarballs are available at:
distributions to bundle one binary that adapts to filesystem
capabilities dynamically.

Expecting a reroll.
cf. <CALnO6CA96y0g9iy+GRMV1v86zk3eKpCKxeJWid=097sFNXEknA@mail.gmail.com>
source: <cover.1786710807.git.ben.knoble@gmail.com>
Needs review.
cf. <xmqqa4qgsn20.fsf@gitster.g>
source: <cover.1787231825.git.ben.knoble@gmail.com>


* ps/t7900-deflake-maintenance (2026-08-12) 2 commits
@ -490,15 +738,29 @@ Release tarballs are available at:
source: <pull.2195.v2.git.1786521173.gitgitgadget@gmail.com>


* yn/worktree-add-no-dwim-with-b (2026-08-10) 1 commit
* yn/worktree-add-no-dwim-with-b (2026-08-20) 1 commit
- worktree add: shouldn't dwim if -b or -B is given

The DWIM logic in 'git worktree add' sometimes tried to infer a
remote-tracking branch when an explicit '-b' or '-B' option was
given to create a new branch, causing the explicit branch name to
be ignored, which has been corrected.

Will merge to 'next'?
cf. <xmqqecfssnk0.fsf@gitster.g>
source: <pull.2192.v4.git.1787221888406.gitgitgadget@gmail.com>


* yn/worktree-ambiguous-remote-advice (2026-08-20) 3 commits
- worktree add: improve message for ambiguous remote branch name
- checkout: improve message for ambiguous remote branch name
- checkout: extract function to display advice for ambiguous remotes

'git worktree add' did not prevent DWIM behavior when '-b' or '-B' was
specified, which has been corrected.

Expecting a reroll.
cf. <CAF5D8-tfAfjNONh8dbqxmF+kzzaQ4rSQL94DK2=TLd9_HV9oaA@mail.gmail.com>
source: <pull.2197.v4.git.1786430155244.gitgitgadget@gmail.com>
Needs review.
source: <pull.2197.v6.git.1787259838.gitgitgadget@gmail.com>


* hn/ci-cancel-stale-pr-runs (2026-07-31) 1 commit
@ -512,75 +774,30 @@ Release tarballs are available at:
source: <pull.2369.git.git.1785492641983.gitgitgadget@gmail.com>


* kh/doc-refs-migrate-limitations (2026-08-05) 2 commits
(merged to 'next' on 2026-08-11 at 2eb1041920)
+ doc: refs: linkgit to git-maintenance(1)
+ doc: refs: put ref migration warning under the command

The known limitations of the ref format migration in 'git refs' have
been moved to be displayed as a warning admonition directly under the
description of the 'migrate' subcommand, improving visibility. A
reference to 'git-maintenance' has also been corrected to use the
'linkgit' macro.

Will merge to 'master'.
cf. <anQYWlv3UhpS3iE7@pks.im>
cf. <CAOLa=ZQQnrRca60BAfnm6Azu=bHvnoVhcGwQ3KkDT7yqLDd8Dw@mail.gmail.com>
source: <V3_CV_git_ref_migration_warning.b23@msgid.xyz>


* jc/complete-diff-tracked-paths (2026-08-12) 3 commits
- completion: 'git diff' completes untracked paths as a last resort
- completion: complete tracked paths for 'git diff'
- completion: no-op refactoring of diff completion
(merged to 'next' on 2026-08-19 at 37263f6528)
+ completion: 'git diff' completes untracked paths as a last resort
+ completion: complete tracked paths for 'git diff'
+ completion: no-op refactoring of diff completion
(this branch is used by jc/complete-checkout.)

'git -C <dir> diff fi<TAB>' did not complete 'dir/file', which has
been corrected.

Will merge to 'next'.
Will merge to 'master'.
cf. <CABPp-BFdwxTvkcWKNP0-Lk+mqQLnULoYuLHZe0aot4VYfHnjSw@mail.gmail.com>
source: <20260812162551.2229680-1-gitster@pobox.com>


* kh/trailers-no-urls (2026-08-02) 2 commits
* kh/trailers-no-urls (2026-08-20) 2 commits
- trailers: stop recognizing URLs as trailers
- Merge branch 'kh/doc-trailers' into kh/trailers-no-urls
(this branch uses kh/doc-trailers.)

The trailers code has been taught to avoid mistaking a line that has
'<token>://' at the beginning as a trailer line.

On hold, waiting for the base topic.
cf. <20260803152025.GA189075@coredump.intra.peff.net>
cf. <xmqqmrv42lrg.fsf@gitster.g>
cf. <xmqqtspbz00x.fsf@gitster.g>
source: <URLs_not_trailers.b13@msgid.xyz>


* kh/doc-trailers (2026-08-09) 11 commits
(merged to 'next' on 2026-08-13 at 2966f0265a)
+ doc: interpret-trailers: document comment line treatment
+ doc: interpret-trailers: rewrite new-trailers paragraphs
+ doc: interpret-trailers: commit to “trailer block” term
+ doc: interpret-trailers: join new-trailers again
+ doc: interpret-trailers: add key format example
+ doc: interpret-trailers: explain key format
+ doc: interpret-trailers: explain the format after the intro
+ doc: interpret-trailers: not just for commit messages
+ doc: interpret-trailers: use “metadata” in Name as well
+ doc: interpret-trailers: replace “lines” with “metadata”
+ doc: interpret-trailers: stop fixating on RFC 822
(this branch is used by kh/trailers-no-urls.)

Documentation for 'git interpret-trailers' has been updated to explain
the format of trailer keys (alphanumeric characters and hyphens),
replace outdated terminology, define key terms upfront, and document
how comment lines in the input are treated.

Will merge to 'master'.
cf. <0687D60D-DF6B-4547-868C-FCFC5B27ECAF@gmail.com>
source: <V5_CV_doc_int-tr_key_format.b26@msgid.xyz>
Needs review.
source: <V2_URLs_not_trailers.bf3@msgid.xyz>


* cl/regexec-macos-leak (2026-07-28) 2 commits
@ -655,27 +872,6 @@ Release tarballs are available at:
source: <20260808-objecttype-support-v6-0-e5cdaf27a49c@gmail.com>


* ps/odb-make-creation-pluggable (2026-08-06) 6 commits
(merged to 'next' on 2026-08-13 at 749fa77ae1)
+ odb: make creation of on-disk structures pluggable
+ odb/source: introduce function to map source type to name
+ setup: defer object database creation
+ setup: handle ODB-related environment variables in `odb_new()`
+ setup: detangle loading of loose object maps
+ loose: load loose object map for the correct source
(this branch is used by ps/odb-eagerly-load-alternates.)

The creation of the on-disk data structures for the object database
has been made pluggable, allowing future backends to customize their
setup. As part of this, the initialization of the object database
has been deferred, and the loading of the loose-object map has been
detangled from repository initialization.

Will merge to 'master'.
cf. <87jyq24cxm.fsf@emacs.iotcl.com>
source: <20260807-pks-odb-create-on-disk-v5-0-399da0b0b140@pks.im>


* sn/rebase-update-refs-symrefs (2026-07-22) 2 commits
- rebase: guard non-branch symref targets
- rebase: skip branch symref aliases
@ -707,7 +903,7 @@ Release tarballs are available at:

Waiting for response.
cf. <6E2B0ADE-2101-47AC-B11B-315897AC2AF9@gmail.com>
cf. <749F5FAC-5803-4E7A-AEC8-BA653D329EE2@gmail.com>
cf. <xmqqlda3z773.fsf@gitster.g>
source: <20260806101556.162940-1-jayatheerthkulkarni2005@gmail.com>


@ -729,21 +925,6 @@ Release tarballs are available at:
source: <20260807-toon-speed-up-last-modified-v2-0-7d87bbdeaf9b@iotcl.com>


* hn/bisect-reset-when-found (2026-08-02) 2 commits
(merged to 'next' on 2026-08-11 at cad4ed37c6)
+ bisect: add --reset-when-found to leave when done
+ bisect: let bisect_reset() optionally check out quietly

The 'git bisect' command has been taught a
'--reset-when-found[=<where>]' option that tells the command to
automatically run 'git bisect reset' to jump back to the original
state or to the found culprit.

Will merge to 'master'.
cf. <xmqqldajjgn3.fsf@gitster.g>
source: <pull.2335.v6.git.git.1785705860.gitgitgadget@gmail.com>


* js/coverity-unchecked-returns-fix (2026-08-12) 12 commits
(merged to 'next' on 2026-08-17 at 105f002870)
+ bisect: handle dup() failure when redirecting stdout
@ -806,24 +987,6 @@ Release tarballs are available at:
source: <20260811083314.2023489-1-christian.couder@gmail.com>


* ps/writev (2026-08-06) 5 commits
(merged to 'next' on 2026-08-11 at bc2a935c92)
+ fast-import: use writev(3p) to send cat-blob responses
+ sideband: use writev(3p) to send pktlines
+ wrapper: properly handle MAX_IO_SIZE in writev(3p)
+ wrapper: introduce writev(3p) wrappers
+ compat/posix: introduce writev(3p) wrapper

A compatibility wrapper for writev(3p) has been reintroduced,
including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
Calls to write(3p) in send_sideband() and cat_blob() have been
refactored to use writev(3p) wrappers to reduce syscall overhead.

Will merge to 'master'.
cf. <xmqqcxvvhu6q.fsf@gitster.g>
source: <20260807-pks-reintroduce-writev-v2-0-30fcff0e89c1@pks.im>


* js/pack-objects-delta-size-t (2026-08-13) 13 commits
(merged to 'next' on 2026-08-17 at b6778ce373)
+ packfile: widen `unpack_object_header_buffer()` to `size_t`
@ -961,8 +1124,7 @@ Release tarballs are available at:
source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-08-13) 9 commits
- fixup! history: create squashed commits without editing
* hn/history-squash (2026-08-20) 8 commits
- history: support editing squashed commit messages
- history: create squashed commits without editing
- history: protect branches when squashing a range
@ -977,9 +1139,8 @@ Release tarballs are available at:
descendants replayed on top.

Waiting for response.
cf. <xmqqecfw663u.fsf@gitster.g>
cf. <29d56a3e-6bde-49a2-b7b2-3eeb4c439e01@app.fastmail.com>
source: <pull.2337.v13.git.git.1786088371.gitgitgadget@gmail.com>
cf. <xmqq4igov9h9.fsf@gitster.g>
source: <pull.2337.v14.git.git.1787249432.gitgitgadget@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
@ -1052,25 +1213,6 @@ Release tarballs are available at:
source: <cover.1779792311.git.erik@cervined.in>


* hn/branch-delete-merged (2026-08-05) 7 commits
(merged to 'next' on 2026-08-13 at 07f0138e2e)
+ branch: add --dry-run for --delete-merged
+ branch: add branch.<name>.deleteMerged opt-out
+ branch: add --delete-merged <pattern>
+ branch: prepare delete_branches for a bulk caller
+ branch: let delete_branches skip unmerged branches on bulk refusal
+ branch: convert delete_branches() to a flags argument
+ branch: add --forked filter for --list mode

The 'git branch' command has been taught the '--delete-merged' option
to remove local branches that are already merged into their tracked
remote-tracking branches.

Will merge to 'master'.
cf. <10b22a6b-e028-469c-a117-8dc2ed5bed3b@gmail.com>
source: <pull.2285.v25.git.git.1785939877.gitgitgadget@gmail.com>


* kk/merge-base-exhaustion (2026-08-11) 11 commits
(merged to 'next' on 2026-08-15 at 3f836fa1e4)
+ commit-reach: remove commit-date ordering fallback
@ -1093,90 +1235,3 @@ Release tarballs are available at:
cf. <CABPp-BHuh_8q6Hy2-Bk7H6Chdb4+eeW1f4LZU0szZ4zU9Eeo+w@mail.gmail.com>
cf. <xmqqbjb7w1dq.fsf@gitster.g>
source: <pull.2149.v8.git.1786440533.gitgitgadget@gmail.com>

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

* td/fsmonitor-darwin-cookie-flush (2026-07-21) 1 commit
. fsmonitor: flush pending FSEvents before cookie wait

The 'fsmonitor' daemon on macOS has been updated to flush pending
FSEvents before waiting for the cookie file, to avoid premature
timeouts on busy systems.

Retracted
cf. <CAJ-ks9kQR77vH-56eS9tT-iXEnih+Z7SPRMs1gD_wTyg_6gZ_w@mail.gmail.com>
source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>


* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
. send-pack: honor `no-ref-delta` capability
. pack-objects: support reuse with `--no-ref-delta`
. pack-objects: introduce `--no-ref-delta`
. t/helper: teach pack-deltas to list delta entries

'git send-pack' has been taught to refrain from sending 'REF_DELTA'
encoded packfiles when the other side asks it to.

Retracted for now.
source: <cover.1783905084.git.ttaylorr@openai.com>


* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
. submodule absorbgitdirs tests: use test_* helper functions

The test script 't7412' that tests 'git submodule absorbgitdirs' has
been modernized to use test_path_is_file(), test_path_is_dir(), and
test_path_is_missing() helper functions instead of raw 'test -[fde]'
commands.

Waited for response for too long, discarded.
cf. <akTKHfKPsP3-Rn31@pks.im>
source: <20260630020220.1559190-1-bblima@usp.br>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
. SQUASH??? bare grep !???
. repack: support combining '--geometric' with '--cruft'
. pack-objects: support '--refs-snapshot' with 'follow-reachable'
. pack-objects: introduce '--stdin-packs=follow-reachable'
. pack-objects: extract `stdin_packs_add_all_pack_entries()`
. repack-geometry: drop unused redundant-pack removal
. repack: delete geometric packs via existing_packs
. repack: teach MIDX retention about geometric rollups
. repack: mark geometric progression of packs as retained
. repack: extract `locate_existing_pack()` helper
. repack: unconditionally exclude non-kept packs

'git repack' has been taught to accept '--geometric' and '--cruft'
together. When both are given, non-cruft packs are rolled up by the
geometric repack as usual, while a separate cruft pack is written to
collect unreachable objects.

Waited for response for too long, discarded.
source: <cover.1782500507.git.me@ttaylorr.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
. checkout: extend --track with a "fetch" mode to refresh start-point
. branch: expose helpers for finding the remote owning a tracking ref

The 'git checkout --track=...' command has been taught to optionally
fetch the branch from the remote that the new branch will work with.

Discarded.
cf. <xmqq8q71clob.fsf@gitster.g>
source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
. completion: hide dotfiles by default for path completion
. completion: hide dotfiles for selected path completion

Path completion for commands like 'git rm' and 'git mv' has been
updated to hide dotfiles by default unless the user explicitly starts
the path with a dot, matching standard shell-completion behavior.

Waited for response for too long, discarded.
cf. <xmqq1pe0g08t.fsf@gitster.g>
source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>