What's cooking (2026/08 #13)

todo
Junio C Hamano 2026-08-31 11:42:13 -07:00
parent 4ea7e05419
commit 161f50fc0e
1 changed files with 315 additions and 301 deletions

View File

@ -1,10 +1,10 @@
To: git@vger.kernel.org To: git@vger.kernel.org
Subject: What's cooking in git.git (Aug 2026, #12) Subject: What's cooking in git.git (Aug 2026, #13)
X-master-at: c73e85354c275c9d409b26445089bc16940fc527 X-master-at: 1630431f326e15fcde608827b5ff38422528eb59
X-next-at: 7e5102b832995d91251fb2e4744fc476a8089c99 X-next-at: 10538fe6993d66efa04f9fa440a9c16590c0ae0a
Bcc: lwn@lwn.net, gitster@pobox.com Bcc: lwn@lwn.net, gitster@pobox.com


What's cooking in git.git (Aug 2026, #12) What's cooking in git.git (Aug 2026, #13)
----------------------------------------- -----------------------------------------


Here are the topics that have been cooking in my tree. Commits Here are the topics that have been cooking in my tree. Commits
@ -17,10 +17,10 @@ A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest of no activity (of course, it can be resubmitted when new interest
arises). arises).


The 20th batch of topics have now graduated to the 'master' branch. The 21st batch of topics have now graduated to the 'master' branch.
We have 567 non-merge commits in 'master' since Git 2.55. There We have 601 non-merge commits in 'master' since Git 2.55. There
are 76 non-merge commits cooking in 'next' (note that some have are 51 non-merge commits cooking in 'next' (note that some have
been reverted), and 215 non-merge commits, including those in and been reverted), and 187 non-merge commits, including those in and
out of 'next', in 'seen' as of this writing. out of 'next', in 'seen' as of this writing.


Copies of the source code to Git live in many repositories, and the Copies of the source code to Git live in many repositories, and the
@ -54,65 +54,209 @@ Release tarballs are available at:
-------------------------------------------------- --------------------------------------------------
[Graduated to 'master'] [Graduated to 'master']


* kh/format-rev-doc-synopsis (2026-08-17) 2 commits * fr/pack-objects-trace-pack-bytes (2026-08-19) 1 commit
(merged to 'next' on 2026-08-20 at b9c47eddd0) (merged to 'next' on 2026-08-24 at dcc6a34978)
+ doc: format-rev: use [synopsis] on code block + pack-objects: trace pack bytes written
+ doc: format-rev: quote subject placeholder before and after


The documentation for 'git format-rev' has been updated to use the The pack-objects command has been updated to record the total bytes
[synopsis] block definition on code blocks to properly highlight written to pack files in trace2 output, allowing performance
placeholders, and a quoting inconsistency in the running text has analysis of different compression settings by comparing the
been fixed. resulting pack sizes.


Graduated to 'master'. Graduated to 'master'.
cf. <xmqq33wc4dyq.fsf@gitster.g> cf. <aobFLJuiuM1EuNpv@pks.im>
source: <V4_CV_synopsis_block.b8e@msgid.xyz> cf. <20260820082102.GA2973952@coredump.intra.peff.net>
source: <c6a8cdac36d2202055d637ebcc97e484122cdcd4.1787158152.git.friel@openai.com>




* sk/object-name-use-after-free (2026-08-17) 1 commit * jt/receive-pack-pluggable-writes (2026-08-20) 9 commits
(merged to 'next' on 2026-08-20 at b0804dff5f) (merged to 'next' on 2026-08-24 at cf024e685d)
+ object-name: avoid use-after-free in get_oid_with_context_1() + odb/transaction: add transaction interface to write packfiles
+ odb: return temporary ODB source when set
+ builtin/receive-pack: explicitly pass packfile fd
+ builtin/receive-pack: report unpack errors via strbuf
+ builtin/receive-pack: lift global state out of unpack()
+ builtin/receive-pack: read unpack limit config lazily
+ builtin/receive-pack: pass shallow file explicitly
+ odb/transaction: add transaction finalize interface
+ builtin/receive-pack: properly clean up keep files


A heap-use-after-free bug in the object name parsing code when The 'git receive-pack' command has been updated to use a new ODB
reporting failures with a relative path to a sparse directory has transaction interface for writing incoming packfiles, making it more
been corrected. backend-agnostic.


Graduated to 'master'. Graduated to 'master'.
cf. <xmqq1pbw7nwi.fsf@gitster.g> cf. <aohD54ZQEyybw008@pks.im>
source: <20260817082127.81132-1-diy2903@gmail.com> cf. <xmqqo6evqzsu.fsf@gitster.g>
source: <20260820234940.894624-1-jltobler@gmail.com>


* kh/trailers-no-urls (2026-08-20) 1 commit
(merged to 'next' on 2026-08-24 at 11e10f8626)
+ trailers: stop recognizing URLs as trailers
+ Merge branch 'kh/doc-trailers' into kh/trailers-no-urls

The trailer parsing machinery has been updated to avoid mistaking
lines that begin with a URL (e.g., 'https://...') as trailer lines.
This prevents intended textual URLs from being mangled or mistakenly
treated as metadata keys.

Graduated to 'master'.
cf. <20260821004248.GA296777@coredump.intra.peff.net>
cf. <xmqqecfrqxic.fsf@gitster.g>
source: <V3_URLs_not_trailers.bfc@msgid.xyz>


* ps/odb-eagerly-load-alternates (2026-08-17) 5 commits
(merged to 'next' on 2026-08-24 at a431cd5887)
+ odb: drop `alternates_db` field
+ odb: drop `loaded_alternates` field
+ odb: eagerly initialize alternates
+ 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 is used by ps/odb-alternates-at-creation and ps/odb-pluggable-fsck.)

