What's cooking (2026/09 #03)

todo
Junio C Hamano 2026-09-07 22:29:48 -07:00
parent 86b67bb8da
commit f4c47e977d
1 changed files with 260 additions and 202 deletions

View File

@ -1,10 +1,10 @@
To: git@vger.kernel.org
Subject: What's cooking in git.git (Sep 2026, #02)
X-master-at: 3cb9185f65410273787f74333cc027d2ea5daada
X-next-at: 73a4cd73de3e5a9f546c977afafb394d293a2882
Subject: What's cooking in git.git (Sep 2026, #03)
X-master-at: b8242b093d9e941a34460d715e3ce616a34ac3fe
X-next-at: 20c0e7c0fb98c217fa676fa78369db4069ba6563
Bcc: lwn@lwn.net, gitster@pobox.com

What's cooking in git.git (Sep 2026, #02)
What's cooking in git.git (Sep 2026, #03)
-----------------------------------------

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

The 22nd batch of topics have now graduated to the 'master' branch.
We have 604 non-merge commits in 'master' since Git 2.55. There
are 66 non-merge commits cooking in 'next' (note that some have
been reverted), and 223 non-merge commits, including those in and
The 23rd batch of topics have now graduated to the 'master' branch.
We have 616 non-merge commits in 'master' since Git 2.55. There
are 72 non-merge commits cooking in 'next' (note that some have
been reverted), and 219 non-merge commits, including those in and
out of 'next', in 'seen' as of this writing.

Copies of the source code to Git live in many repositories, and the
@ -51,72 +51,151 @@ Release tarballs are available at:

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

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

