What's cooking (2026/07 #11)

todo
Junio C Hamano 2026-07-24 15:09:54 -07:00
parent dea7ccfea1
commit 2883c9d288
1 changed files with 255 additions and 376 deletions

View File

@ -1,10 +1,10 @@
To: git@vger.kernel.org
Subject: What's cooking in git.git (Jul 2026, #10)
Subject: What's cooking in git.git (Jul 2026, #11)
X-master-at: 9a0c4701dcd5725c4184599322b52933ff5005ca
X-next-at: 3f0d50209424de9b2a3b57975503a767e485f62a
X-next-at: e436a42272e5f75bb9ac8df1355c4593652372fe
Bcc: lwn@lwn.net, gitster@pobox.com

What's cooking in git.git (Jul 2026, #10)
What's cooking in git.git (Jul 2026, #11)
-----------------------------------------

Here are the topics that have been cooking in my tree. Commits
@ -47,255 +47,110 @@ Release tarballs are available at:

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

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

* cc/doc-fast-export-synopsis-fix (2026-07-13) 1 commit
(merged to 'next' on 2026-07-16 at b1dbc0cb3f)
+ fast-export: standardize usage string and SYNOPSIS

The usage string and SYNOPSIS for 'git fast-export' have been
standardized to make them consistent with each other and with other
commands.

Graduated to 'master'.
cf. <alX5Nl8uX4ctVqo3@pks.im>
cf. <xmqq4ii228dd.fsf@gitster.g>
source: <20260713124153.245268-1-christian.couder@gmail.com>


* cl/b4-cover-change-id (2026-07-10) 1 commit
(merged to 'next' on 2026-07-13 at 15c7ad9a3f)
+ b4: include change-id in cover template

The in-tree 'b4' cover letter template has been updated to include the
'change-id' trailer, ensuring that sent tags generated by 'b4' contain
the required tracking information for subsequent runs.

Graduated to 'master'.
source: <20260710-add-change-id-to-b4-template-v1-1-1bd37a25064e@black-desk.cn>


* cl/conditional-config-on-worktree-path (2026-07-09) 2 commits
(merged to 'next' on 2026-07-15 at 86ca33c437)
+ config: add "worktree" and "worktree/i" includeIf conditions
+ config: refactor include_by_gitdir() into include_by_path()

The '[includeIf "condition"]' conditional inclusion facility for
configuration files has been taught to use the location of the
worktree in its condition.

Graduated to 'master'.
cf. <alTJCTKR9jOWfgbk@pks.im>
source: <20260710-includeif-worktree-v8-0-04686d8a616c@black-desk.cn>


* dm/submodule-update-i-shorthand (2026-07-07) 1 commit
(merged to 'next' on 2026-07-15 at 55ef0fb748)
+ submodule--helper: accept '-i' shorthand for update --init

The '-i' shorthand for the '--init' option, which was accepted by the
'git submodule update' command until it was broken in a modernization
of the option-parsing code, has been restored.

Graduated to 'master'.
cf. <xmqq8q7ltf51.fsf@gitster.g>
source: <20260708-submodule-init-v1-1-719456077262@atmark-techno.com>


* jt/receive-pack-use-odb-transactions (2026-07-10) 11 commits
(merged to 'next' on 2026-07-15 at aba57e3365)
+ builtin/receive-pack: stage incoming objects via ODB transactions
+ builtin/receive-pack: drop redundant tmpdir env
+ odb/transaction: introduce ODB transaction flags
+ odb/transaction: add transaction env interface
+ odb/transaction: propagate commit errors
+ odb/transaction: propagate begin errors
+ object-file: propagate files transaction errors
+ object-file: drop check for inflight transactions
+ object-file: embed transaction flush logic in commit function
+ object-file: rename files transaction fsync function
+ object-file: rename files transaction prepare function
(this branch is used by ps/odb-move-loose-object-writing.)

'git receive-pack' has been refactored to use ODB transaction
interfaces instead of directly managing 'tmp_objdir' for staging
incoming objects, bringing it closer to being ODB backend agnostic.