The object database layer has been simplified by eagerly loading
alternate object directories upon initialization, instead of
deferring it to the first object lookup. This eliminates the need
for scattered lazy-loading calls throughout the codebase and paves
the way for integrating alternates with the pluggable backends.

Graduated to 'master'.
cf. <CAOLa=ZReodSXjEbQkFoxcofMLq6mUOjXANRg7bZ2uEKKQn=DXw@mail.gmail.com>
cf. <xmqqik53qz5j.fsf@gitster.g>
source: <20260817-pks-odb-eagerly-prepare-alternates-v3-0-1115a7e02467@pks.im>


* ps/odb-generic-corrupt-objects (2026-08-19) 5 commits
(merged to 'next' on 2026-08-23 at fe72e268a1)
+ 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
(this branch is used by en/midx-missing-pack-fallback.)

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.

Graduated to 'master'.
cf. <CAOLa=ZTVxdVAJynKjb0LjmZ-+b5nQmyD0Bm-aT81rOOdJ0a5yg@mail.gmail.com>
source: <20260819-pks-odb-generic-corrupt-objects-v2-0-a984e3a0ad6f@pks.im>


* ps/odb-geometric-repack-loose-threshold (2026-08-11) 1 commit
(merged to 'next' on 2026-08-24 at f91738c4a4)
+ odb/files: be less aggressive with geometric repacking

The threshold for geometric repacking to trigger based on loose
object count has been adjusted to match that of 'git gc --auto',
preventing over-aggressive repacking during concurrent writes.

Graduated to 'master'.
cf. <aoTcxJSmKWNhnjZ9@denethor>
cf. <CABPp-BHgyVTHB_OGmCL4JprFFe6_MapOQNSjUOhJxu-+oWbErg@mail.gmail.com>
source: <20260811-pks-geometric-maintenance-reduce-frequency-v1-1-7a54c42355ac@pks.im>


* ps/odb-pluggable-pack-generation (2026-08-20) 6 commits
(merged to 'next' on 2026-08-24 at 4d8acd97d0)
+ bundle: generate packfiles via the object database
+ bundle: get (mostly) rid of `the_repository`
+ builtin/bundle: refactor option handling for progress meter
+ send-pack: generate packfiles via the object database
+ upload-pack: generate packfiles via the object database
+ odb: introduce interface to generate packfiles
(this branch is used by ps/odb-pluggable-fsck.)

The mechanism to generate a packfile corresponding to the result of
a fetch/push has been made pluggable through a set of object
database callback functions, removing hardcoded references to
'pack-objects' and enabling alternative ODBs to serve packfiles
themselves.

Graduated to 'master'.
cf. <CABPp-BHAeb5Q6kWw8e0fz9+avKyJL0_k7cUzRhesHScJjB3Xfw@mail.gmail.com>
cf. <CAOLa=ZQMjb1SzYTVVuMF0ajmre_5_q=L6bmSQwYY233f-RiVXA@mail.gmail.com>
source: <20260821-b4-pks-odb-generate-pack-v4-0-074e8bd641f8@pks.im>


* vm/complete-history (2026-08-13) 4 commits
(merged to 'next' on 2026-08-24 at f6498b4afc)
+ completion: complete 'git history split' pathspecs
+ completion: complete 'git history --update-refs' values
+ completion: complete 'git history --empty' values
+ completion: add 'git history' subcommands

The command line completion (in contrib/) has been taught to handle
the experimental 'git history' command.

Graduated to 'master'.
cf. <aoWP3TYq5rNjUx7S@pks.im>
cf. <xmqqse49uanx.fsf@gitster.g>
source: <20260813-history_autocompletion-v3-0-69eed1cea93a@kernel.org>


* yn/worktree-add-no-dwim-with-b (2026-08-20) 1 commit
(merged to 'next' on 2026-08-23 at 6e4bf24274)
+ 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.

Graduated to 'master'.
cf. <xmqqecfssnk0.fsf@gitster.g>
source: <pull.2192.v4.git.1787221888406.gitgitgadget@gmail.com>


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


* jc/die-for-incompatible-opts (2026-08-27) 1 commit * jc/checkout-refactor (2026-08-30) 8 commits
- die_for_incompatible_opts(): unbounded number of options - checkout: move post_checkout_hook() to checkout.c
- checkout: wrap overly long lines
- checkout: restructure switch, restore, and checkout entrypoints
- checkout: extract branch setup and tracking helpers
- checkout: extract option validation and pathspec helpers
- checkout: validate stage and merge option compatibility in checkout_paths()
- checkout: validate new branch name in checkout_branch()
- checkout: pass cb_option explicitly to branch name parsers


The die_for_incompatible_opt[234]() family of functions has been The front-end code for 'git checkout', 'git switch', and 'git
generalized to handle an arbitrary number of mutually exclusive restore' has been restructured to cleanly separate their pathspec
options via a variadic function. and branch handling, eliminating a common bottleneck and paving the

way to libify utility helpers.
Will merge to 'next'?
source: <xmqqbjana2wv.fsf@gitster.g>


* jc/you-still-use-that (2026-08-27) 1 commit
- you_still_use_that(): reword the instructions

The instructions for deprecated commands emitted by
you_still_use_that() have been reworded to clarify that the removal
decision is final and to provide more assertive guidance on finding
a replacement.

Will merge to 'next'?
source: <xmqqse3z8m5g.fsf_-_@gitster.g>


* 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. Needs review.
source: <20260827234345.1037130-1-wesleys@opperschaap.net> source: <20260830204835.1040408-1-gitster@pobox.com>