* gr/add-e-use-apply-api (2026-07-10) 1 commit
(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
refactored to use the internal apply API directly, avoiding the need
to spawn a 'git apply' subprocess.

Graduated to 'master'.
cf. <xmqqbjaoiyzx.fsf@gitster.g>
source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


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

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


* kn/reftable-optimize-reloading (2026-08-24) 4 commits
(merged to 'next' on 2026-08-28 at d714ed570a)
+ reftable/stack: avoid reloading the stack when already locked
+ reftable/stack: move list lock to `struct reftable_stack`
+ reftable/stack: rename reftable_stack_new_addition()
+ reftable/stack: remove `REFTABLE_STACK_NEW_ADDITION_RELOAD`

The reftable code has been optimized to avoid an unnecessary
stat/reload of the stack when an addition already holds the
list_file lock, reducing the number of newfstatat syscalls from
linear to constant when writing refs.

Graduated to 'master'.
cf. <ao1uqpCxFHlOyTV-@pks.im>
cf. <20260824225202.GA190620@coredump.intra.peff.net>
source: <20260824-740-optimize-reloading-the-reftable-stack-v2-0-9c9de2eb0af7@gmail.com>


* ll/zsh-complete-git-potty-options (2026-08-19) 1 commit
(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
correctly locate the Git command after global options like '-C' by
properly skipping them, similar to how the bash completion does.

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


* yn/worktree-ambiguous-remote-advice (2026-08-27) 4 commits
(merged to 'next' on 2026-08-30 at 8e7670286a)
+ worktree add: treat multiple matches with --guess-remote as an error
+ 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 checkout' and 'git worktree add' makes guesses based on a name
of a remote-tracking branch, but does not give an error when such a
remote-tracking branch cannot be uniquely identified, which has
been corrected.

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


* yn/worktree-repair-relative (2026-08-28) 1 commit
(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
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.

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

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

* jc/history-missing-tree-errorfix (2026-09-02) 1 commit
- history: do not dereference NULL when parent tree is missing
* jk/ci-bump-debian-to-12 (2026-09-05) 1 commit
- ci: bump debian-11 job to debian-12

Running "git history" in a corrupt repository can (unsurprisingly)
segfault when a necessary tree object is not found.
The CI job for Debian 11 has been updated to use Debian 12, as the
former is now out of the LTS period.

Will merge to 'next'.
source: <20260905135822.GA3914811@coredump.intra.peff.net>


* tc/push-force-if-includes-fixes (2026-09-04) 2 commits
- push: fix --force-if-includes detached HEAD 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.

Expecting a reroll.
cf. <CAHLx=O=tVhtiZpaRP9TpfiBfOMS2xPe3c3=mC3VNEdBrLOioFg@mail.gmail.com>
source: <20260904210122.431757-1-tyler@tylercipriani.com>


* as/cherry-pick-no-commit-doc (2026-09-05) 2 commits
- doc: cherry-pick: note --no-commit skips CHERRY_PICK_HEAD
- t3507: check no CHERRY_PICK_HEAD after conflicting --no-commit

The documentation for 'git cherry-pick' has been updated to clarify
that the '--no-commit' option intentionally skips setting the
'CHERRY_PICK_HEAD' ref. A test has also been added to ensure this
behavior holds even when the operation stops for conflicts.

Will merge to 'next'?
cf. <apknMr9Jk-CzdLAR@pks.im>
source: <20260903063657.2067303-1-zkd18cjb@mail.ustc.edu.cn>
source: <20260905171332.34670-1-f@lex.la>


* jc/pathspec-match-const (2026-09-03) 1 commit
- pathspec: match and original in pathspec_item are const
(this branch is used by yt/pathspec-negative-prefix.)
* tn/fetch-pack-trace-packfile-uri (2026-07-26) 1 commit
- fetch-pack: trace packfile URI downloads

Two members in "struct pathspec_item" were of type "char *", but
nobody updated the string through these pointers. They have been
made "const char *" instead.
The process of downloading packfile URIs in protocol v2 has been
instrumented with a Trace2 region. This visibility allows tracking
the cumulative time spent downloading external packs and the number
of advertised URIs without emitting a separate event per pack.

Will merge to 'next'?
cf. <4439BA70-2C03-499D-B3CE-E43700C0A8DA@ytausch.de>
source: <xmqqy0dib3ue.fsf_-_@gitster.g>


* ps/tune-rerere-gc (2026-09-04) 2 commits
- builtin/maintenance: improve heuristic for "rerere gc"
- rerere: extract logic to determine whether entries are stale

"git maintenance" triggered "rerere gc" in unappropriate times and
interfered with "git rebase" etc. too much. The conditions "rerere
gc" gets triggered have been tweaked.

Will merge to 'next'?
cf. <15a488b2-b4ae-4ac8-8cb3-f06ef5bbb52b@gmail.com>
source: <20260904-b4-pks-maintenance-rerere-gc-heuristic-v2-0-b1691121fe1c@pks.im>


* as/push-force-if-includes-no-reflog (2026-09-04) 1 commit
- push: fix --force-if-includes when remote-tracking ref has no reflog

The timestamp used for checking the reflog of a remote-tracking
branch during 'git push --force-if-includes' was left uninitialized
when the reflog was completely empty, which has been corrected.

Waiting for response.
cf. <xmqqzexx58hc.fsf@gitster.g>
source: <20260904124433.12840-1-f@lex.la>


* tb/rerere-lock-grace (2026-09-04) 3 commits
- sequencer: keep auto maintenance out of the commands a sequence spawns
- sequencer: run auto maintenance once a sequence is done
- config: add git_config_append_parameter()

The sequencer machinery (used by 'git rebase', 'git cherry-pick', and
'git revert') has been updated to defer automatic maintenance tasks
until the end of the operation, preventing nested 'git commit', 'git
merge', and 'exec' commands from triggering GC operations that could
contend for locks or delete open packs while the sequence is in
progress.

Needs review.
source: <pull.2217.v2.git.1788537086.gitgitgadget@gmail.com>
source: <20260726083310.16180-2-tnyman@openai.com>

--------------------------------------------------
[Stalled]
@ -204,6 +283,73 @@ Release tarballs are available at:
--------------------------------------------------
[Cooking]

* jc/history-missing-tree-errorfix (2026-09-02) 1 commit
- history: do not dereference NULL when parent tree is missing

Running "git history" in a corrupt repository can (unsurprisingly)
segfault when a necessary tree object is not found.

Will merge to 'next'?
cf. <apknMr9Jk-CzdLAR@pks.im>
source: <20260903063657.2067303-1-zkd18cjb@mail.ustc.edu.cn>


* jc/pathspec-match-const (2026-09-03) 1 commit
- pathspec: match and original in pathspec_item are const
(this branch is used by yt/pathspec-negative-prefix.)

Two members in "struct pathspec_item" were of type "char *", but
nobody updated the string through these pointers. They have been
made "const char *" instead.

Will merge to 'next'.
cf. <4439BA70-2C03-499D-B3CE-E43700C0A8DA@ytausch.de>
source: <xmqqy0dib3ue.fsf_-_@gitster.g>


* ps/tune-rerere-gc (2026-09-04) 2 commits
- builtin/maintenance: improve heuristic for "rerere gc"
- rerere: extract logic to determine whether entries are stale

"git maintenance" triggered "rerere gc" in unappropriate times and
interfered with "git rebase" etc. too much. The conditions "rerere
gc" gets triggered have been tweaked.

Will merge to 'next'.
cf. <15a488b2-b4ae-4ac8-8cb3-f06ef5bbb52b@gmail.com>
cf. <CAA0xjtrL8DJp61jp7s0L6L+RviwQz=-PEo7qZvCTh+8nT2cdfw@mail.gmail.com>
source: <20260904-b4-pks-maintenance-rerere-gc-heuristic-v2-0-b1691121fe1c@pks.im>


* as/push-force-if-includes-no-reflog (2026-09-05) 1 commit
- push: fix --force-if-includes when remote-tracking ref has no reflog

The timestamp used for checking the reflog of a remote-tracking
branch during 'git push --force-if-includes' was left uninitialized
when the reflog was completely empty, which has been corrected.

Waiting for review.
cf. <20260906165052.21780-1-f@lex.la>
source: <20260905171330.34646-1-f@lex.la>


* tb/rerere-lock-grace (2026-09-04) 3 commits
- sequencer: keep auto maintenance out of the commands a sequence spawns
- sequencer: run auto maintenance once a sequence is done
- config: add git_config_append_parameter()

The sequencer machinery (used by 'git rebase', 'git cherry-pick', and
'git revert') has been updated to defer automatic maintenance tasks
until the end of the operation, preventing nested 'git commit', 'git
merge', and 'exec' commands from triggering GC operations that could
contend for locks or delete open packs while the sequence is in
progress.

Expecting a reroll.
cf. <CAA0xjtrherFZZBSeqE8zd6Kbwy_=f9mwiqJK832DzZRakkiwBw@mail.gmail.com>
source: <pull.2217.v2.git.1788537086.gitgitgadget@gmail.com>


* cc/lazy-fetch-trusted-bit (2026-08-13) 5 commits
- builtin/upload-pack: set GIT_NO_LAZY_FETCH to 0 on trusted repo
- upload-pack: read uploadpack.lazyFetchTrusted
@ -247,6 +393,7 @@ Release tarballs are available at:

Will merge to 'next'?
cf. <87pkyxwf9b.fsf@emacs.iotcl.com>
cf. <20260902071113.GA70165@coredump.intra.peff.net>
source: <20260901-b4-pks-ci-fix-documentation-job-v1-1-a8257ee2a9a4@pks.im>


@ -272,7 +419,9 @@ Release tarballs are available at:
object database management and prepares the codebase for migrating
alternate tracking into the files backend.

Needs review.
Will merge to 'next'?
cf. <CAOLa=ZQ=oCDtjAQXNXe51DvKUCCk0CK1EuM+QKhJ3iH8YiS+mw@mail.gmail.com>
cf. <ap2wj0vK0-VUvaW5@denethor>
source: <20260902-pks-odb-registering-in-memory-sources-v2-0-c6ca12fdea4d@pks.im>


@ -287,20 +436,19 @@ Release tarballs are available at:
environments has been removed.

Will merge to 'next'?
cf. <apfWhYF6nmcFGKE3@pks.im>
cf. <apfzihj-1YAhn5lT@pks.im>
source: <20260902071409.GA641414@coredump.intra.peff.net>


* jk/submodule-error-leak (2026-09-01) 2 commits
- submodule--helper: free URL when repository setup fails
- repository: make repo_clear() idempotent
(merged to 'next' on 2026-09-07 at d3bf064487)
+ submodule--helper: free URL when repository setup fails
+ repository: make repo_clear() idempotent

The error path in 'git submodule--helper' has been updated to plug a
memory leak when a repository handle could not be obtained,
leveraging an updated idempotent repo_clear().

Will merge to 'next'?
Will merge to 'master'.
cf. <apfoO5br4MMZv7nR@pks.im>
source: <20260902055117.GA41587@coredump.intra.peff.net>

@ -314,18 +462,19 @@ Release tarballs are available at:
which is useful when used in combination with '--missing=print' or
'--missing=print-info'.

Will merge to 'next'?
Will merge to 'next'.
source: <20260903204551.65592-2-siddharthasthana31@gmail.com>


* wf/imap-send-draft (2026-09-01) 1 commit
- imap-send: add --draft to set IMAP \Draft flag
(merged to 'next' on 2026-09-07 at 8a2a1bb827)
+ imap-send: add --draft to set IMAP \Draft flag

The 'git imap-send' command has been taught to take the '--draft'
option to mark uploaded messages as drafts, which helps some email
clients render them properly for editing and sending.

Will merge to 'next'?
Will merge to 'master'.
cf. <xmqq8q5kl4gq.fsf@gitster.g>
cf. <31d24dc3-3ef6-41cb-acbd-4cb4fb0d2338@app.fastmail.com>
source: <761c3f1b-e280-48b1-a2ad-770b68be3434@slotpi01m90>
@ -342,9 +491,7 @@ Release tarballs are available at:
prefix of positive pathspecs.

Waiting for response.
cf. <CABPp-BF6hps9DibSV4ghbowkOD-NfEsHYFdLoKab0hCfEi9rgw@mail.gmail.com>
cf. <CABPp-BFJo80oE=rtWc0FRNUxVh=6NHZeQmHD2q69VGwDcrHNhw@mail.gmail.com>
cf. <xmqqmrtx6qsk.fsf@gitster.g>
source: <887D6D84-F76E-4DCB-9633-CD78DA02BCC5@ytausch.de>


@ -438,19 +585,6 @@ Release tarballs are available at:
source: <20260829183659.29947-1-lorenz.leutgeb@posteo.eu>


* 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
@ -490,25 +624,7 @@ Release tarballs are available at:
source: <20260822-vv-branch-recurse-no-start-ref-v1-0-46dc140acaa8@zitro.id>


* kn/reftable-optimize-reloading (2026-08-24) 4 commits
(merged to 'next' on 2026-08-28 at d714ed570a)
+ reftable/stack: avoid reloading the stack when already locked
+ reftable/stack: move list lock to `struct reftable_stack`
+ reftable/stack: rename reftable_stack_new_addition()
+ reftable/stack: remove `REFTABLE_STACK_NEW_ADDITION_RELOAD`

The reftable code has been optimized to avoid an unnecessary
stat/reload of the stack when an addition already holds the
list_file lock, reducing the number of newfstatat syscalls from
linear to constant when writing refs.

Will merge to 'master'.
cf. <ao1uqpCxFHlOyTV-@pks.im>
cf. <20260824225202.GA190620@coredump.intra.peff.net>
source: <20260824-740-optimize-reloading-the-reftable-stack-v2-0-9c9de2eb0af7@gmail.com>


* ps/odb-alternates-at-creation (2026-08-31) 8 commits
* ps/odb-alternates-at-creation (2026-09-07) 9 commits
- odb/source: remove the ability to write alternates
- builtin/clone: write alternates via `odb_create_on_disk()`
- odb/source: support writing alternates when creating the database
@ -517,6 +633,7 @@ Release tarballs are available at:
- builtin/clone: refactor handling of "--reference{,-if-able}"
- builtin/clone: move around `setup_reference()`
- builtin/clone: defer setup of the object database
- setup: split up concerns of `init_db()`
- Merge branch 'ps/odb-eagerly-load-alternates' into ps/odb-alternates-at-creation

The setup of alternates has been deferred to object database
@ -524,7 +641,7 @@ Release tarballs are available at:
writing API, simplifying the object database backend interface.

Needs review.
source: <20260831-pks-odb-write-alternates-at-creation-time-v2-0-aecd2382ba1c@pks.im>
source: <20260907-pks-odb-write-alternates-at-creation-time-v3-0-735d0b5b3e00@pks.im>


* ps/odb-pluggable-fsck (2026-08-30) 10 commits
@ -569,18 +686,19 @@ Release tarballs are available at:


* en/no-amend-during-conflicts (2026-09-01) 5 commits
- commit: refuse partial commits during conflict resolution
- commit: refuse to amend during conflict resolution
- commit: reword the empty-commit rebase amend error
- commit: allow a partial commit when a rebase pick becomes empty
- commit: clarify FROM_REBASE_PICK and is_from_rebase() names
(merged to 'next' on 2026-09-07 at e1faacbfe1)
+ commit: refuse partial commits during conflict resolution
+ commit: refuse to amend during conflict resolution
+ commit: reword the empty-commit rebase amend error
+ commit: allow a partial commit when a rebase pick becomes empty
+ commit: clarify FROM_REBASE_PICK and is_from_rebase() names

Teach 'am', 'revert', and 'rebase' that running 'commit --amend' or a
partial 'commit <paths>' makes no sense during operations that stop
and return control to the user to resolve conflicts left in the
working tree, just like 'cherry-pick' and 'merge' do.

Will merge to 'next'?
Will merge to 'master'.
cf. <1c3f07e0-63c0-483d-8e46-e4edbdd6991a@gmail.com>
cf. <4ed77ebd-e4ba-4d37-9c92-d987b70135a6@gmail.com>
cf. <xmqqqzji5id2.fsf@gitster.g>
@ -611,7 +729,9 @@ Release tarballs are available at:
reference updates and allows the server to filter or modify the
packet-line status report sent back to the client.

Needs review.
Waiting response.
cf. <xmqq7bkw3hk7.fsf@gitster.g>
cf. <ap5Ud5OW2NXRuDoO@pks.im>
source: <20260904-758-introduce-hook-v7-0-6c66f0a3a572@gmail.com>


@ -634,20 +754,6 @@ Release tarballs are available at:
source: <pull.2207.v3.git.1787986831.gitgitgadget@gmail.com>


* ll/zsh-complete-git-potty-options (2026-08-19) 1 commit
(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
correctly locate the Git command after global options like '-C' by
properly skipping them, similar to how the bash completion does.

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


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

@ -661,7 +767,7 @@ Release tarballs are available at:
source: <20260819-http-preserve-wwwauth-redirect-v2-1-4c61039432b0@nvidia.com>


* kh/doc-datamodel (2026-08-23) 4 commits
* kh/doc-datamodel (2026-09-05) 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
@ -671,25 +777,7 @@ Release tarballs are available at:
of key documentaiton pages.

Will merge to 'next'?
cf. <apUrC_ROf9lyiuAm@pks.im>
cf. <954865cf-5984-4e0d-9e8c-7c874896a1f2@app.fastmail.com>
source: <V2_CV_doc_datamodel_advertize.c20@msgid.xyz>


* yn/worktree-repair-relative (2026-08-28) 1 commit
(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
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.

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


* kh/format-rev-more-options (2026-08-18) 5 commits
@ -762,8 +850,9 @@ Release tarballs are available at:
source: <cover.1788206466.git.ben.knoble@gmail.com>


* bc/restrict-hex-to-lowercase (2026-07-29) 6 commits
* 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
@ -774,10 +863,8 @@ Release tarballs are available at:
hexadecimal characters when running in the breaking changes mode, in
preparation for Git 3.0.

Expecting a reroll.
cf. <ao4MJQgp6Ai4tJxi@fruit.crustytoothpaste.net>
cf. <ao4MqtDxZJaMEBBI@fruit.crustytoothpaste.net>
source: <20260729233215.398654-1-sandals@crustytoothpaste.net>
Needs review.
source: <20260907195941.1024289-1-sandals@crustytoothpaste.net>


* js/mingw-build-updates (2026-08-12) 12 commits
@ -805,23 +892,6 @@ Release tarballs are available at:
source: <pull.2195.v2.git.1786521173.gitgitgadget@gmail.com>


* yn/worktree-ambiguous-remote-advice (2026-08-27) 4 commits
(merged to 'next' on 2026-08-30 at 8e7670286a)
+ worktree add: treat multiple matches with --guess-remote as an error
+ 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 checkout' and 'git worktree add' makes guesses based on a name
of a remote-tracking branch, but does not give an error when such a
remote-tracking branch cannot be uniquely identified, which has
been corrected.

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


* hn/ci-cancel-stale-pr-runs (2026-08-31) 1 commit
(merged to 'next' on 2026-09-03 at e4d4816938)
+ ci: cancel stale pull request workflow runs
@ -843,7 +913,7 @@ Release tarballs are available at:
visually separates autostash conflict advice from the subsequent
branch-switch message.

Will merge to 'next'?
Will merge to 'next'.
cf. <xmqq7bl2b1zs.fsf@gitster.g>
source: <pull.2364.v5.git.git.1788446398.gitgitgadget@gmail.com>

@ -915,19 +985,6 @@ Release tarballs are available at:
source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
(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
refactored to use the internal apply API directly, avoiding the need
to spawn a 'git apply' subprocess.

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


* fz/rebase-autosquash-empty (2026-08-27) 1 commit
- sequencer: honor --empty when a fixup!/squash! empties its target

@ -942,15 +999,16 @@ Release tarballs are available at:


* mm/lib-httpd-cgi-safe (2026-09-01) 3 commits
- t/lib-httpd: document writing concurrency-safe CGI helpers
- t/lib-httpd: make http-429 first-request check atomic
- t/lib-httpd: fix apply-one-time-script race under concurrent requests
(merged to 'next' on 2026-09-07 at 9ceb1bfd64)
+ t/lib-httpd: document writing concurrency-safe CGI helpers
+ t/lib-httpd: make http-429 first-request check atomic
+ t/lib-httpd: fix apply-one-time-script race under concurrent requests

CGI helper scripts used by HTTP-related test scripts have been updated
to use atomic filesystem operations, preventing race conditions when
Apache handles concurrent requests.

Will merge to 'next'?
Will merge to 'master'.
cf. <apkFyvN4hcEOadQq@pks.im>
source: <pull.2171.v5.git.1788277983.gitgitgadget@gmail.com>

@ -1048,6 +1106,20 @@ Release tarballs are available at:
cf. <CAC2Qwm+kzT_3_GKrpay=JLGYsxS10oWCg2MJPHrCVogFHA0OdA@mail.gmail.com>
source: <20260801174156.2998808-1-mmontalbo@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.

Expecting a reroll.
cf. <e3b7ef75-08e6-4529-ac75-56f800d2f4a4@app.fastmail.com>
source: <CV_format-patch_learn_--range-diff-notes.c57@msgid.xyz>

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

@ -1065,20 +1137,6 @@ Release tarballs are available at:
source: <20260821-pks-parallelize-fetching-packfile-uris-v1-0-0df52d9427ce@pks.im>


* 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