Graduated to 'master'.
cf. <alR1P-RGZNmjyiUE@pks.im>
source: <20260710163722.2962278-1-jltobler@gmail.com>


* kk/no-walk-pathspec-fix (2026-07-16) 2 commits
(merged to 'next' on 2026-07-16 at 4dd6fb0e7e)
+ revision: fix --no-walk path filtering regression
+ Merge branch 'kk/streaming-walk-pqueue' into kk/no-walk-pathspec-fix

The 'git rev-list --no-walk' command has been corrected to restore
pathspec filtering, which was lost when the streaming walk was
refactored.

Graduated to 'master'.
source: <pull.2181.git.1784198879711.gitgitgadget@gmail.com>


* ml/t9811-replace-test-f (2026-07-11) 2 commits
(merged to 'next' on 2026-07-15 at ffb7fcad15)
+ t9811: replace 'test -f' and '! test -f' with 'test_path_*'
+ t9811: break long && chains into multiple lines

The test script 't/t9811-git-p4-label-import.sh' has been
modernized to use 'test_path_is_file' and 'test_path_is_missing'
instead of raw 'test -f' and '! test -f' calls.

Graduated to 'master'.
cf. <alTHrUEh4_O5ROeu@pks.im>
source: <20260711160447.99708-1-marcelomlage@usp.br>


* ps/odb-for-each-object-filter (2026-07-14) 10 commits
(merged to 'next' on 2026-07-16 at 8f30e80d33)
+ builtin/cat-file: filter objects via object database
+ odb: introduce object filters to `odb_for_each_object()`
+ pack-bitmap: introduce function to open bitmap for a single source
+ pack-bitmap: drop `_1` suffix from functions that open bitmaps
+ pack-bitmap: iterate object sources when opening bitmaps
+ pack-bitmap: allow aborting iteration of bitmapped objects
+ pack-objects: drop unused return value from add_object_entry()
+ pack-bitmap: mark object filter as `const`
+ odb/source-packed: improve lookup when enumerating objects
+ Merge branch 'ps/odb-drop-whence' into ps/odb-for-each-object-filter

The object database enumeration interface odb_for_each_object() has
been taught to accept object filters, allowing the underlying backends
to optimize the traversal by using reachability bitmaps when
available. 'git cat-file --batch-all-objects' has been updated to use
this generic interface, simplifying its code and avoiding direct
access to ODB backend internals.

Graduated to 'master'.
cf. <874ii0h2uf.fsf@emacs.iotcl.com>
source: <20260715-pks-odb-for-each-object-filter-v4-0-616d7adf7fb7@pks.im>


* ps/odb-stream-double-close-fix (2026-07-10) 1 commit
(merged to 'next' on 2026-07-13 at dd2c5795b7)
+ object-file: fix closing object stream twice

The stream-based object signature verification path has been
corrected to avoid double-closing the stream on read errors.

Graduated to 'master'.
source: <20260710-pks-odb-stream-double-close-v1-1-d5fa233a37c7@pks.im>


* rs/strbuf-avoid-redundant-reset (2026-07-14) 1 commit
(merged to 'next' on 2026-07-16 at f258ce38ba)
+ strbuf: avoid redundant reset in strbuf_getwholeline()

A redundant strbuf_reset() call in the 'HAVE_GETDELIM' path of
strbuf_getwholeline() has been removed, as getdelim() overwrites the
buffer and the length is updated afterward.

Graduated to 'master'.
cf. <xmqq8q7dv82b.fsf@gitster.g>
cf. <20260714214941.GB4095533@coredump.intra.peff.net>
source: <d4ffe7fb-f782-4f06-9e3b-f72729d1e225@web.de>


* sk/t1100-modernize (2026-07-14) 2 commits
(merged to 'next' on 2026-07-16 at 621ca4ca5f)
+ t1100: move creation of expected output into setup test
+ t1100: modernize test style

The test script 't/t1100-commit-tree-options.sh' has been modernized
by converting test cases to the modern style (using single quotes and
tab indentation) and moving the creation of the expected file inside
the setup test so it runs under the protection of the test harness.