* hk/typofix (2026-08-30) 1 commit
- typofix: fix spelling mistakes in comments and test description

Various spelling mistakes in comments and test descriptions have
been corrected.

Expecting a reroll.
cf. <DL3BN8L6HK8O.T44IZ297KCF3@gmail.com>
source: <20260830-typo-v1-1-d397c8dfb301@gmail.com>


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

he 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: <20260829183659.29947-1-lorenz.leutgeb@posteo.eu>


-------------------------------------------------- --------------------------------------------------
[Stalled] [Stalled]
@ -195,7 +339,7 @@ Release tarballs are available at:
source: <cover.1784927134.git.ttaylorr@openai.com> source: <cover.1784927134.git.ttaylorr@openai.com>




* tc/replay-linearize (2026-07-28) 3 commits * tc/replay-linearize (2026-08-31) 3 commits
- replay: offer an option to linearize the commit topology - replay: offer an option to linearize the commit topology
- replay: resolve the replay base outside pick_regular_commit() - replay: resolve the replay base outside pick_regular_commit()
- replay: add helper to put entry into replayed_commits - replay: add helper to put entry into replayed_commits
@ -204,10 +348,8 @@ Release tarballs are available at:
drop merge commits and linearize the replayed history, mimicking 'git drop merge commits and linearize the replayed history, mimicking 'git
rebase --no-rebase-merges'. rebase --no-rebase-merges'.


Waiting for response for too long, stalled. Needs review.
cf. <anYLeQj4Sx2vZqvy@denethor> source: <20260831-toon-git-replay-drop-merges-v9-0-61c4232c6f36@iotcl.com>
cf. <CABPp-BEFGku8msiJCcXburV+tcersr6uqEumKaPh-TguA1LjSg@mail.gmail.com>
source: <20260728-toon-git-replay-drop-merges-v8-0-ced11dffe749@iotcl.com>




* cl/regexec-macos-leak (2026-07-28) 2 commits * cl/regexec-macos-leak (2026-07-28) 2 commits
@ -248,6 +390,27 @@ Release tarballs are available at:
-------------------------------------------------- --------------------------------------------------
[Cooking] [Cooking]


* jc/you-still-use-that (2026-08-27) 1 commit
(merged to 'next' on 2026-08-30 at d8f3941368)
+ you_still_use_that(): reword the instructions

The instructions for deprecated commands emitted by
you_still_use_that() have been reworded to clarify that the removal
decision is final and to provide more assertive guidance on finding
a replacement.

Will merge to 'master'.
source: <xmqqse3z8m5g.fsf_-_@gitster.g>


* 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: <20260827234345.1037130-1-wesleys@opperschaap.net>


* dw/config-read-both-global (2026-08-23) 3 commits * dw/config-read-both-global (2026-08-23) 3 commits
- config: read global scope via config_sequence - config: read global scope via config_sequence
- config: let sequence require a successful file - config: let sequence require a successful file
@ -297,20 +460,6 @@ Release tarballs are available at:
source: <20260824-740-optimize-reloading-the-reftable-stack-v2-0-9c9de2eb0af7@gmail.com> source: <20260824-740-optimize-reloading-the-reftable-stack-v2-0-9c9de2eb0af7@gmail.com>




* kh/format-patch-range-diff-notes (2026-08-24) 3 commits
- format-patch: learn --[no-]range-diff-notes
- revision.h: rename struct member to reflect notes role
- format-patch: simplify get_notes_arg parameters

The 'format-patch' command has been updated with options to
configure notes specifically for range-diff output, allowing them to
differ from the notes displayed on the patches themselves.

Retracted.
cf. <9335a35f-e9c0-4e62-812c-e5855c201003@app.fastmail.com>
source: <CV_format-patch_learn_--range-diff-notes.c57@msgid.xyz>


* jc/rerere-doc-typofix (2026-08-24) 1 commit * jc/rerere-doc-typofix (2026-08-24) 1 commit
(merged to 'next' on 2026-08-25 at 62bdec98f9) (merged to 'next' on 2026-08-25 at 62bdec98f9)
+ rerere: technical documentation typofix + rerere: technical documentation typofix
@ -322,7 +471,7 @@ Release tarballs are available at:
source: <xmqqtsojp4zf.fsf@gitster.g> source: <xmqqtsojp4zf.fsf@gitster.g>




* ps/odb-alternates-at-creation (2026-08-25) 8 commits * ps/odb-alternates-at-creation (2026-08-31) 8 commits
- odb/source: remove the ability to write alternates - odb/source: remove the ability to write alternates
- builtin/clone: write alternates via `odb_create_on_disk()` - builtin/clone: write alternates via `odb_create_on_disk()`
- odb/source: support writing alternates when creating the database - odb/source: support writing alternates when creating the database
@ -332,19 +481,16 @@ Release tarballs are available at:
- builtin/clone: move around `setup_reference()` - builtin/clone: move around `setup_reference()`
- builtin/clone: defer setup of the object database - builtin/clone: defer setup of the object database
- Merge branch 'ps/odb-eagerly-load-alternates' into ps/odb-alternates-at-creation - Merge branch 'ps/odb-eagerly-load-alternates' into ps/odb-alternates-at-creation
(this branch uses ps/odb-eagerly-load-alternates.)


The setup of alternates has been deferred to object database The setup of alternates has been deferred to object database
creation time during clone, which drops the unused ad-hoc alternate creation time during clone, which drops the unused ad-hoc alternate
writing API, simplifying the object database backend interface. writing API, simplifying the object database backend interface.


Waiting for response. Needs review.
cf. <874igeuwja.fsf@emacs.iotcl.com> source: <20260831-pks-odb-write-alternates-at-creation-time-v2-0-aecd2382ba1c@pks.im>
cf. <8733vyuwid.fsf@emacs.iotcl.com>
source: <20260825-pks-odb-write-alternates-at-creation-time-v1-0-911513ba95c3@pks.im>




* ps/odb-pluggable-fsck (2026-08-25) 10 commits * ps/odb-pluggable-fsck (2026-08-30) 10 commits
- builtin/fsck: move loose object verification into the loose source - builtin/fsck: move loose object verification into the loose source
- builtin/fsck: move multi-pack index verification into the packed source - builtin/fsck: move multi-pack index verification into the packed source
- builtin/fsck: move bitmap verification into the packed source - builtin/fsck: move bitmap verification into the packed source
@ -357,17 +503,15 @@ Release tarballs are available at:
- builtin/fsck: use `fsck_obj_buffer()` when checking loose objects - builtin/fsck: use `fsck_obj_buffer()` when checking loose objects
- Merge branch 'ps/odb-eagerly-load-alternates' into ps/odb-pluggable-fsck - Merge branch 'ps/odb-eagerly-load-alternates' into ps/odb-pluggable-fsck
- Merge branch 'ps/odb-pluggable-pack-generation' into ps/odb-pluggable-fsck - Merge branch 'ps/odb-pluggable-pack-generation' into ps/odb-pluggable-fsck
(this branch uses ps/odb-eagerly-load-alternates and ps/odb-pluggable-pack-generation.)


The consistency checks for the object database (fsck) have been The consistency checks for the object database (fsck) have been
decoupled from the generic builtin implementation and moved into the decoupled from the generic builtin implementation and moved into the
backend-specific object source layers, making them pluggable for backend-specific object source layers, making them pluggable for
different object storage formats. different object storage formats.


Waiting for response. Needs review.
cf. <CAOLa=ZRYSje476JJDr5b8hHozwa5=4bw4E30i3AfLX176=12ZA@mail.gmail.com> cf. <CAOLa=ZSi1TiTZ=i=SQp+pmjTOm2_wY-NiCotx66+M6VDKx=ZXg@mail.gmail.com>
cf. <CAOLa=ZSmjfCD-5fPgJm4cbaKZOQa0S62wAf+vSxWFWLrrgczBA@mail.gmail.com> source: <20260831-pks-odb-source-fsck-v2-0-f9b16ef4957b@pks.im>
source: <20260825-pks-odb-source-fsck-v1-0-b756de0bf24f@pks.im>




* rs/worktree-add-basename-fixes (2026-08-25) 4 commits * rs/worktree-add-basename-fixes (2026-08-25) 4 commits
@ -430,24 +574,11 @@ Release tarballs are available at:
`fetch.packfileURIThreads` configuration is set, significantly `fetch.packfileURIThreads` configuration is set, significantly
speeding up fetches from servers that advertise multiple packfiles. speeding up fetches from servers that advertise multiple packfiles.


Needs review. Expecting a reroll.
cf. <apUUiv4SD0-W8QS3@pks.im>
source: <20260821-pks-parallelize-fetching-packfile-uris-v1-0-0df52d9427ce@pks.im> source: <20260821-pks-parallelize-fetching-packfile-uris-v1-0-0df52d9427ce@pks.im>




* ps/odb-geometric-repack-loose-threshold (2026-08-11) 1 commit
(merged to 'next' on 2026-08-24 at f91738c4a4)
+ odb/files: be less aggressive with geometric repacking

The threshold for geometric repacking to trigger based on loose
object count has been adjusted to match that of 'git gc --auto',
preventing over-aggressive repacking during concurrent writes.

Will merge to 'master'.
cf. <aoTcxJSmKWNhnjZ9@denethor>
cf. <CABPp-BHgyVTHB_OGmCL4JprFFe6_MapOQNSjUOhJxu-+oWbErg@mail.gmail.com>
source: <20260811-pks-geometric-maintenance-reduce-frequency-v1-1-7a54c42355ac@pks.im>


* kn/receive-report-hook (2026-08-26) 3 commits * kn/receive-report-hook (2026-08-26) 3 commits
- hook: introduce the receive-report hook - hook: introduce the receive-report hook
- receive-pack: move message generation to separate function - receive-pack: move message generation to separate function
@ -457,62 +588,44 @@ Release tarballs are available at:
reference updates and allows the server to filter or modify the reference updates and allows the server to filter or modify the
packet-line status report sent back to the client. packet-line status report sent back to the client.


Needs review. Waiting for response.
cf. <apUi8I-b69XxDAYY@pks.im>
source: <20260826-758-introduce-hook-v4-0-6b14975ad957@gmail.com> source: <20260826-758-introduce-hook-v4-0-6b14975ad957@gmail.com>




* en/midx-missing-pack-fallback (2026-08-25) 4 commits * en/midx-missing-pack-fallback (2026-08-29) 4 commits
- packfile: recover when a multi-pack-index names a removed pack - packfile: recover when a multi-pack-index names a removed pack
- packfile: recover object lookups racing a concurrent repack - mktree: do not use OBJECT_INFO_QUICK when checking objects
- mktree: plug per-tree leak in --batch mode - mktree: plug per-tree leak in --batch mode
- replay: fail gracefully when a merge input is unreadable - replay: fail gracefully when a merge input is unreadable
- Merge branch 'ps/odb-generic-corrupt-objects' into en/midx-missing-pack-fallback - Merge branch 'ps/odb-generic-corrupt-objects' into en/midx-missing-pack-fallback
(this branch uses ps/odb-generic-corrupt-objects.)


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