Graduated to 'master'.
cf. <xmqq4ii1v7x0.fsf@gitster.g>
source: <20260714122033.61947-1-diy2903@gmail.com>


* sk/t7614-do-not-hide-git-exit-status (2026-07-15) 1 commit
(merged to 'next' on 2026-07-16 at 0d143986e7)
+ t7614: avoid hiding git's exit code in a pipe

The test script 't/t7614-merge-signoff.sh' has been updated to avoid
suppressing the exit code of 'git' commands in a pipe.

Graduated to 'master'.
cf. <xmqq1pd4m4ea.fsf@gitster.g>
source: <20260715113344.3490-1-diy2903@gmail.com>

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

* hs/rebase-continue-edit (2026-07-21) 1 commit
- rebase: add --[no-]edit to --continue
* af/clone-revision-v0-segfault-fix (2026-07-24) 1 commit
- builtin/clone: fix segfault when using --revision with protocol v0

Support for skipping the editor when continuing a rebase after
conflict resolution has been added with the '--no-edit' option, and
forcing it with '--edit'. A new configuration variable
'rebase.noEdit' can be used to set the default behavior.
'git clone --revision' talking to a server that does not support
protocol v2 (falling back to protocol v0) segfaulted, which has
been corrected.

Will merge to 'next'?
cf. <xmqqldb08jcd.fsf@gitster.g>
source: <20260724124138.666877-1-adrian.friedli@mt.com>


* lo/mv-missing-dest-dir-check (2026-07-23) 2 commits
- mv: check for missing destination directory before renaming
- mv: name both source and destination when rename fails

'git mv' has been updated to check for a missing destination
leading directory during the checking phase, allowing 'git mv -n'
to report the failure. The error message when the rename(2)
syscall fails has also been improved to name both the source and
the destination.

Waiting for response.
cf. <xmqq8q71k3fy.fsf@gitster.g>
cf. <xmqqh5lpk3r3.fsf@gitster.g>
source: <pull.2356.v2.git.git.1784812390.gitgitgadget@gmail.com>


* ps/odb-make-creation-pluggable (2026-07-23) 5 commits
- odb: make creation of on-disk structures pluggable
- odb/source: introduce function to map source type to name
- setup: defer object database creation
- setup: detangle loading of loose object maps
- loose: load loose object map for the correct source

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.

Needs review.
source: <20260721140443.1809379-2-hugo@hsal.es>


* tn/stash-avoid-sparse-index-expansion (2026-07-20) 2 commits
- stash: avoid sparse-index expansion for in-cone paths
- pathspec: use match for sparse-index expansion checks

The 'git stash push' command has been optimized to avoid unnecessary
sparse index expansion when pathspecs are wholly inside the
sparse-checkout cone. Also, a potential out-of-bounds read in the
sparse-index expansion check helper pathspec_needs_expanded_index()
has been fixed by consistently using the parsed, prefixed path.

Will merge to 'next'.
cf. <al61UTM0aK9j9eiP@com-79390>
cf. <al61ERa3fS2MerHp@com-79390>
source: <20260720223118.62821-4-tnyman@openai.com>


* en/submodule-insteadof-remote-match (2026-07-21) 1 commit
- submodule: resolve insteadof-aliases when matching remote

The remote-matching logic for submodules has been corrected to
resolve 'url.*.insteadOf' aliases before comparing the inventoried
URL from '.gitmodules' with the URLs of configured remotes.

Needs review.
source: <20260721213042.3357346-1-ccjmne@gmail.com>


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

Needs review.
source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>


* jc/exclude-first-parent-seen (2026-07-22) 1 commit
- revision: honor --exclude-first-parent-only with SEEN first parent

Traversals with '--exclude-first-parent-only' have been corrected to
properly stop after the first parent even when it has already been
marked as SEEN.

Needs review.
source: <xmqqbjbzq7n2.fsf@gitster.g>
cf. <xmqq5x248fk9.fsf@gitster.g>
cf. <xmqqh5lo6xi2.fsf@gitster.g>
cf. <xmqq5x246x35.fsf@gitster.g>
source: <20260724-pks-odb-create-on-disk-v1-0-3b3d265d979b@pks.im>

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

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

Waiting for response for too long, stalled.
cf. <xmqqpl1d56dd.fsf@gitster.g>
cf. <xmqqwlvl56vh.fsf@gitster.g>
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.

Waiting for response for too long, stalled.
cf. <xmqq5x37h6fj.fsf@gitster.g>
cf. <CAL71e4MiijEiM26TKJcOYT7L4pfQeMM_F2oT3U3igP-wOZm2Ag@mail.gmail.com>
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.

Waiting for response, stalled.
cf. <xmqq1pe0g08t.fsf@gitster.g>
cf. <xmqqik71t3nr.fsf@gitster.g>
source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* kh/doc-trailers (2026-06-10) 10 commits
- doc: interpret-trailers: document comment line treatment
- doc: interpret-trailers: commit to “trailer block” term
@ -314,24 +169,104 @@ Release tarballs are available at:
how comment lines in the input are treated.

Expecting a reroll for too long, stalled.
cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
cf. <xmqqcxxyt4op.fsf@gitster.g>
cf. <xmqq1pedthkv.fsf@gitster.g>
source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* kh/doc-replay-config (2026-06-05) 4 commits
- doc: replay: move “default” to the right-hand side
- doc: replay: use a nested description list
- doc: replay: improve config description
- doc: link to config for git-replay(1)

Documentation for 'git replay' has been updated to refer to its
configuration variables.

Waiting for response for too long, stalled.
cf. <87cxwxofgv.fsf@emacs.iotcl.com>
source: <V3_CV_doc_replay_config.780@msgid.xyz>

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

* jt/config-lock-timeout (2026-05-17) 1 commit
- config: retry acquiring config.lock, configurable via core.configLockTimeout
(merged to 'next' on 2026-07-24 at 3cb8da6b6a)
+ config: retry acquiring config.lock, configurable via core.configLockTimeout

Configuration file locking has been updated to retry for a short
period, avoiding failures when multiple processes attempt to update
the configuration simultaneously.

Waiting for response for too long, stalled.
Will merge to 'master'.
cf. <agrIrGwSMFlKTx9x@pks.im>
cf. <xmqqzf1xbl4i.fsf@gitster.g>
source: <20260517132111.1014901-1-joerg@thalheim.io>

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

* hs/rebase-continue-edit (2026-07-21) 1 commit
- rebase: add --[no-]edit to --continue

Support for skipping the editor when continuing a rebase after
conflict resolution has been added with the '--no-edit' option, and
forcing it with '--edit'. A new configuration variable
'rebase.noEdit' can be used to set the default behavior.

Waiting for a response.
cf. <xmqqldb4xlqa.fsf@gitster.g>
source: <20260721140443.1809379-2-hugo@hsal.es>


* tn/stash-avoid-sparse-index-expansion (2026-07-20) 2 commits
(merged to 'next' on 2026-07-23 at 8ccf28493e)
+ stash: avoid sparse-index expansion for in-cone paths
+ pathspec: use match for sparse-index expansion checks

The 'git stash push' command has been optimized to avoid unnecessary
sparse index expansion when pathspecs are wholly inside the
sparse-checkout cone. Also, a potential out-of-bounds read in the
sparse-index expansion check helper pathspec_needs_expanded_index()
has been fixed by consistently using the parsed, prefixed path.

Will merge to 'master'.
cf. <al61UTM0aK9j9eiP@com-79390>
cf. <al61ERa3fS2MerHp@com-79390>
source: <20260720223118.62821-4-tnyman@openai.com>


* en/submodule-insteadof-remote-match (2026-07-22) 1 commit
- submodule: resolve insteadOf aliases when matching remote

The remote-matching logic for submodules has been corrected to
resolve 'url.*.insteadOf' aliases before comparing the inventoried
URL from '.gitmodules' with the URLs of configured remotes.