Expecting a reroll. Will merge to 'next'?
cf. <CABPp-BEmReAR-f-aweM=f=5QhRPxG1K-KLTsbyRt2aDQD_QnVA@mail.gmail.com> cf. <apVa72AU-cD4IO46@pks.im>
source: <pull.2207.v2.git.1787684429.gitgitgadget@gmail.com> cf. <20260829120721.GF40814@coredump.intra.peff.net>
cf. <20260829114620.GE40814@coredump.intra.peff.net>
source: <pull.2207.v3.git.1787986831.gitgitgadget@gmail.com>




* ll/zsh-complete-git-potty-options (2026-08-19) 1 commit * ll/zsh-complete-git-potty-options (2026-08-19) 1 commit
- completion: zsh: support completion after "git -C <path>" (merged to 'next' on 2026-08-31 at fee97cc13c)
+ completion: zsh: support completion after "git -C <path>"


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


Will merge to 'next'? Will merge to 'master'.
cf. <CALnO6CC35iuyJpKZtkEN7fGuGK7zKd_jbebyZdKSQ1pyfOBRZA@mail.gmail.com> cf. <CALnO6CC35iuyJpKZtkEN7fGuGK7zKd_jbebyZdKSQ1pyfOBRZA@mail.gmail.com>
cf. <xmqqld9sczd0.fsf@gitster.g> cf. <xmqqld9sczd0.fsf@gitster.g>
source: <pull.2155.v2.git.1787144872870.gitgitgadget@gmail.com> source: <pull.2155.v2.git.1787144872870.gitgitgadget@gmail.com>




* ps/odb-generic-corrupt-objects (2026-08-19) 5 commits
(merged to 'next' on 2026-08-23 at fe72e268a1)
+ 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
(this branch is used by en/midx-missing-pack-fallback.)

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.

Will merge to 'master'.
cf. <CAOLa=ZTVxdVAJynKjb0LjmZ-+b5nQmyD0Bm-aT81rOOdJ0a5yg@mail.gmail.com>
source: <20260819-pks-odb-generic-corrupt-objects-v2-0-a984e3a0ad6f@pks.im>


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


@ -526,21 +639,6 @@ Release tarballs are available at:
source: <20260819-http-preserve-wwwauth-redirect-v2-1-4c61039432b0@nvidia.com> source: <20260819-http-preserve-wwwauth-redirect-v2-1-4c61039432b0@nvidia.com>




* fr/pack-objects-trace-pack-bytes (2026-08-19) 1 commit
(merged to 'next' on 2026-08-24 at dcc6a34978)
+ 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.

Will merge to 'master'.
cf. <aobFLJuiuM1EuNpv@pks.im>
cf. <20260820082102.GA2973952@coredump.intra.peff.net>
source: <c6a8cdac36d2202055d637ebcc97e484122cdcd4.1787158152.git.friel@openai.com>


* kh/doc-datamodel (2026-08-23) 4 commits * kh/doc-datamodel (2026-08-23) 4 commits
- doc: datamodel: link to the glossary - doc: datamodel: link to the glossary
- doc: glossary: link four of the terms to gitdatamodel(7) - doc: glossary: link four of the terms to gitdatamodel(7)
@ -550,12 +648,14 @@ Release tarballs are available at:
The gitdatamodel documentation page has been linked from a handful The gitdatamodel documentation page has been linked from a handful
of key documentaiton pages. of key documentaiton pages.


Needs review. Will merge to 'next'?
cf. <apUrC_ROf9lyiuAm@pks.im>
source: <V2_CV_doc_datamodel_advertize.c20@msgid.xyz> source: <V2_CV_doc_datamodel_advertize.c20@msgid.xyz>




* yn/worktree-repair-relative (2026-08-28) 1 commit * yn/worktree-repair-relative (2026-08-28) 1 commit
- worktree repair: detect relative path in .git file correctly (merged to 'next' on 2026-08-31 at 15072b025f)
+ worktree repair: detect relative path in .git file correctly


The git worktree repair command failed to rewrite the .git file of 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 a working tree from a relative path to an absolute path when the
@ -564,7 +664,7 @@ Release tarballs are available at:
the path originally recorded in the file was absolute, and this new the path originally recorded in the file was absolute, and this new
capability is used to correctly detect such mismatches. capability is used to correctly detect such mismatches.


Will merge to 'next'? Will merge to 'master'.
cf. <xmqqh5ke3zxt.fsf@gitster.g> cf. <xmqqh5ke3zxt.fsf@gitster.g>
source: <pull.2205.v4.git.1787930386252.gitgitgadget@gmail.com> source: <pull.2205.v4.git.1787930386252.gitgitgadget@gmail.com>


@ -584,28 +684,6 @@ Release tarballs are available at:
source: <V2_CV_format-rev_three_more_opts.bd3@msgid.xyz> source: <V2_CV_format-rev_three_more_opts.bd3@msgid.xyz>




* ps/odb-pluggable-pack-generation (2026-08-20) 6 commits
(merged to 'next' on 2026-08-24 at 4d8acd97d0)
+ bundle: generate packfiles via the object database
+ bundle: get (mostly) rid of `the_repository`
+ builtin/bundle: refactor option handling for progress meter
+ send-pack: generate packfiles via the object database
+ upload-pack: generate packfiles via the object database
+ odb: introduce interface to generate packfiles
(this branch is used by ps/odb-pluggable-fsck.)

The mechanism to generate a packfile corresponding to the result of
a fetch/push has been made pluggable through a set of object
database callback functions, removing hardcoded references to
'pack-objects' and enabling alternative ODBs to serve packfiles
themselves.