Will merge to 'next'?
cf. <xmqqbjbyole1.fsf@gitster.g>
source: <20260723002132.3989727-1-ccjmne@gmail.com>


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

Waiting for a resposne.
cf. <CAOTNsDy4pKbPHdK1T688Ax6Mgz15K-qfZR-8fAvTk48z3E43Rg@mail.gmail.com>
source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>


* jc/exclude-first-parent-seen (2026-07-22) 1 commit
- revision: honor --exclude-first-parent-only with SEEN first parent

Traversals with '--exclude-first-parent-only' have been corrected to
properly stop after the first parent even when it has already been
marked as SEEN.

Will merge to 'next'.
source: <xmqqbjbzq7n2.fsf@gitster.g>


* sn/rebase-update-refs-symrefs (2026-07-22) 2 commits
- rebase: guard non-branch symref targets
@ -342,7 +277,9 @@ Release tarballs are available at:
the current branch are skipped and duplicate updates are avoided to
prevent failures when branch aliases are present.

Needs review.
Waiting for a response.
cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
cf. <00e529b6-7ae7-463f-a4b3-0991e9411aba@gmail.com>
source: <pull.2126.v3.git.1784708107.gitgitgadget@gmail.com>


@ -361,7 +298,7 @@ Release tarballs are available at:
source: <20260719010842.17991-1-sandals@crustytoothpaste.net>


* ja/doc-synopsis-style-yet-more (2026-07-19) 4 commits
* ja/doc-synopsis-style-yet-more (2026-07-23) 4 commits
- doc: convert git-request-pull synopsis and options to new style
- doc: convert git-send-email synopsis and options to new style
- doc: convert git-format-patch synopsis and options to new style
@ -371,10 +308,8 @@ Release tarballs are available at:
'git imap-send', 'git send-email', and 'git request-pull' have been
updated to the modern style.

Expecting a reroll.
cf. <23179740.EfDdHjke4D@piment-oiseau>
cf. <2418232.ElGaqSPkdT@piment-oiseau>
source: <pull.2185.git.1784490878.gitgitgadget@gmail.com>
Needs review.
source: <pull.2185.v2.git.1784841567.gitgitgadget@gmail.com>


* hn/url-push-tracking (2026-07-22) 2 commits
@ -385,9 +320,8 @@ Release tarballs are available at:
uniquely matching configured remote is now used to find and update
the remote-tracking branch (e.g., '@{push}').

Will merge to 'next'?
Will merge to 'next'.
cf. <xmqqpl0eoniz.fsf@gitster.g>
cf. <3FE12592-B663-438C-B33E-A251AE08E146@gmail.com>
source: <pull.2358.v4.git.git.1784743738.gitgitgadget@gmail.com>


@ -398,7 +332,8 @@ Release tarballs are available at:
'gitweb' has been corrected to work even when the index line carries
a trailing file mode.

Needs review.
Will merge to 'next'?
cf. <xmqqjyqu6u7i.fsf@gitster.g>
source: <SA1PR10MB9977150C823C0751E53B150D5AF1C62@SA1PR10MB997715.namprd10.prod.outlook.com>


@ -418,17 +353,20 @@ Release tarballs are available at:

Waiting for response.
cf. <845D6852-98F5-4168-82CD-90B3B476BCF5@gmail.com>
cf. <xmqq33xejomv.fsf@gitster.g>
source: <20260717133015.32040-1-jayatheerthkulkarni2005@gmail.com>


* sk/userdiff-swift (2026-07-20) 1 commit
- userdiff: add support for Swift
(merged to 'next' on 2026-07-23 at 45dbcc6307)
+ userdiff: add support for Swift

Userdiff patterns for Swift have been added, with support for
Swift-specific constructs such as attributes, modifiers, failable
initializers, and generics.

Will merge to 'next'?
Will merge to 'master'.
cf. <2a3a73c5-5e90-44a3-bf6a-6e98ce5e5a59@kdbg.org>
cf. <7b541cd5-bd66-4675-818d-8e23eb1c9530@kdbg.org>
source: <20260721065736.8747-1-diy2903@gmail.com>

@ -451,7 +389,9 @@ Release tarballs are available at:
first refactoring force_object_loose() to use generic ODB write
interfaces instead of loose-backend internals.

Needs review.
Will merge to 'next'?
cf. <87jyqnp365.fsf@emacs.iotcl.com>
cf. <87fr1bp0bi.fsf@emacs.iotcl.com>
source: <20260717-pks-odb-move-loose-object-writing-v1-0-46446a3cb5b7@pks.im>


@ -480,8 +420,9 @@ Release tarballs are available at:
to pre-filter commits, and maintains per-path Bloom filters even when
wildcard pathspecs are used.

Expecting a reroll.
Waiting for a response.
cf. <87cxwl1lb4.fsf@emacs.iotcl.com>
cf. <20260720094218.GA681989@coredump.intra.peff.net>
source: <20260717-toon-speed-up-last-modified-v1-0-410418f18614@iotcl.com>


@ -521,7 +462,6 @@ Release tarballs are available at:
Waiting for response.
cf. <xmqqldbdqciy.fsf@gitster.g>
cf. <xmqqh5m1qcfh.fsf@gitster.g>
cf. <alcvmX3b6y92KE4y@pks.im>
cf. <alcvnm0xiOv5W0w_@pks.im>
source: <pull.2179.git.1784069325.gitgitgadget@gmail.com>

@ -533,7 +473,7 @@ Release tarballs are available at:
avoid a segfault when encountering unmerged paths outside the
prefix.

Needs review.
Will merge to 'next'?
source: <20260715060523.GA517940@coredump.intra.peff.net>


@ -651,8 +591,7 @@ Release tarballs are available at:

Waiting for response.
cf. <f8050598-392f-44c9-8d66-0454740a7a12@kdbg.org>
cf. <a2676ec6-39d5-4220-8549-10a17daec668@hogyros.de>
cf. <xmqqfr1ig0hv.fsf@gitster.g>
cf. <xmqqwluuekbh.fsf@gitster.g>
source: <20260716-pks-reintroduce-writev-v1-0-ea9038c884bc@pks.im>


@ -683,7 +622,7 @@ Release tarballs are available at:
source: <alQ7WKITYDXfiVn9@com-79390>


* tn/packfile-uri-concurrency (2026-07-21) 3 commits
* tn/packfile-uri-concurrency (2026-07-24) 3 commits
- fetch-pack: accept "pack" output for packfile URIs
- http: avoid concurrent appends to partial packs
- http-fetch: correct --index-pack-arg documentation
@ -696,7 +635,8 @@ Release tarballs are available at:
'.keep' files.

Needs review.
source: <cover.1784676106.git.tnyman@openai.com>
cf. <xmqqldb19evx.fsf@gitster.g>
source: <cover.1784874850.git.tnyman@openai.com>


* rs/tempfile-wo-the-repository (2026-07-14) 5 commits
@ -764,6 +704,7 @@ Release tarballs are available at:
to spawn a 'git apply' subprocess.

Needs review.
cf. <xmqqechab03t.fsf@gitster.g>
source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


@ -862,7 +803,7 @@ Release tarballs are available at:
script on repositories already managed by the new tool.

Expecting a reroll.
cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
cf. <27215.27575.968985.583226@chiark.greenend.org.uk>
source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


@ -926,47 +867,24 @@ Release tarballs are available at:
source: <cover.1784128921.git.phillip.wood@dunelm.org.uk>


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

Waiting for response.
cf. <xmqqpl1d56dd.fsf@gitster.g>
cf. <xmqqwlvl56vh.fsf@gitster.g>
source: <cover.1782500507.git.me@ttaylorr.com>