Will merge to 'master'.
cf. <CABPp-BHAeb5Q6kWw8e0fz9+avKyJL0_k7cUzRhesHScJjB3Xfw@mail.gmail.com>
cf. <CAOLa=ZQMjb1SzYTVVuMF0ajmre_5_q=L6bmSQwYY233f-RiVXA@mail.gmail.com>
source: <20260821-b4-pks-odb-generate-pack-v4-0-074e8bd641f8@pks.im>


* ty/repository-fetch-if-missing (2026-08-14) 1 commit * ty/repository-fetch-if-missing (2026-08-14) 1 commit
(merged to 'next' on 2026-08-25 at 2cc77c1ca1) (merged to 'next' on 2026-08-25 at 2cc77c1ca1)
+ repository: move fetch_if_missing into struct repository + repository: move fetch_if_missing into struct repository
@ -626,55 +704,12 @@ Release tarballs are available at:
A few tests for the reference handling subsystem have been added to A few tests for the reference handling subsystem have been added to
exercise the handling of forbidden characters and symbolic references. exercise the handling of forbidden characters and symbolic references.


Needs review. Will merge to 'next'?
cf. <apUdDyG98D5upbhj@pks.im>
source: <pull.2203.v2.git.1787264417682.gitgitgadget@gmail.com> source: <pull.2203.v2.git.1787264417682.gitgitgadget@gmail.com>
source: <pull.2204.v3.git.1787763107646.gitgitgadget@gmail.com> source: <pull.2204.v3.git.1787763107646.gitgitgadget@gmail.com>




* jt/receive-pack-pluggable-writes (2026-08-20) 9 commits
(merged to 'next' on 2026-08-24 at cf024e685d)
+ odb/transaction: add transaction interface to write packfiles
+ odb: return temporary ODB source when set
+ builtin/receive-pack: explicitly pass packfile fd
+ builtin/receive-pack: report unpack errors via strbuf
+ builtin/receive-pack: lift global state out of unpack()
+ builtin/receive-pack: read unpack limit config lazily
+ builtin/receive-pack: pass shallow file explicitly
+ odb/transaction: add transaction finalize interface
+ builtin/receive-pack: properly clean up keep files

The 'git receive-pack' command has been updated to use a new ODB
transaction interface for writing incoming packfiles, making it more
backend-agnostic.

Will merge to 'master'.
cf. <aohD54ZQEyybw008@pks.im>
cf. <xmqqo6evqzsu.fsf@gitster.g>
source: <20260820234940.894624-1-jltobler@gmail.com>


* ps/odb-eagerly-load-alternates (2026-08-17) 5 commits
(merged to 'next' on 2026-08-24 at a431cd5887)
+ odb: drop `alternates_db` field
+ odb: drop `loaded_alternates` field
+ odb: eagerly initialize alternates
+ 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 is used by ps/odb-alternates-at-creation and ps/odb-pluggable-fsck.)

The object database layer has been simplified by eagerly loading
alternate object directories upon initialization, instead of
deferring it to the first object lookup. This eliminates the need
for scattered lazy-loading calls throughout the codebase and paves
the way for integrating alternates with the pluggable backends.

Will merge to 'master'.
cf. <CAOLa=ZReodSXjEbQkFoxcofMLq6mUOjXANRg7bZ2uEKKQn=DXw@mail.gmail.com>
cf. <xmqqik53qz5j.fsf@gitster.g>
source: <20260817-pks-odb-eagerly-prepare-alternates-v3-0-1115a7e02467@pks.im>


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


@ -683,8 +718,8 @@ Release tarballs are available at:
TLS handshake via a new 'http.sslVerifyStatus' configuration TLS handshake via a new 'http.sslVerifyStatus' configuration
variable. variable.


Waiting for review. Waiting for response.
cf. <CALgUfNjd_y-e-zTKJ31o8_bQuRw8wFWe=sdsf2KJ7LOmmO21aQ@mail.gmail.com> cf. <xmqqecfez7ie.fsf@gitster.g>
source: <20260818214858.65122-1-ggordon@gitlab.com> source: <20260818214858.65122-1-ggordon@gitlab.com>




@ -702,23 +737,7 @@ Release tarballs are available at:
source: <20260807085932.3958759-1-cat@malon.dev> source: <20260807085932.3958759-1-cat@malon.dev>




* vm/complete-history (2026-08-13) 4 commits * dk/use-nsec-runtime (2026-08-29) 3 commits
(merged to 'next' on 2026-08-24 at f6498b4afc)
+ completion: complete 'git history split' pathspecs
+ completion: complete 'git history --update-refs' values
+ completion: complete 'git history --empty' values
+ completion: add 'git history' subcommands

The command line completion (in contrib/) has been taught to handle
the experimental 'git history' command.

Will merge to 'master'.
cf. <aoWP3TYq5rNjUx7S@pks.im>
cf. <xmqqse49uanx.fsf@gitster.g>
source: <20260813-history_autocompletion-v3-0-69eed1cea93a@kernel.org>


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


Expecting a (hopefully a small and final) reroll. Will merge to 'next'?
cf. <xmqqa4qgsn20.fsf@gitster.g> cf. <xmqq8q5n1fa2.fsf@gitster.g>
cf. <aoaP7oIrR_Bpvx34@pks.im> cf. <apWUGfzQxx7vArpo@pks.im>
cf. <CALnO6CC-=0X2r6USab=6MBG-yWYrwrA6zEXnDC91P8q4WDeY8Q@mail.gmail.com> source: <cover.1788010335.git.ben.knoble@gmail.com>
source: <cover.1787231825.git.ben.knoble@gmail.com>




* bc/restrict-hex-to-lowercase (2026-07-29) 6 commits * bc/restrict-hex-to-lowercase (2026-07-29) 6 commits
@ -778,65 +796,34 @@ Release tarballs are available at:
source: <pull.2195.v2.git.1786521173.gitgitgadget@gmail.com> source: <pull.2195.v2.git.1786521173.gitgitgadget@gmail.com>