* ty/migrate-excludes-file (2026-07-13) 10 commits
- repository: adjust the comment of config_values_private_
- environment: move object_creation_mode into repo_config_values
- environment: move autorebase into repo_config_values
- environment: move push_default into repo_config_values
- environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
- environment: move askpass_program into repo_config_values
- environment: move pager_program into repo_config_values
- environment: move editor_program into repo_config_values
- environment: move excludes_file into repo_config_values
- repository: introduce repo_config_values_clear()
(merged to 'next' on 2026-07-23 at 749560a29c)
+ repository: adjust the comment of config_values_private_
+ environment: move object_creation_mode into repo_config_values
+ environment: move autorebase into repo_config_values
+ environment: move push_default into repo_config_values
+ environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
+ environment: move askpass_program into repo_config_values
+ environment: move pager_program into repo_config_values
+ environment: move editor_program into repo_config_values
+ environment: move excludes_file into repo_config_values
+ repository: introduce repo_config_values_clear()

The 'excludes_file' and various other global configuration variables
(including 'editor_program', 'pager_program', 'askpass_program', and
'push_default') have been migrated into the per-repository structure.

Will merge to 'next'.
Will merge to 'master'.
cf. <xmqqa4ruyhbh.fsf@gitster.g>
source: <20260714032525.1611141-1-cat@malon.dev>

@ -1002,21 +920,23 @@ Release tarballs are available at:
the specified range and path.

Needs review.
cf. <xmqq8q8bpl03.fsf@gitster.g>
source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-07-20) 5 commits
- history: re-edit a squash with every message
- sequencer: share the squash message marker helpers and flags
- history: add squash subcommand to fold a range
- history: give commit_tree_ext a message template
- history: extract helper for a commit's parent tree
(merged to 'next' on 2026-07-23 at 2790c83e45)
+ history: re-edit a squash with every message
+ sequencer: share the squash message marker helpers and flags
+ history: add squash subcommand to fold a range
+ history: give commit_tree_ext a message template
+ history: extract helper for a commit's parent tree

The experimental 'git history' command has been taught a new 'squash'
subcommand to fold a range of commits into a single commit, with any
descendants replayed on top.

Will merge to 'next'.
Will merge to 'master'.
cf. <DK1KIF2OI8IF.11188A3YEQV1C@lfurio.us>
cf. <DK1KIH6CXW0X.1U2V3GU8L6HB7@lfurio.us>
source: <pull.2337.v10.git.git.1784536024.gitgitgadget@gmail.com>
@ -1069,20 +989,21 @@ Release tarballs are available at:
source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com>


* ps/cat-file-remote-object-info (2026-07-18) 13 commits
- cat-file: make remote-object-info allow-list adapt to the server
- cat-file: add remote-object-info to batch-command
- transport: add client support for object-info
- serve: advertise object-info feature
- protocol-caps: check object existence regardless of the attributes requested
- fetch-pack: move fetch initialization
- connect: make write_fetch_command_and_capabilities() more generic
- fetch-pack: move write_fetch_command_and_capabilities() to connect.c
- fetch-pack: use unsigned int for hash_algo variable
- fetch-pack: drop the static advertise_sid variable
- t1006: extract helper functions into new 'lib-cat-file.sh'
- cat-file: declare loop counter inside for()
- transport-helper: fix memory leak of helper on disconnect
* ps/cat-file-remote-object-info (2026-07-24) 13 commits
(merged to 'next' on 2026-07-24 at e436a42272)
+ cat-file: make remote-object-info allow-list adapt to the server
+ cat-file: add remote-object-info to batch-command
+ transport: add client support for object-info
+ serve: advertise object-info feature
+ protocol-caps: check object existence regardless of the attributes requested
+ fetch-pack: move fetch initialization
+ connect: make write_fetch_command_and_capabilities() more generic
+ fetch-pack: move write_fetch_command_and_capabilities() to connect.c
+ fetch-pack: use unsigned int for hash_algo variable
+ fetch-pack: drop the static advertise_sid variable
+ t1006: extract helper functions into new 'lib-cat-file.sh'
+ cat-file: declare loop counter inside for()
+ transport-helper: fix memory leak of helper on disconnect

The 'remote-object-info' command has been added to 'git cat-file
--batch-command', allowing clients to request object metadata
@ -1091,8 +1012,8 @@ Release tarballs are available at:
filtered on the client based on server-advertised capabilities,
returning empty strings for inapplicable or unsupported fields.

Needs review.
source: <20260718-ps-eric-work-rebase-v20-0-0c13962ac532@gmail.com>
Will merge to 'master'.
source: <20260724-ps-eric-work-rebase-v21-0-ba67f024fdff@gmail.com>


* mm/diff-process-hunks (2026-07-15) 9 commits
@ -1115,41 +1036,27 @@ Release tarballs are available at:
Ejected for now, as it conflicts badly with 'mm/line-log-limited-ops'.

Expecting a reroll.
cf. <xmqq8q7aj3b0.fsf@gitster.g>
cf. <CAC2QwmKRp90hmBAckug9PPvvD53Pi53q5csZhi15LRhzdQasQg@mail.gmail.com>
source: <pull.2120.v5.git.1784149323.gitgitgadget@gmail.com>


* ty/migrate-trust-executable-bit (2026-07-20) 4 commits
- environment: move has_symlinks into repo_config_values
- environment: move trust_executable_bit into repo_config_values
- read-cache: pass 'repo' to 'ce_mode_from_stat()'
- read-cache: remove redundant extern declarations
(merged to 'next' on 2026-07-23 at 4873f289dd)
+ environment: move has_symlinks into repo_config_values
+ environment: move trust_executable_bit into repo_config_values
+ read-cache: pass 'repo' to 'ce_mode_from_stat()'
+ read-cache: remove redundant extern declarations

The 'trust_executable_bit' (coming from the 'core.filemode'
configuration) has been migrated into 'struct repo_config_values' to
tie it to a specific repository instance.

Will merge to 'next'.
Will merge to 'master'.
cf. <alvNq8rXF/jofqUc@szeder.dev>
cf. <xmqq8q7961xe.fsf@gitster.g>
source: <20260720105335.3202013-1-cat@malon.dev>


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

Waiting for response, stalled.
cf. <xmqqik71t3nr.fsf@gitster.g>
cf. <xmqq1pe0g08t.fsf@gitster.g>
source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
- commit: allow -c/-C for all kinds of --fixup
- commit: allow -m/-F for all kinds of --fixup
@ -1162,21 +1069,7 @@ Release tarballs are available at:
source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
- doc: replay: move “default” to the right-hand side
- doc: replay: use a nested description list
- doc: replay: improve config description
- doc: link to config for git-replay(1)

Documentation for 'git replay' has been updated to refer to its
configuration variables.

Waiting for response for too long, stalled.
cf. <87cxwxofgv.fsf@emacs.iotcl.com>
source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/branch-delete-merged (2026-07-22) 7 commits
* hn/branch-delete-merged (2026-07-24) 7 commits
- branch: add --dry-run for --delete-merged
- branch: add branch.<name>.deleteMerged opt-out
- branch: add --delete-merged <branch>
@ -1189,23 +1082,10 @@ Release tarballs are available at:
to remove local branches that are already merged into their tracked
remote-tracking branches.

Needs review.
Will merge to 'next'?
cf. <9b9b9a2c-dd0f-44f8-b80e-565eed9a55a8@gmail.com>
cf. <xmqqik6an5t3.fsf@gitster.g>
source: <pull.2285.v20.git.git.1784704238.gitgitgadget@gmail.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.

Waiting for response for too long, stalled.
cf. <xmqq5x37h6fj.fsf@gitster.g>
cf. <CAL71e4MiijEiM26TKJcOYT7L4pfQeMM_F2oT3U3igP-wOZm2Ag@mail.gmail.com>
source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>
source: <pull.2285.v21.git.git.1784889377.gitgitgadget@gmail.com>


* ps/shift-root-in-graph (2026-07-14) 7 commits
@ -1247,5 +1127,4 @@ Release tarballs are available at:

Needs review.
cf. <xmqqse5en8wz.fsf@gitster.g>
cf. <xmqqv7al9rbj.fsf@gitster.g>
source: <pull.2149.v6.git.1783776466.gitgitgadget@gmail.com>