* yn/worktree-add-no-dwim-with-b (2026-08-20) 1 commit
(merged to 'next' on 2026-08-23 at 6e4bf24274)
+ 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 'master'.
cf. <xmqqecfssnk0.fsf@gitster.g>
source: <pull.2192.v4.git.1787221888406.gitgitgadget@gmail.com>


* yn/worktree-ambiguous-remote-advice (2026-08-27) 4 commits * yn/worktree-ambiguous-remote-advice (2026-08-27) 4 commits
- worktree add: treat multiple matches with --guess-remote as an error (merged to 'next' on 2026-08-30 at 8e7670286a)
- worktree add: improve message for ambiguous remote branch name + worktree add: treat multiple matches with --guess-remote as an error
- checkout: improve message for ambiguous remote branch name + worktree add: improve message for ambiguous remote branch name
- checkout: extract function to display advice for ambiguous remotes + 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 'git worktree add' did not prevent DWIM behavior when '-b' or '-B' was
specified, which has been corrected. specified, which has been corrected.


Will merge to 'next'? Will merge to 'master'.
cf. <xmqq4igfa2pv.fsf@gitster.g> cf. <xmqq4igfa2pv.fsf@gitster.g>
source: <pull.2197.v10.git.1787841717.gitgitgadget@gmail.com> source: <pull.2197.v10.git.1787841717.gitgitgadget@gmail.com>




* hn/ci-cancel-stale-pr-runs (2026-07-31) 1 commit * hn/ci-cancel-stale-pr-runs (2026-08-31) 1 commit
- ci: cancel stale pull request workflow runs - ci: cancel stale pull request workflow runs


GitHub Actions CI workflow runs triggered by pull requests have GitHub Actions CI workflow runs triggered by pull requests have
been configured to cancel older runs when a new push is made to the been configured to cancel older runs when a new push is made to the
same pull request. same pull request.


Waiting for response. Will merge to 'next'?
cf. <xmqqa4q8fyjh.fsf@gitster.g> source: <pull.2369.v3.git.git.1788193095825.gitgitgadget@gmail.com>
source: <pull.2369.git.git.1785492641983.gitgitgadget@gmail.com>




* kh/trailers-no-urls (2026-08-20) 1 commit * hn/checkout-m-autostash-refine (2026-08-31) 1 commit
(merged to 'next' on 2026-08-24 at 11e10f8626) - checkout: print blank line after autostash conflict advice
+ trailers: stop recognizing URLs as trailers
+ Merge branch 'kh/doc-trailers' into kh/trailers-no-urls

The trailer parsing machinery has been updated to avoid mistaking
lines that begin with a URL (e.g., 'https://...') as trailer lines.
This prevents intended textual URLs from being mangled or mistakenly
treated as metadata keys.

Will merge to 'master'.
cf. <20260821004248.GA296777@coredump.intra.peff.net>
cf. <xmqqecfrqxic.fsf@gitster.g>
source: <V3_URLs_not_trailers.bfc@msgid.xyz>


* hn/checkout-m-autostash-refine (2026-07-25) 2 commits
- checkout -m: refine autostash fallback
- sequencer: teach autostash apply to report conflicts


The autostash fallback in 'git checkout -m' has been refined to only The autostash fallback in 'git checkout -m' has been refined to only
retry when there are local changes. Additionally, a blank line now retry when there are local changes. Additionally, a blank line now
@ -844,8 +831,8 @@ Release tarballs are available at:
branch-switch message. branch-switch message.


Waiting for response. Waiting for response.
cf. <ec6c3986-94ab-4692-a4c2-47569b77e9ca@gmail.com> cf. <xmqq4igaxl5t.fsf@gitster.g>
source: <pull.2364.git.git.1784993669.gitgitgadget@gmail.com> source: <pull.2364.v2.git.git.1788177601572.gitgitgadget@gmail.com>




* kj/repo-info-more-path-keys (2026-08-25) 7 commits * kj/repo-info-more-path-keys (2026-08-25) 7 commits
@ -866,7 +853,7 @@ Release tarballs are available at:
source: <20260825175818.645579-1-jayatheerthkulkarni2005@gmail.com> source: <20260825175818.645579-1-jayatheerthkulkarni2005@gmail.com>




* tc/last-modified-bloom (2026-08-07) 6 commits * tc/last-modified-bloom (2026-08-31) 6 commits
- last-modified: keep per-path Bloom filters for wildcard pathspecs - last-modified: keep per-path Bloom filters for wildcard pathspecs
- last-modified: check pathspec against Bloom filter first - last-modified: check pathspec against Bloom filter first
- revision: add Bloom check that includes parent directories - revision: add Bloom check that includes parent directories
@ -879,12 +866,11 @@ Release tarballs are available at:
to pre-filter commits, and maintains per-path Bloom filters even when to pre-filter commits, and maintains per-path Bloom filters even when
wildcard pathspecs are used. wildcard pathspecs are used.


Waiting for response. Needs review.
cf. <xmqqtsp4a6c2.fsf@gitster.g> source: <20260831-toon-speed-up-last-modified-v3-0-2bbb864acf93@iotcl.com>
source: <20260807-toon-speed-up-last-modified-v2-0-7d87bbdeaf9b@iotcl.com>




* ds/trace2-tolerate-failed-timestamp (2026-08-25) 7 commits * ds/trace2-tolerate-failed-timestamp (2026-08-31) 7 commits
- trace2: remove use of xcalloc() - trace2: remove use of xcalloc()
- trace2: remove use of ALLOC_GROW() - trace2: remove use of ALLOC_GROW()
- trace2: remove use of xstrfmt() - trace2: remove use of xstrfmt()
@ -893,14 +879,12 @@ Release tarballs are available at:
- trace2: tolerate failed timestamp formatting - trace2: tolerate failed timestamp formatting
- banned-die: create header for banning of functions - banned-die: create header for banning of functions


The trace2 API has been updated to avoid calling 'die()' (by banning Functions like `xstrfmt()` and `xcalloc()` have been banned from use
the use of certain functions like xcalloc and xstrfmt) to prevent in the trace2 API codebase to prevent calls to `die()` which lead to
unwanted process exits and recursion. unwanted process exits and recursion when memory allocation fails.


Waiting for response. Needs review.
cf. <CABPp-BHxpt1UBTY5LCn9OFMZ6EtOcUPc-61RMWvjpjDBmv1rzg@mail.gmail.com> source: <pull.2178.v3.git.1788197143.gitgitgadget@gmail.com>
cf. <20260827052318.GC176544@coredump.intra.peff.net>
source: <pull.2178.v2.git.1787684181.gitgitgadget@gmail.com>




* pz/fetch-submodule-errors-config (2026-07-16) 2 commits * pz/fetch-submodule-errors-config (2026-07-16) 2 commits
@ -918,14 +902,14 @@ Release tarballs are available at:




* gr/add-e-use-apply-api (2026-07-10) 1 commit * gr/add-e-use-apply-api (2026-07-10) 1 commit
- builtin/add.c: replace run_command() with direct apply_all_patches() call (merged to 'next' on 2026-08-31 at 04ee2ac5c5)
+ builtin/add.c: replace run_command() with direct apply_all_patches() call


The application of the edited patch in 'git add -e' has been The application of the edited patch in 'git add -e' has been
refactored to use the internal apply API directly, avoiding the need refactored to use the internal apply API directly, avoiding the need
to spawn a 'git apply' subprocess. to spawn a 'git apply' subprocess.


Will merge to 'next'? Will merge to 'master'.
cf. <xmqq8q6to4em.fsf@gitster.g>
cf. <xmqqbjaoiyzx.fsf@gitster.g> cf. <xmqqbjaoiyzx.fsf@gitster.g>
source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com> source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


@ -938,7 +922,8 @@ Release tarballs are available at:
'--empty' option, allowing it to be dropped, kept, or to halt the '--empty' option, allowing it to be dropped, kept, or to halt the
rebase. rebase.


Needs review. Waiting for response.
cf. <511300fe-112d-4f20-bd3f-e401e68c4a27@gmail.com>
source: <20260827-fz-autosquash-empty-v4-1-f98ffd575780@gmail.com> source: <20260827-fz-autosquash-empty-v4-1-f98ffd575780@gmail.com>




@ -951,7 +936,8 @@ Release tarballs are available at:
to use atomic filesystem operations, preventing race conditions when to use atomic filesystem operations, preventing race conditions when
Apache handles concurrent requests. Apache handles concurrent requests.


Needs review. Expecting a reroll.
cf. <CAC2Qwm+L01XZgys2NGtZwWfVapWmnqDbsevt3Z4WKpS9EoP65A@mail.gmail.com>
source: <pull.2171.v3.git.1786583137.gitgitgadget@gmail.com> source: <pull.2171.v3.git.1786583137.gitgitgadget@gmail.com>




@ -1030,9 +1016,9 @@ Release tarballs are available at:
above the selected base were incorrectly skipped by the pack exclusion above the selected base were incorrectly skipped by the pack exclusion
logic, and reachability closure for bitmaps was broken. logic, and reachability closure for bitmaps was broken.


Waiting for review. Expecting a reroll.
cf. <an2FAWvyfX2LuGsG@pks.im> cf. <an4uIQA09rDCwwBp@com-79390>
cf. <ao945zRwDt9ThFTG@com-79390> cf. <apUbQ4S-zJGtBeu2@pks.im>
source: <cover.1781294771.git.me@ttaylorr.com> source: <cover.1781294771.git.me@ttaylorr.com>




@ -1060,3 +1046,31 @@ Release tarballs are available at:
Expecting a reroll. Expecting a reroll.
cf. <CAC2Qwm+kzT_3_GKrpay=JLGYsxS10oWCg2MJPHrCVogFHA0OdA@mail.gmail.com> cf. <CAC2Qwm+kzT_3_GKrpay=JLGYsxS10oWCg2MJPHrCVogFHA0OdA@mail.gmail.com>
source: <20260801174156.2998808-1-mmontalbo@gmail.com> source: <20260801174156.2998808-1-mmontalbo@gmail.com>

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

* kh/format-patch-range-diff-notes (2026-08-24) 3 commits
. format-patch: learn --[no-]range-diff-notes
. revision.h: rename struct member to reflect notes role
. format-patch: simplify get_notes_arg parameters

The 'format-patch' command has been updated with options to
configure notes specifically for range-diff output, allowing them to
differ from the notes displayed on the patches themselves.

Retracted.
cf. <9335a35f-e9c0-4e62-812c-e5855c201003@app.fastmail.com>
source: <CV_format-patch_learn_--range-diff-notes.c57@msgid.xyz>


* jc/die-for-incompatible-opts (2026-08-27) 1 commit
. die_for_incompatible_opts(): unbounded number of options

The die_for_incompatible_opt[234]() family of functions has been
generalized to handle an arbitrary number of mutually exclusive
options via a variadic function.

Retracted.
cf. <xmqqfqzv1g6z.fsf@gitster.g>
source: <xmqqbjana2wv.fsf@gitster.g>