What's cooking (2026/08 #01)

Junio C Hamano committed Aug 3, 2026 at 10:12 UTC 31845924025950bbe110bcd34e9841f3b4147b95
1 file changed +476 -566
whats-cooking.txt
+476 -566
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 -Subject: What's cooking in git.git (Jul 2026, #13)
3 -X-master-at: 13c7afec212fc97ce257d15601659314c6673d6c
4 -X-next-at: 250fe7f19410a4727d35b49738074248c2348aa6
2 +Subject: What's cooking in git.git (Aug 2026, #01)
3 +X-master-at: 5b2471720c93ee30e5764a19f3d3b3ae9ec9712a
4 +X-next-at: 6767b8d81c83adffcd5ce7f852af5e071b7b07f7
5 Bcc: lwn@lwn.net, gitster@pobox.com
6
7 -What's cooking in git.git (Jul 2026, #13)
7 +What's cooking in git.git (Aug 2026, #01)
8 -----------------------------------------
9
10 Here are the topics that have been cooking in my tree. Commits
@@ -17,7 +17,7 @@ A topic without enough support may be discarded after a long period
17 of no activity (of course, it can be resubmitted when new interest
18 arises).
19
20 -The 8th batch of topics have now graduated to the 'master' branch.
20 +The 10th batch of topics have now graduated to the 'master' branch.
21
22 Copies of the source code to Git live in many repositories, and the
23 following is a list of the ones I push into or their mirrors. Some
@@ -48,308 +48,323 @@ Release tarballs are available at:
48 https://www.kernel.org/pub/software/scm/git/
49
50 --------------------------------------------------
51 -[Graduated to 'master']
51 +[New Topics]
52
53 -* bc/rust-hash-cleanups (2026-07-18) 2 commits
54 - (merged to 'next' on 2026-07-21 at 51627468a0)
55 - + rust: discard hash context when finished
56 - + hash: initialize context before cloning
53 +* hn/ci-cancel-stale-pr-runs (2026-07-31) 1 commit
54 + - ci: cancel stale pull request workflow runs
55
58 - A few memory problems in the Rust interface to C hash functions have
59 - been corrected. The 'Clone' implementation of 'CryptoHasher' now
60 - properly initializes the context before cloning, and its 'Drop'
61 - implementation now discards the context to prevent leaks.
56 + GitHub Actions CI workflow runs triggered by pull requests have
57 + been configured to cancel older runs when a new push is made to the
58 + same pull request.
59
63 - Graduated to 'master'.
64 - cf. <20260719080754.GA429688@coredump.intra.peff.net>
65 - source: <20260719010842.17991-1-sandals@crustytoothpaste.net>
60 + Needs review.
61 + source: <pull.2369.git.git.1785492641983.gitgitgadget@gmail.com>
62
63
68 -* jc/submodule-helper-avoid-zu (2026-07-15) 1 commit
69 - (merged to 'next' on 2026-07-19 at b12d5d76f5)
70 - + submodule--helper: avoid use of %zu for now
64 +* kh/doc-refs-migrate-limitations (2026-07-31) 2 commits
65 + - doc: refs: linkgit to git-maintenance(1)
66 + - doc: refs: put ref migration warning under the command
67
72 - An accidental use of the '%zu' format specifier in 'git
73 - submodule--helper' has been corrected to use 'PRIuMAX' and cast the
74 - value to 'uintmax_t' to avoid portability issues.
68 + The known limitations of the ref format migration in 'git refs' have
69 + been moved to be displayed as a caution admonition directly under the
70 + description of the 'migrate' subcommand, improving visibility. A
71 + reference to 'git-maintenance' has also been corrected to use the
72 + 'linkgit' macro.
73
76 - Graduated to 'master'.
77 - source: <xmqq4ii0ko9t.fsf@gitster.g>
74 + Will merge to 'next'?
75 + cf. <xmqqbjbncdv5.fsf@gitster.g>
76 + source: <CV_git_ref_migration_warning.b09@msgid.xyz>
77
78
80 -* ps/copy-wo-the-repository (2026-07-16) 1 commit
81 - (merged to 'next' on 2026-07-20 at 9e38da0efc)
82 - + copy: drop dependency on `the_repository`
79 +* jc/complete-diff-tracked-paths (2026-08-02) 1 commit
80 + - completion: complete tracked paths for git diff
81
84 - The copy_file() and copy_file_with_time() functions have been
85 - refactored to take a repository parameter, allowing the removal of the
86 - implicit dependency on the global 'the_repository' variable in
87 - 'copy.c'.
82 + "git -C <dir> diff fi<TAB>" did not complete dir/file, which has
83 + been corrected.
84
89 - Graduated to 'master'.
90 - cf. <b0df688a-3b26-48f6-8b1c-98530483885e@gmail.com>
91 - cf. <xmqqo6g54k7m.fsf@gitster.g>
92 - source: <20260716-pks-copy-wo-the-repository-v2-1-8f5e32942929@pks.im>
93 -
94 -
95 -* ps/refs-wo-the-repository (2026-07-15) 7 commits
96 - (merged to 'next' on 2026-07-19 at 12685f410c)
97 - + refs: remove remaining uses of `the_repository`
98 - + worktree: pass repository to public functions
99 - + worktree: pass repository to file-local functions
100 - + worktree: refactor code to use available repositories
101 - + refs/files: drop `USE_THE_REPOSITORY_VARIABLE`
102 - + refs/packed: de-globalize handling of "core.packedRefsTimeout"
103 - + Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository
104 -
105 - The ref subsystem and the worktree API have been refactored to pass a
106 - repository pointer down the call chain, allowing them to drop
107 - references to the global 'the_repository' variable. As part of this,
108 - the handling of the 'core.packedRefsTimeout' configuration has been
109 - moved into the per-repository ref store structure.
85 + Will merge to 'next'?
86 + cf. <anAqfqcEueSKmAH+@szeder.dev>
87 + cf. <xmqqpkzzyzq4.fsf@gitster.g>
88 + source: <xmqqcxw010me.fsf@gitster.g>
89
111 - Graduated to 'master'.
112 - source: <20260716-pks-refs-wo-the-repository-v3-0-db0a804e0224@pks.im>
90
91 +* kh/trailers-no-urls (2026-08-02) 2 commits
92 + - trailers: stop recognizing URLs as trailers
93 + - Merge branch 'kh/doc-trailers' into kh/trailers-no-urls
94 + (this branch uses kh/doc-trailers.)
95
115 -* ps/refspec-wo-the-repository (2026-07-16) 3 commits
116 - (merged to 'next' on 2026-07-20 at 31044c3fc9)
117 - + refspec: stop depending on `the_repository`
118 - + refspec: let callers pass in hash algorithm when parsing items
119 - + refspec: group related structures and functions
96 + The trailers code has been taught to avoid mistaking a line that has
97 + <token>:// at the beginning as a trailer line.
98
121 - The dependency on the global 'the_repository' variable in the
122 - 'refspec.c' API has been removed by passing the hash algorithm
123 - explicitly to refspec-parsing functions and storing it in 'struct
124 - refspec'.
99 + Will merge to 'next'?
100 + cf. <20260803152025.GA189075@coredump.intra.peff.net>
101 + cf. <xmqqmrv42lrg.fsf@gitster.g>
102 + cf. <xmqqtspbz00x.fsf@gitster.g>
103 + source: <URLs_not_trailers.b13@msgid.xyz>
104
126 - Graduated to 'master'.
127 - source: <20260716-pks-refspec-wo-the-repository-v1-0-aa40844d067f@pks.im>
105
106 +* kl/t7528-ssh-agent-for-csh-users (2026-08-02) 1 commit
107 + - t7528: fix failure under csh
108
130 -* ps/shift-root-in-graph (2026-07-14) 7 commits
131 - (merged to 'next' on 2026-07-19 at bebf13a239)
132 - + graph: add --[no-]graph-indent and log.graphIndent
133 - + graph: move config reading into graph_read_config()
134 - + graph: wrap cascading commits after 4 columns
135 - + graph: indent visual root in graph
136 - + graph: add a 2 commit buffer for lookahead
137 - + revision: add next_commit_to_show()
138 - + lib-log-graph: move check_graph function
109 + The 'ssh-agent' tests in 't7528' have been fixed to work when the
110 + user's login shell is csh-like, by explicitly passing '-s' to
111 + 'ssh-agent' to force Bourne shell syntax.
112
140 - 'git log --graph' has been modified to visually distinguish parentless
141 - 'root' commits (and commits that become roots due to history
142 - simplification) by indenting them, preventing them from appearing
143 - falsely related to unrelated commits rendered immediately above them.
113 + Will merge to 'next'?
114 + cf. <am_5YymI-UnCT_s1@fruit.crustytoothpaste.net>
115 + cf. <xmqqy0enz2o4.fsf@gitster.g>
116 + source: <20260803004105.36913-2-keni@his.com>
117
145 - Graduated to 'master'.
146 - cf. <CA+J6zkQNzEAhhY74qDrOwfFVrshEF7YFxWRRkwE3ttJo15ZbAg@mail.gmail.com>
147 - source: <20260714-ps-pre-commit-indent-v12-0-d50938e006df@gmail.com>
148 -
149 -
150 -* pw/rebase-drop-notes-with-commit (2026-07-15) 9 commits
151 - (merged to 'next' on 2026-07-20 at 5475c9f935)
152 - + sequencer: do not record dropped commits as rewritten
153 - + sequencer: use an enum to represent result of picking a commit
154 - + sequencer: simplify pick_one_commit()
155 - + sequencer: remove unnecessary condition in pick_one_commit()
156 - + sequencer: simplify handling of fixup with conflicts
157 - + sequencer: remove unnecessary "or" in pick_one_commit()
158 - + sequencer: never reschedule on failed commit
159 - + sequencer: be more careful with external merge
160 - + t3400: restore coverage for note copying with apply backend
161 -
162 - The rebase post-rewrite notes-copying logic has been corrected. When
163 - a commit is dropped during rebase (e.g., because its changes are
164 - already upstream), it is no longer recorded as rewritten, preventing
165 - its notes from being copied to an unrelated commit.
118 +--------------------------------------------------
119 +[Graduated to 'master']
120 +
121 +* af/clone-revision-v0-segfault-fix (2026-07-24) 1 commit
122 + (merged to 'next' on 2026-07-27 at 57c0e98bfb)
123 + + builtin/clone: fix segfault when using --revision with protocol v0
124 +
125 + A segfault when 'git clone --revision' talks to a server that does not
126 + support protocol v2 (falling back to protocol v0) has been corrected.
127
128 Graduated to 'master'.
168 - cf. <xmqqy0f5d25g.fsf@gitster.g>
169 - source: <cover.1784128921.git.phillip.wood@dunelm.org.uk>
129 + cf. <xmqqldb08jcd.fsf@gitster.g>
130 + source: <20260724124138.666877-1-adrian.friedli@mt.com>
131
132
172 -* rs/remote-curl-simplify-push-specs (2026-07-14) 1 commit
173 - (merged to 'next' on 2026-07-19 at ff1b5528ba)
174 - + remote-curl: simplify passing of push specs
133 +* en/submodule-insteadof-remote-match (2026-07-22) 1 commit
134 + (merged to 'next' on 2026-07-27 at a1cbd7aa11)
135 + + submodule: resolve insteadOf aliases when matching remote
136
176 - The passing of push destination specifications in the 'remote-curl'
177 - helper has been simplified by removing the explicit 'count' parameter
178 - and relying on the NULL-termination of the array.
137 + The remote-matching logic for submodules has been corrected to resolve
138 + 'url.*.insteadOf' aliases before comparing the inventoried URL from
139 + '.gitmodules' with the URLs of configured remotes.
140
141 Graduated to 'master'.
181 - source: <935883f3-3be4-4c51-9711-5208b9ef9ca1@web.de>
142 + cf. <xmqqldb05dlo.fsf@gitster.g>
143 + source: <20260723002132.3989727-1-ccjmne@gmail.com>
144
145
184 -* sc/wt-status-avoid-quadratic-insertion (2026-07-18) 1 commit
185 - (merged to 'next' on 2026-07-20 at 9330d42a4a)
186 - + wt-status: avoid repeated insertion for untracked paths
146 +* hn/url-push-tracking (2026-07-22) 2 commits
147 + (merged to 'next' on 2026-07-25 at 9b776656fc)
148 + + remote: find tracking branches for URL push destinations
149 + + remote: pass repository to push tracking helper
150
188 - The enumeration of untracked and ignored files in 'git status' has
189 - been optimized by avoiding quadratic complexity when inserting into
190 - string lists, reducing the construction cost from O(n^2) to O(n log
191 - n).
151 + When the push remote is specified as a URL, the fetch refspec of a
152 + uniquely matching configured remote is now used to find and update
153 + the remote-tracking branch (e.g., '@{push}').
154
155 Graduated to 'master'.
194 - cf. <20260718083828.GE22588@coredump.intra.peff.net>
195 - source: <20260718081449.26747-1-sahityajb@gmail.com>
156 + cf. <xmqqpl0eoniz.fsf@gitster.g>
157 + source: <pull.2358.v4.git.git.1784743738.gitgitgadget@gmail.com>
158
159
198 -* td/ref-filter-memoize-contains (2026-06-12) 3 commits
199 - (merged to 'next' on 2026-07-19 at 5b640e33a1)
200 - + commit-reach: die on contains walk errors
201 - + ref-filter: memoize --contains with generations
202 - + commit-reach: reject cycles in contains walk
160 +* jc/exclude-first-parent-seen (2026-07-22) 1 commit
161 + (merged to 'next' on 2026-07-25 at 85755d1d45)
162 + + revision: honor --exclude-first-parent-only with SEEN first parent
163
204 - 'git branch --contains' and 'git for-each-ref --contains' have been
205 - optimized to use the memoized commit traversal previously used only by
206 - 'git tag --contains', significantly speeding up connectivity checks
207 - across many candidate refs with shared history.
164 + Traversals with '--exclude-first-parent-only' have been corrected
165 + to properly stop after the first parent even when it has already
166 + been marked as 'SEEN'.
167
168 Graduated to 'master'.
210 - cf. <20260716091924.GB1212956@coredump.intra.peff.net>
211 - source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>
169 + source: <xmqqbjbzq7n2.fsf@gitster.g>
170
213 ---------------------------------------------------
214 -[New Topics]
171
216 -* sk/test-commit-body-helper (2026-07-27) 2 commits
217 - - t: use commit_body to extract commit message bodies
218 - - test-lib-functions: add commit_body helper
172 +* jc/remote-insteadof-leakfix (2026-07-25) 1 commit
173 + (merged to 'next' on 2026-07-27 at 8cf88af88b)
174 + + remote: plug memory leaks
175
220 - A new test helper commit_body() has been introduced to print the
221 - message body of a commit, and various tests have been updated to use
222 - it instead of spelling out the command pipeline manually and losing
223 - the exit status of the 'git cat-file' command on the upstream of the
224 - pipe.
176 + rewrites_release() in 'remote.c' has been updated to free 'struct
177 + rewrite' instances, their '.instead_of' arrays, and their contents.
178
226 - Needs review.
227 - cf. <xmqqldawq24y.fsf@gitster.g>
228 - source: <20260727095656.75496-1-diy2903@gmail.com>
179 + Graduated to 'master'.
180 + cf. <20260725161819.GA2343104@coredump.intra.peff.net>
181 + source: <xmqqpl0b12gj.fsf@gitster.g>
182
183
231 -* jk/cat-file-batch-wo-type-fix (2026-07-28) 1 commit
232 - - cat-file: handle content request for --batch-command without type
184 +* jt/config-lock-timeout (2026-05-17) 1 commit
185 + (merged to 'next' on 2026-07-24 at 3cb8da6b6a)
186 + + config: retry acquiring config.lock, configurable via core.configLockTimeout
187
234 - "git cat-file --batch-command" that asked for 'contents' without
235 - 'type' segfaults, which has been corrected.
188 + Configuration file locking has been updated to retry for a short
189 + period, avoiding failures when multiple processes attempt to update
190 + the configuration simultaneously.
191
237 - Will merge to 'next'?
238 - cf. <xmqqjyqfdnie.fsf@gitster.g>
239 - source: <20260728150031.GA41931@coredump.intra.peff.net>
192 + Graduated to 'master'.
193 + cf. <agrIrGwSMFlKTx9x@pks.im>
194 + cf. <xmqqzf1xbl4i.fsf@gitster.g>
195 + source: <20260517132111.1014901-1-joerg@thalheim.io>
196
197
242 -* tc/merge-default-to-upstream-leakfix (2026-07-28) 1 commit
243 - - merge: fix leak with merge.defaultToUpstream
198 +* ps/cat-file-remote-object-info (2026-07-24) 13 commits
199 + (merged to 'next' on 2026-07-24 at e436a42272)
200 + + cat-file: make remote-object-info allow-list adapt to the server
201 + + cat-file: add remote-object-info to batch-command
202 + + transport: add client support for object-info
203 + + serve: advertise object-info feature
204 + + protocol-caps: check object existence regardless of the attributes requested
205 + + fetch-pack: move fetch initialization
206 + + connect: make write_fetch_command_and_capabilities() more generic
207 + + fetch-pack: move write_fetch_command_and_capabilities() to connect.c
208 + + fetch-pack: use unsigned int for hash_algo variable
209 + + fetch-pack: drop the static advertise_sid variable
210 + + t1006: extract helper functions into new 'lib-cat-file.sh'
211 + + cat-file: declare loop counter inside for()
212 + + transport-helper: fix memory leak of helper on disconnect
213 + (this branch is used by ps/cat-file-remote-object-info-type.)
214
245 - Leakfix.
215 + The 'remote-object-info' command has been added to 'git cat-file
216 + --batch-command', allowing clients to request object metadata
217 + (currently size) from a remote server via protocol v2 without
218 + downloading the entire object. Format placeholders are dynamically
219 + filtered on the client based on server-advertised capabilities,
220 + returning empty strings for inapplicable or unsupported fields.
221
247 - Will merge to 'next'?
248 - cf. <20260728151959.GC41931@coredump.intra.peff.net>
249 - cf. <xmqqfr13dlv8.fsf@gitster.g>
250 - source: <20260728-toon-fix-merge-leak-v1-1-d6bd161a3acf@iotcl.com>
222 + Graduated to 'master'.
223 + source: <20260724-ps-eric-work-rebase-v21-0-ba67f024fdff@gmail.com>
224
225
253 -* cl/regexec-macos-leak (2026-07-28) 2 commits
254 - - SQUASH???
255 - - regexec: work around macOS TRE leak on invalid UTF-8
226 +* ps/odb-move-loose-object-writing (2026-07-17) 10 commits
227 + (merged to 'next' on 2026-07-25 at 244d577d93)
228 + + object-file: move logic to write loose objects
229 + + object-file: move `force_object_loose()`
230 + + object-file: force objects loose via generic interface
231 + + object-file: fix memory leak in `force_object_loose()`
232 + + odb: support setting mtime when writing objects
233 + + odb: lift object existence check out of the "loose" backend
234 + + odb: compute object hash in `odb_write_object_ext()`
235 + + t/u-odb-inmemory: implement wrapper for writing objects
236 + + odb: compute compat object ID in `odb_write_object_ext()`
237 + + Merge branch 'jt/receive-pack-use-odb-transactions' into HEAD
238
257 - A compatibility workaround has been introduced for macOS to address
258 - a memory leak in the system regex engine when it encounters invalid
259 - multibyte sequences. The workaround segments the input buffer at
260 - invalid byte boundaries and searches each valid segment separately
261 - using regexec(), avoiding the leaking path.
239 + The logic to write loose objects has been refactored and moved from
240 + 'object-file.c' to the loose backend source file 'odb/source-loose.c',
241 + making the loose backend more self-contained. This is achieved by
242 + first refactoring force_object_loose() to use generic ODB write
243 + interfaces instead of loose-backend internals.
244
263 - Waiting for response.
264 - cf. <xmqqse52bpa9.fsf@gitster.g>
265 - source: <20260728052538.12429-1-chungmin@chungminlee.com>
245 + Graduated to 'master'.
246 + cf. <xmqqecgzpm0y.fsf@gitster.g>
247 + source: <20260717-pks-odb-move-loose-object-writing-v1-0-46446a3cb5b7@pks.im>
248
249
268 -* dl/pack-bitmap-position-zero (2026-07-28) 1 commit
269 - - pack-bitmap: handle objects at bitmap position zero
250 +* rs/tempfile-wo-the-repository (2026-07-14) 5 commits
251 + (merged to 'next' on 2026-07-22 at 968a116891)
252 + + use repo_hold_lock_file_for_update{,_mode,_timeout}() with custom repos
253 + + tempfile: stop using the_repository
254 + + lockfile: add repo_hold_lock_file_for_update{,_timeout}{,_mode}()
255 + + refs/packed: use repo_create_tempfile()
256 + + tempfile: add repo_create_tempfile{,_mode}()
257
271 - A boundary case check in reachability bitmap traversal has been
272 - corrected to properly handle the object at position zero, which was
273 - previously skipped, leading to redundant bitmap loading.
258 + The tempfile and lockfile APIs have been refactored to stop depending
259 + on the 'the_repository' global variable, and their callers have been
260 + updated to use the repository-aware variants.
261
275 - Will merge to 'next'?
276 - cf. <amk75SuhyHBbx-E8@com-79390>
277 - cf. <xmqq5x1yd968.fsf@gitster.g>
278 - source: <20260728135248.61304-1-davidlin@stripe.com>
262 + Graduated to 'master'.
263 + cf. <xmqq8q7ds3ld.fsf@gitster.g>
264 + cf. <xmqqmrvmn6a5.fsf@gitster.g>
265 + source: <20260714175956.54601-1-l.s.r@web.de>
266
267
281 -* hn/checkout-m-autostash-refine (2026-07-25) 2 commits
282 - - checkout -m: refine autostash fallback
283 - - sequencer: teach autostash apply to report conflicts
268 +* sk/userdiff-swift (2026-07-20) 1 commit
269 + (merged to 'next' on 2026-07-23 at 45dbcc6307)
270 + + userdiff: add support for Swift
271
285 - The autostash fallback in 'git checkout -m' has been refined to only
286 - retry when there are local changes. Additionally, a blank line now
287 - visually separates autostash conflict advice from the subsequent
288 - branch-switch message.
272 + Userdiff patterns for Swift have been added, with support for
273 + Swift-specific constructs such as attributes, modifiers, failable
274 + initializers, and generics.
275
290 - Needs review.
291 - cf. <xmqqwluebuhb.fsf@gitster.g>
292 - source: <pull.2364.git.git.1784993669.gitgitgadget@gmail.com>
276 + Graduated to 'master'.
277 + cf. <2a3a73c5-5e90-44a3-bf6a-6e98ce5e5a59@kdbg.org>
278 + cf. <7b541cd5-bd66-4675-818d-8e23eb1c9530@kdbg.org>
279 + source: <20260721065736.8747-1-diy2903@gmail.com>
280
281
295 -* jk/t0014-dynamic-deprecated-cmds (2026-07-28) 2 commits
296 - (merged to 'next' on 2026-07-29 at 39a86632e6)
297 - + t0014: generate deprecated command names dynamically
298 - + t0014: factor out choice of deprecated commands
282 +* tl/gitweb-shorten-hashes-with-modes (2026-07-17) 1 commit
283 + (merged to 'next' on 2026-07-25 at 5b92e8a325)
284 + + gitweb: shorten index hashes with trailing file modes
285
300 - The alias tests in t/t0014-alias.sh have been updated to dynamically
301 - query the list of deprecated commands using 'git
302 - --list-cmds=deprecated' to avoid test failures when running with
303 - WITH_BREAKING_CHANGES in a build directory that contains stale
304 - executables of formerly deprecated commands.
286 + The object ID shortening and linking in the 'commitdiff' view of
287 + 'gitweb' has been corrected to work even when the index line carries
288 + a trailing file mode.
289
306 - Will merge to 'master'.
307 - source: <20260728143653.GB11894@coredump.intra.peff.net>
290 + Graduated to 'master'.
291 + cf. <xmqqjyqu6u7i.fsf@gitster.g>
292 + source: <SA1PR10MB9977150C823C0751E53B150D5AF1C62@SA1PR10MB997715.namprd10.prod.outlook.com>
293
294
310 -* js/mingw-symlink-net-share-leak (2026-07-28) 1 commit
311 - (merged to 'next' on 2026-07-29 at 250fe7f194)
312 - + mingw: skip symlink type auto-detection for network share targets
295 +* tn/stash-avoid-sparse-index-expansion (2026-07-20) 2 commits
296 + (merged to 'next' on 2026-07-23 at 8ccf28493e)
297 + + stash: avoid sparse-index expansion for in-cone paths
298 + + pathspec: use match for sparse-index expansion checks
299
314 - Git for Windows has been updated to avoid auto-detecting the symlink
315 - type if the target path starts with a slash, preventing NTLM
316 - credential leaks when checking out repositories with crafted
317 - symbolic links pointing to network shares.
300 + The 'git stash push' command has been optimized to avoid
301 + unnecessary sparse index expansion when pathspecs are wholly inside
302 + the sparse-checkout cone. Also, a potential out-of-bounds read in
303 + the sparse-index expansion check helper
304 + pathspec_needs_expanded_index() has been fixed by consistently
305 + using the parsed, prefixed path.
306
319 - Will merge to 'master'.
320 - source: <pull.2189.git.1785239196007.gitgitgadget@gmail.com>
307 + Graduated to 'master'.
308 + cf. <al61UTM0aK9j9eiP@com-79390>
309 + cf. <al61ERa3fS2MerHp@com-79390>
310 + source: <20260720223118.62821-4-tnyman@openai.com>
311
312
323 -* ns/merge-base-is-ancestor-tests (2026-07-25) 1 commit
324 - - merge-base: add tests for --is-ancestor
313 +* ty/migrate-excludes-file (2026-07-13) 10 commits
314 + (merged to 'next' on 2026-07-23 at 749560a29c)
315 + + repository: adjust the comment of config_values_private_
316 + + environment: move object_creation_mode into repo_config_values
317 + + environment: move autorebase into repo_config_values
318 + + environment: move push_default into repo_config_values
319 + + environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
320 + + environment: move askpass_program into repo_config_values
321 + + environment: move pager_program into repo_config_values
322 + + environment: move editor_program into repo_config_values
323 + + environment: move excludes_file into repo_config_values
324 + + repository: introduce repo_config_values_clear()
325
326 - Tests for 'git merge-base --is-ancestor' have been added to cover
327 - exit codes (0 for success, 1 for non-ancestor, 128 for errors) and
328 - to ensure it cannot be combined with '--all'.
326 + The 'excludes_file' and various other global configuration variables
327 + (including 'editor_program', 'pager_program', 'askpass_program', and
328 + 'push_default') have been migrated into the per-repository structure.
329
330 - Waiting for response.
331 - cf. <9a47d529-6195-435b-90a6-e511856f128e@gmail.com>
332 - source: <pull.2186.git.1784998828879.gitgitgadget@gmail.com>
330 + Graduated to 'master'.
331 + cf. <xmqqa4ruyhbh.fsf@gitster.g>
332 + source: <20260714032525.1611141-1-cat@malon.dev>
333
334
335 -* jc/add-resolved (2026-07-29) 4 commits
336 - - add: introduce '--resolved' option
337 - - read-cache: add remove_file_from_index_with_flags()
338 - - merge-ll: consolidate conflict marker scanning logic
339 - - read-cache: reindent
335 +* ty/migrate-trust-executable-bit (2026-07-20) 4 commits
336 + (merged to 'next' on 2026-07-23 at 4873f289dd)
337 + + environment: move has_symlinks into repo_config_values
338 + + environment: move trust_executable_bit into repo_config_values
339 + + read-cache: pass 'repo' to 'ce_mode_from_stat()'
340 + + read-cache: remove redundant extern declarations
341
341 - 'git add' has been taught a new '--resolved' option to stage
342 - conflict-resolved paths, while leaving unrelated local changes
343 - unstaged. It scans the unmerged paths for leftover conflict markers
344 - and aborts if any are found.
342 + The 'trust_executable_bit' (coming from the 'core.filemode'
343 + configuration) has been migrated into 'struct repo_config_values' to
344 + tie it to a specific repository instance.
345
346 - Will merge to 'next'?
347 - cf. <xmqqse51algy.fsf@gitster.g>
348 - source: <20260729172524.4022621-1-gitster@pobox.com>
346 + Graduated to 'master'.
347 + cf. <alvNq8rXF/jofqUc@szeder.dev>
348 + cf. <xmqq8q7961xe.fsf@gitster.g>
349 + source: <20260720105335.3202013-1-cat@malon.dev>
350
351 --------------------------------------------------
352 [Stalled]
353
354 +* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
355 + - submodule absorbgitdirs tests: use test_* helper functions
356 +
357 + The test script 't7412' that tests 'git submodule absorbgitdirs' has
358 + been modernized to use test_path_is_file(), test_path_is_dir(), and
359 + test_path_is_missing() helper functions instead of raw 'test -[fde]'
360 + commands.
361 +
362 + Waiting for response for too long, stalled.
363 + cf. <akTKHfKPsP3-Rn31@pks.im>
364 + cf. <xmqqik60o22y.fsf@gitster.g>
365 + source: <20260630020220.1559190-1-bblima@usp.br>
366 +
367 +
368 * tb/repack-geometric-cruft (2026-06-28) 11 commits
369 - SQUASH??? bare grep !???
370 - repack: support combining '--geometric' with '--cruft'
@@ -368,9 +383,8 @@ Release tarballs are available at:
383 geometric repack as usual, while a separate cruft pack is written to
384 collect unreachable objects.
385
371 - Waiting for response.
386 + Waiting for response for too long, stalled.
387 cf. <xmqqwlugo4nk.fsf@gitster.g>
373 - cf. <e3d2e46443d0b32ce29215563dde04ebcf850679.1782500507.git.me@ttaylorr.com>
388 source: <cover.1782500507.git.me@ttaylorr.com>
389
390
@@ -382,7 +396,7 @@ Release tarballs are available at:
396 fetch the branch from the remote that the new branch will work with.
397
398 Will discard.
385 - cf. <xmqqtsr0tvci.fsf@gitster.g>
399 + cf. <xmqq8q71clob.fsf@gitster.g>
400 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>
401
402
@@ -394,14 +408,17 @@ Release tarballs are available at:
408 updated to hide dotfiles by default unless the user explicitly starts
409 the path with a dot, matching standard shell-completion behavior.
410
397 - Waiting for response, stalled.
411 + Waiting for response for too long, stalled.
412 + cf. <xmqq1pe0g08t.fsf@gitster.g>
413 cf. <xmqq4ihpclo8.fsf@gitster.g>
399 - cf. <xmqqik71t3nr.fsf@gitster.g>
414 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>
415
416 +--------------------------------------------------
417 +[Cooking]
418
403 -* kh/doc-trailers (2026-06-10) 10 commits
419 +* kh/doc-trailers (2026-07-30) 11 commits
420 - doc: interpret-trailers: document comment line treatment
421 + - doc: interpret-trailers: rewrite new-trailers paragraphs
422 - doc: interpret-trailers: commit to “trailer block” term
423 - doc: interpret-trailers: join new-trailers again
424 - doc: interpret-trailers: add key format example
@@ -411,43 +428,172 @@ Release tarballs are available at:
428 - doc: interpret-trailers: use “metadata” in Name as well
429 - doc: interpret-trailers: replace “lines” with “metadata”
430 - doc: interpret-trailers: stop fixating on RFC 822
431 + (this branch is used by kh/trailers-no-urls.)
432
433 Documentation for 'git interpret-trailers' has been updated to explain
434 the format of trailer keys (alphanumeric characters and hyphens),
435 replace outdated terminology, define key terms upfront, and document
436 how comment lines in the input are treated.
437
420 - Will discard.
421 - cf. <xmqq1pedthkv.fsf@gitster.g>
422 - source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>
438 + Needs review.
439 + source: <V4_CV_doc_int-tr_key_format.ae2@msgid.xyz>
440
441
425 -* kh/doc-replay-config (2026-06-05) 4 commits
426 - - doc: replay: move “default” to the right-hand side
427 - - doc: replay: use a nested description list
428 - - doc: replay: improve config description
429 - - doc: link to config for git-replay(1)
442 +* kh/doc-replay-config (2026-07-30) 4 commits
443 + (merged to 'next' on 2026-08-03 at 5450adb2e1)
444 + + doc: replay: move “default” to the right-hand side
445 + + doc: replay: use a nested description list
446 + + doc: replay: improve config description
447 + + doc: link to config for git-replay(1)
448
449 Documentation for 'git replay' has been updated to refer to its
450 configuration variables.
451
434 - Will discard.
435 - cf. <xmqqv7a5b6n7.fsf@gitster.g>
436 - source: <V3_CV_doc_replay_config.780@msgid.xyz>
452 + Will merge to 'master'.
453 + cf. <xmqq4ihfduxi.fsf@gitster.g>
454 + source: <V4_CV_doc_replay_config.af3@msgid.xyz>
455
438 ---------------------------------------------------
439 -[Cooking]
456
441 -* jc/remote-insteadof-leakfix (2026-07-25) 1 commit
442 - (merged to 'next' on 2026-07-27 at 8cf88af88b)
443 - + remote: plug memory leaks
457 +* sk/test-commit-body-helper (2026-07-27) 2 commits
458 + (merged to 'next' on 2026-08-03 at ce42e63135)
459 + + t: use commit_body to extract commit message bodies
460 + + test-lib-functions: add commit_body helper
461
445 - rewrites_release() in 'remote.c' has been updated to free 'struct
446 - rewrite' instances, their '.instead_of' arrays, and their contents.
462 + A new test helper commit_body() has been introduced to print the
463 + message body of a commit, and various tests have been updated to use
464 + it instead of spelling out the command pipeline manually and losing
465 + the exit status of the 'git cat-file' command on the upstream of the
466 + pipe.
467 +
468 + Will merge to 'master'.
469 + cf. <xmqqpl05o5n7.fsf@gitster.g>
470 + source: <20260727095656.75496-1-diy2903@gmail.com>
471 +
472 +
473 +* jk/cat-file-batch-wo-type-fix (2026-07-28) 1 commit
474 + (merged to 'next' on 2026-07-31 at 2d67bd3ccf)
475 + + cat-file: handle content request for --batch-command without type
476 +
477 + 'git cat-file --batch-command' that asked for 'contents' without
478 + 'type' segfaults, which has been corrected.
479 +
480 + Will merge to 'master'.
481 + cf. <xmqqjyqfdnie.fsf@gitster.g>
482 + source: <20260728150031.GA41931@coredump.intra.peff.net>
483 +
484 +
485 +* tc/merge-default-to-upstream-leakfix (2026-07-28) 1 commit
486 + (merged to 'next' on 2026-07-31 at b10497d8a4)
487 + + merge: fix leak with merge.defaultToUpstream
488 +
489 + A memory leak in 'git merge' when run without arguments (which
490 + triggers the default-to-upstream path) has been fixed. A test has
491 + been added to cover this case.
492 +
493 + Will merge to 'master'.
494 + cf. <20260728151959.GC41931@coredump.intra.peff.net>
495 + cf. <xmqqfr13dlv8.fsf@gitster.g>
496 + source: <20260728-toon-fix-merge-leak-v1-1-d6bd161a3acf@iotcl.com>
497 +
498 +
499 +* cl/regexec-macos-leak (2026-07-28) 2 commits
500 + - SQUASH???
501 + - regexec: work around macOS TRE leak on invalid UTF-8
502 +
503 + A compatibility workaround has been introduced for macOS to address
504 + a memory leak in the system regex engine when it encounters invalid
505 + multibyte sequences. The workaround segments the input buffer at
506 + invalid byte boundaries and searches each valid segment separately
507 + using regexec(), avoiding the leaking path.
508 +
509 + Waiting for response.
510 + cf. <xmqqse52bpa9.fsf@gitster.g>
511 + source: <20260728052538.12429-1-chungmin@chungminlee.com>
512 +
513 +
514 +* dl/pack-bitmap-position-zero (2026-07-28) 1 commit
515 + (merged to 'next' on 2026-07-31 at b200bed995)
516 + + pack-bitmap: handle objects at bitmap position zero
517 +
518 + A boundary case check in reachability bitmap traversal has been
519 + corrected to properly handle the object at position zero, which was
520 + previously skipped, leading to redundant bitmap loading.
521 +
522 + Will merge to 'master'.
523 + cf. <amk75SuhyHBbx-E8@com-79390>
524 + cf. <xmqq5x1yd968.fsf@gitster.g>
525 + source: <20260728135248.61304-1-davidlin@stripe.com>
526 +
527 +
528 +* hn/checkout-m-autostash-refine (2026-07-25) 2 commits
529 + - checkout -m: refine autostash fallback
530 + - sequencer: teach autostash apply to report conflicts
531 +
532 + The autostash fallback in 'git checkout -m' has been refined to only
533 + retry when there are local changes. Additionally, a blank line now
534 + visually separates autostash conflict advice from the subsequent
535 + branch-switch message.
536 +
537 + Needs review.
538 + cf. <xmqqwluebuhb.fsf@gitster.g>
539 + source: <pull.2364.git.git.1784993669.gitgitgadget@gmail.com>
540 +
541 +
542 +* jk/t0014-dynamic-deprecated-cmds (2026-07-28) 2 commits
543 + (merged to 'next' on 2026-07-29 at 39a86632e6)
544 + + t0014: generate deprecated command names dynamically
545 + + t0014: factor out choice of deprecated commands
546 +
547 + The alias tests in 't/t0014-alias.sh' have been updated to dynamically
548 + query the list of deprecated commands using 'git
549 + --list-cmds=deprecated' to avoid test failures when running with
550 + 'WITH_BREAKING_CHANGES' in a build directory that contains stale
551 + executables of formerly deprecated commands.
552 +
553 + Will merge to 'master'.
554 + source: <20260728143653.GB11894@coredump.intra.peff.net>
555 +
556 +
557 +* js/mingw-symlink-net-share-leak (2026-07-28) 1 commit
558 + (merged to 'next' on 2026-07-29 at 250fe7f194)
559 + + mingw: skip symlink type auto-detection for network share targets
560 +
561 + Git for Windows has been updated to avoid auto-detecting the symlink
562 + type if the target path starts with a slash, preventing NTLM
563 + credential leaks when checking out repositories with crafted
564 + symbolic links pointing to network shares.
565 +
566 + Will merge to 'master'.
567 + source: <pull.2189.git.1785239196007.gitgitgadget@gmail.com>
568 +
569 +
570 +* ns/merge-base-is-ancestor-tests (2026-07-29) 1 commit
571 + (merged to 'next' on 2026-08-03 at cf2c4e00eb)
572 + + merge-base: add tests for --is-ancestor
573 +
574 + Tests for 'git merge-base --is-ancestor' have been added to cover
575 + exit codes (0 for success, 1 for non-ancestor, 128 for errors) and
576 + to ensure it cannot be combined with '--all'.
577 +
578 + Will merge to 'master'.
579 + cf. <xmqq8q6slb2t.fsf@gitster.g>
580 + source: <pull.2186.v2.git.1785392350660.gitgitgadget@gmail.com>
581 +
582 +
583 +* jc/add-resolved (2026-07-31) 4 commits
584 + - add: introduce '--resolved' option
585 + - read-cache: add remove_file_from_index_with_flags()
586 + - merge-ll: consolidate conflict marker scanning logic
587 + - read-cache: reindent
588
448 - Will merge to 'master'.
449 - cf. <20260725161819.GA2343104@coredump.intra.peff.net>
450 - source: <xmqqpl0b12gj.fsf@gitster.g>
589 + 'git add' has been taught a new '--resolved' option to stage
590 + conflict-resolved paths, while leaving unrelated local changes
591 + unstaged. It scans the unmerged paths for leftover conflict
592 + markers and aborts if any are found.
593 +
594 + Will merge to 'next'?
595 + cf. <20260801141414.GD2041176@coredump.intra.peff.net>
596 + source: <20260731125605.3638938-1-gitster@pobox.com>
597
598
599 * tb/pack-with-duplicates (2026-07-24) 5 commits
@@ -468,21 +614,22 @@ Release tarballs are available at:
614 source: <cover.1784927134.git.ttaylorr@openai.com>
615
616
471 -* ps/cat-file-remote-object-info-type (2026-07-25) 6 commits
617 +* ps/cat-file-remote-object-info-type (2026-08-03) 9 commits
618 - cat-file: unify default format
619 - serve: advertise type capability
474 - - fetch-object-info: request all supported options dynamically
620 - fetch-object-info: parse type from server response
621 - protocol-caps: add type support to object-info
622 + - fetch-object-info: use dedicated struct for the results
623 + - fetch-object-info: pass arguments directly instead of a struct
624 + - fetch-object-info: detect truncated server responses
625 + - t5701: use test_file_size() to get the size of a file
626 - Merge branch 'ps/cat-file-remote-object-info' into ps/cat-file-remote-object-info-type
478 - (this branch uses ps/cat-file-remote-object-info.)
627
628 The 'remote-object-info' command for 'git cat-file --batch-command'
629 has been extended to support the '%(objecttype)' placeholder.
630
631 Needs review.
484 - cf. <xmqqecglajnj.fsf@gitster.g>
485 - source: <20260725-objecttype-support-v1-0-2d4ca3bbabf1@gmail.com>
632 + source: <20260803-objecttype-support-v3-0-7176fecf7950@gmail.com>
633
634
635 * rs/branch-delete-bisect-warning (2026-07-25) 1 commit
@@ -506,7 +653,7 @@ Release tarballs are available at:
653 The image version used by the static-analysis CI job has been bumped
654 to ubuntu-latest (Ubuntu 24.04), which brings in a newer Coccinelle
655 version that resolves a severe performance regression. A false
509 - positive warning from the CHECK_ASSERTION_SIDE_EFFECTS build with
656 + positive warning from the 'CHECK_ASSERTION_SIDE_EFFECTS' build with
657 GCC 15 in the Bloom filter code has also been silenced to facilitate
658 the image upgrade.
659
@@ -516,35 +663,25 @@ Release tarballs are available at:
663
664
665 * jk/diff-relative-cached-unmerged-more (2026-07-26) 3 commits
519 - - diff-lib: skip paths outside prefix in oneway_diff()
520 - - diff-lib: drop stale comment about advancing o->pos
521 - - Merge branch 'jk/diff-relative-cached-unmerged' into jk/diff-relative-cached-unmerged-more
666 + (merged to 'next' on 2026-07-30 at d8636bd744)
667 + + diff-lib: skip paths outside prefix in oneway_diff()
668 + + diff-lib: drop stale comment about advancing o->pos
669 + + Merge branch 'jk/diff-relative-cached-unmerged' into jk/diff-relative-cached-unmerged-more
670 (this branch uses jk/diff-relative-cached-unmerged.)
671
672 The code path that deals with relative paths in the diff-lib has
673 been cleaned up.
674
527 - Waiting for review.
675 + Will merge to 'master'.
676 cf. <xmqqo6frdqy5.fsf@gitster.g>
677 cf. <20260728171249.GA643101@coredump.intra.peff.net>
678 source: <20260726084550.GC2366012@coredump.intra.peff.net>
679
680
533 -* af/clone-revision-v0-segfault-fix (2026-07-24) 1 commit
534 - (merged to 'next' on 2026-07-27 at 57c0e98bfb)
535 - + builtin/clone: fix segfault when using --revision with protocol v0
536 -
537 - A segfault when 'git clone --revision' talks to a server that does not
538 - support protocol v2 (falling back to protocol v0) has been corrected.
539 -
540 - Will merge to 'master'.
541 - cf. <xmqqldb08jcd.fsf@gitster.g>
542 - source: <20260724124138.666877-1-adrian.friedli@mt.com>
543 -
544 -
545 -* lo/mv-missing-dest-dir-check (2026-07-26) 2 commits
546 - - mv: reject a destination whose leading path is missing or a symlink
547 - - mv: name both source and destination when rename fails
681 +* lo/mv-missing-dest-dir-check (2026-07-30) 2 commits
682 + (merged to 'next' on 2026-08-03 at 7643cf1c2a)
683 + + mv: reject a destination whose leading path is missing or a symlink
684 + + mv: name both source and destination when rename fails
685
686 'git mv' has been updated to check for a missing destination
687 leading directory during the checking phase, allowing 'git mv -n'
@@ -552,9 +689,9 @@ Release tarballs are available at:
689 syscall fails has also been improved to name both the source and
690 the destination.
691
555 - Waiting for response.
556 - cf. <xmqqbjbsgjfu.fsf@gitster.g>
557 - source: <pull.2356.v4.git.git.1785097071.gitgitgadget@gmail.com>
692 + Will merge to 'master'.
693 + cf. <xmqqtspgjkwb.fsf@gitster.g>
694 + source: <pull.2356.v5.git.git.1785410884.gitgitgadget@gmail.com>
695
696
697 * ps/odb-make-creation-pluggable (2026-07-23) 5 commits
@@ -571,27 +708,10 @@ Release tarballs are available at:
708 detangled from repository initialization.
709
710 Waiting for response.
574 - cf. <amkcNhMTKqWdLXwX@denethor>
575 - cf. <amkXcmwzbBYsMgjc@denethor>
576 - cf. <amkOb3rvWFUpnT28@denethor>
577 - cf. <amkMipjGA_7cwpOR@denethor>
711 + cf. <87pl04d03q.fsf@emacs.iotcl.com>
712 source: <20260724-pks-odb-create-on-disk-v1-0-3b3d265d979b@pks.im>
713
714
581 -* jt/config-lock-timeout (2026-05-17) 1 commit
582 - (merged to 'next' on 2026-07-24 at 3cb8da6b6a)
583 - + config: retry acquiring config.lock, configurable via core.configLockTimeout
584 -
585 - Configuration file locking has been updated to retry for a short
586 - period, avoiding failures when multiple processes attempt to update
587 - the configuration simultaneously.
588 -
589 - Will merge to 'master'.
590 - cf. <agrIrGwSMFlKTx9x@pks.im>
591 - cf. <xmqqzf1xbl4i.fsf@gitster.g>
592 - source: <20260517132111.1014901-1-joerg@thalheim.io>
593 -
594 -
715 * hs/rebase-continue-edit (2026-07-21) 1 commit
716 - rebase: add --[no-]edit to --continue
717
@@ -601,41 +721,11 @@ Release tarballs are available at:
721 'rebase.noEdit' can be used to set the default behavior.
722
723 Waiting for a response.
724 + cf. <xmqqldb4xlqa.fsf@gitster.g>
725 cf. <db7edc66-9b2a-47bc-98db-87d01885cef0@gmail.com>
605 - cf. <xmqqse5brq8s.fsf@gitster.g>
726 source: <20260721140443.1809379-2-hugo@hsal.es>
727
728
609 -* tn/stash-avoid-sparse-index-expansion (2026-07-20) 2 commits
610 - (merged to 'next' on 2026-07-23 at 8ccf28493e)
611 - + stash: avoid sparse-index expansion for in-cone paths
612 - + pathspec: use match for sparse-index expansion checks
613 -
614 - The 'git stash push' command has been optimized to avoid unnecessary
615 - sparse index expansion when pathspecs are wholly inside the
616 - sparse-checkout cone. Also, a potential out-of-bounds read in the
617 - sparse-index expansion check helper pathspec_needs_expanded_index()
618 - has been fixed by consistently using the parsed, prefixed path.
619 -
620 - Will merge to 'master'.
621 - cf. <al61UTM0aK9j9eiP@com-79390>
622 - cf. <al61ERa3fS2MerHp@com-79390>
623 - source: <20260720223118.62821-4-tnyman@openai.com>
624 -
625 -
626 -* en/submodule-insteadof-remote-match (2026-07-22) 1 commit
627 - (merged to 'next' on 2026-07-27 at a1cbd7aa11)
628 - + submodule: resolve insteadOf aliases when matching remote
629 -
630 - The remote-matching logic for submodules has been corrected to
631 - resolve 'url.*.insteadOf' aliases before comparing the inventoried
632 - URL from '.gitmodules' with the URLs of configured remotes.
633 -
634 - Will merge to 'master'.
635 - cf. <xmqqldb05dlo.fsf@gitster.g>
636 - source: <20260723002132.3989727-1-ccjmne@gmail.com>
637 -
638 -
729 * td/fsmonitor-darwin-cookie-flush (2026-07-21) 1 commit
730 - fsmonitor: flush pending FSEvents before cookie wait
731
@@ -645,22 +735,9 @@ Release tarballs are available at:
735
736 Waiting for response.
737 cf. <CAOTNsDy4pKbPHdK1T688Ax6Mgz15K-qfZR-8fAvTk48z3E43Rg@mail.gmail.com>
648 - cf. <xmqqh5lo5dib.fsf@gitster.g>
738 source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>
739
740
652 -* jc/exclude-first-parent-seen (2026-07-22) 1 commit
653 - (merged to 'next' on 2026-07-25 at 85755d1d45)
654 - + revision: honor --exclude-first-parent-only with SEEN first parent
655 -
656 - Traversals with '--exclude-first-parent-only' have been corrected to
657 - properly stop after the first parent even when it has already been
658 - marked as SEEN.
659 -
660 - Will merge to 'master'.
661 - source: <xmqqbjbzq7n2.fsf@gitster.g>
662 -
663 -
741 * sn/rebase-update-refs-symrefs (2026-07-22) 2 commits
742 - rebase: guard non-branch symref targets
743 - rebase: skip branch symref aliases
@@ -671,51 +748,24 @@ Release tarballs are available at:
748 prevent failures when branch aliases are present.
749
750 Waiting for response.
674 - cf. <61291144-60da-4e37-83ef-fe09e91c4f51@gmail.com>
675 - cf. <xmqqwludan2m.fsf@gitster.g>
751 + cf. <0844b4e0-679b-4c0a-bea1-5779b4d0489d@gmail.com>
752 source: <pull.2126.v3.git.1784708107.gitgitgadget@gmail.com>
753
754
755 * ja/doc-synopsis-style-yet-more (2026-07-23) 4 commits
680 - - doc: convert git-request-pull synopsis and options to new style
681 - - doc: convert git-send-email synopsis and options to new style
682 - - doc: convert git-format-patch synopsis and options to new style
683 - - doc: convert git-imap-send synopsis and options to new style
756 + (merged to 'next' on 2026-08-03 at c744bba04e)
757 + + doc: convert git-request-pull synopsis and options to new style
758 + + doc: convert git-send-email synopsis and options to new style
759 + + doc: convert git-format-patch synopsis and options to new style
760 + + doc: convert git-imap-send synopsis and options to new style
761
762 Synopsis and options in the documentation for 'git format-patch',
763 'git imap-send', 'git send-email', and 'git request-pull' have been
764 updated to the modern style.
765
689 - Needs review.
690 - cf. <740b24631de2c2aff01dcb461f60121fbd11bfe1.1784841567.git.gitgitgadget@gmail.com>
691 - source: <pull.2185.v2.git.1784841567.gitgitgadget@gmail.com>
692 -
693 -
694 -* hn/url-push-tracking (2026-07-22) 2 commits
695 - (merged to 'next' on 2026-07-25 at 9b776656fc)
696 - + remote: find tracking branches for URL push destinations
697 - + remote: pass repository to push tracking helper
698 -
699 - When the push remote is specified as a URL, the fetch refspec of a
700 - uniquely matching configured remote is now used to find and update
701 - the remote-tracking branch (e.g., '@{push}').
702 -
703 - Will merge to 'master'.
704 - cf. <xmqqpl0eoniz.fsf@gitster.g>
705 - source: <pull.2358.v4.git.git.1784743738.gitgitgadget@gmail.com>
706 -
707 -
708 -* tl/gitweb-shorten-hashes-with-modes (2026-07-17) 1 commit
709 - (merged to 'next' on 2026-07-25 at 5b92e8a325)
710 - + gitweb: shorten index hashes with trailing file modes
711 -
712 - The object ID shortening and linking in the 'commitdiff' view of
713 - 'gitweb' has been corrected to work even when the index line carries
714 - a trailing file mode.
715 -
766 Will merge to 'master'.
717 - cf. <xmqqjyqu6u7i.fsf@gitster.g>
718 - source: <SA1PR10MB9977150C823C0751E53B150D5AF1C62@SA1PR10MB997715.namprd10.prod.outlook.com>
767 + cf. <xmqqldato56l.fsf@gitster.g>
768 + source: <pull.2185.v2.git.1784841567.gitgitgadget@gmail.com>
769
770
771 * kj/repo-info-more-path-keys (2026-07-26) 7 commits
@@ -732,50 +782,11 @@ Release tarballs are available at:
782 root, superproject working tree, object database, etc.), supporting
783 both absolute and relative path formats.
784
735 - Waiting for review.
736 - cf. <amjUPEgenletgbp5@denethor>
785 + Expecting a reroll.
786 cf. <CA+rGoLfJ5Kc_HV7YfJ-y5SpMjb7t7f5ifUKcd=39eTjqzzQF5w@mail.gmail.com>
787 source: <20260726104343.16933-1-jayatheerthkulkarni2005@gmail.com>
788
789
741 -* sk/userdiff-swift (2026-07-20) 1 commit
742 - (merged to 'next' on 2026-07-23 at 45dbcc6307)
743 - + userdiff: add support for Swift
744 -
745 - Userdiff patterns for Swift have been added, with support for
746 - Swift-specific constructs such as attributes, modifiers, failable
747 - initializers, and generics.
748 -
749 - Will merge to 'master'.
750 - cf. <2a3a73c5-5e90-44a3-bf6a-6e98ce5e5a59@kdbg.org>
751 - cf. <7b541cd5-bd66-4675-818d-8e23eb1c9530@kdbg.org>
752 - source: <20260721065736.8747-1-diy2903@gmail.com>
753 -
754 -
755 -* ps/odb-move-loose-object-writing (2026-07-17) 10 commits
756 - (merged to 'next' on 2026-07-25 at 244d577d93)
757 - + object-file: move logic to write loose objects
758 - + object-file: move `force_object_loose()`
759 - + object-file: force objects loose via generic interface
760 - + object-file: fix memory leak in `force_object_loose()`
761 - + odb: support setting mtime when writing objects
762 - + odb: lift object existence check out of the "loose" backend
763 - + odb: compute object hash in `odb_write_object_ext()`
764 - + t/u-odb-inmemory: implement wrapper for writing objects
765 - + odb: compute compat object ID in `odb_write_object_ext()`
766 - + Merge branch 'jt/receive-pack-use-odb-transactions' into HEAD
767 -
768 - The logic to write loose objects has been refactored and moved from
769 - 'object-file.c' to the loose backend source file 'odb/source-loose.c',
770 - making the loose backend more self-contained. This is achieved by
771 - first refactoring force_object_loose() to use generic ODB write
772 - interfaces instead of loose-backend internals.
773 -
774 - Will merge to 'master'.
775 - cf. <xmqqecgzpm0y.fsf@gitster.g>
776 - source: <20260717-pks-odb-move-loose-object-writing-v1-0-46446a3cb5b7@pks.im>
777 -
778 -
790 * pw/rebase-fixup-fixes (2026-07-26) 2 commits
791 (merged to 'next' on 2026-07-28 at 736307fae5)
792 + rebase: remember fixup -c after skipping fixup/squash
@@ -804,13 +815,12 @@ Release tarballs are available at:
815 to pre-filter commits, and maintains per-path Bloom filters even when
816 wildcard pathspecs are used.
817
807 - Waiting for a response.
808 - cf. <20260718083757.GD22588@coredump.intra.peff.net>
809 - cf. <xmqqwlut1gzc.fsf@gitster.g>
818 + Expecting a reroll.
819 + cf. <87cxwl1lb4.fsf@emacs.iotcl.com>
820 source: <20260717-toon-speed-up-last-modified-v1-0-410418f18614@iotcl.com>
821
822
813 -* hn/bisect-reset-when-found (2026-07-20) 2 commits
823 +* hn/bisect-reset-when-found (2026-08-02) 2 commits
824 - bisect: add --reset-when-found to leave when done
825 - bisect: let bisect_reset() optionally check out quietly
826
@@ -819,9 +829,9 @@ Release tarballs are available at:
829 automatically run 'git bisect reset' to jump back to the original
830 state or to the found culprit.
831
822 - Waiting for response.
823 - cf. <faa22968-54ac-4e4f-8324-3326ffb00c5b@kdbg.org>
824 - source: <pull.2335.v3.git.git.1784538619.gitgitgadget@gmail.com>
832 + Waiting for a response.
833 + cf. <xmqqjyq812wr.fsf@gitster.g>
834 + source: <pull.2335.v6.git.git.1785705860.gitgitgadget@gmail.com>
835
836
837 * js/coverity-unchecked-returns-fix (2026-07-14) 11 commits
@@ -843,6 +853,7 @@ Release tarballs are available at:
853 about unchecked returns.
854
855 Waiting for response.
856 + cf. <xmqqh5lui6wg.fsf@gitster.g>
857 cf. <xmqqcxwii6wd.fsf@gitster.g>
858 cf. <alcvnm0xiOv5W0w_@pks.im>
859 source: <pull.2179.git.1784069325.gitgitgadget@gmail.com>
@@ -871,14 +882,16 @@ Release tarballs are available at:
882 functions, replacing potential program crashes with blank placeholder
883 timestamps in the traces.
884
874 - Waiting for response.
875 - cf. <xmqqzezlhgyo.fsf@gitster.g>
876 - cf. <al4yrXXoZiHLwSvE@com-79390>
885 + Expecting a reroll.
886 + cf. <alpXW5U6sndZtgqV@com-79390>
887 + cf. <fbb118df-7c82-49a5-90bb-4458b7e9a850@gmail.com>
888 + cf. <xmqqpl03cfua.fsf@gitster.g>
889 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>
890
891
892 * mm/revision-pure-get-commit-action (2026-07-15) 1 commit
881 - - revision: make get_commit_action() a pure predicate
893 + (merged to 'next' on 2026-07-31 at ae6730749f)
894 + + revision: make get_commit_action() a pure predicate
895
896 The get_commit_action() function has been refactored to be a pure
897 predicate by moving the side-effecting line-level log range folding to
@@ -886,9 +899,8 @@ Release tarballs are available at:
899 before the walk reaches it does not prematurely mutate its tracked
900 line ranges, making it safer for potential lookahead evaluations.
901
889 - Will merge to 'next'?
902 + Will merge to 'master'.
903 cf. <xmqq8q6wpmuy.fsf@gitster.g>
891 - cf. <xmqqcxw8pnsa.fsf@gitster.g>
904 source: <pull.2169.git.1784143793613.gitgitgadget@gmail.com>
905
906
@@ -938,7 +950,6 @@ Release tarballs are available at:
950 encoded packfiles when the other side asks it to.
951
952 Needs review.
941 - cf. <alQ7WKITYDXfiVn9@com-79390>
953 source: <alQ7WKITYDXfiVn9@com-79390>
954
955
@@ -957,29 +968,11 @@ Release tarballs are available at:
968 'fetch-pack' command has also been updated to tolerate pre-existing
969 '.keep' files.
970
960 - Needs review.
961 - cf. <cover.1785047139.git.tnyman@openai.com>
971 + Will merge to 'next'?
972 + cf. <20260801135313.GA2041176@coredump.intra.peff.net>
973 source: <cover.1785111375.git.tnyman@openai.com>
974
975
965 -* rs/tempfile-wo-the-repository (2026-07-14) 5 commits
966 - (merged to 'next' on 2026-07-22 at 968a116891)
967 - + use repo_hold_lock_file_for_update{,_mode,_timeout}() with custom repos
968 - + tempfile: stop using the_repository
969 - + lockfile: add repo_hold_lock_file_for_update{,_timeout}{,_mode}()
970 - + refs/packed: use repo_create_tempfile()
971 - + tempfile: add repo_create_tempfile{,_mode}()
972 -
973 - The tempfile and lockfile APIs have been refactored to stop depending
974 - on the 'the_repository' global variable, and their callers have been
975 - updated to use the repository-aware variants.
976 -
977 - Will merge to 'master'.
978 - cf. <xmqq8q7ds3ld.fsf@gitster.g>
979 - cf. <xmqqmrvmn6a5.fsf@gitster.g>
980 - source: <20260714175956.54601-1-l.s.r@web.de>
981 -
982 -
976 * js/pack-objects-delta-size-t (2026-07-09) 12 commits
977 - git-zlib: widen `git_deflate_bound()` to `size_t`
978 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
@@ -999,7 +992,6 @@ Release tarballs are available at:
992 limits, avoiding potential truncation issues on 64-bit Windows.
993
994 Needs review.
1002 - cf. <pull.2175.git.1783615780.gitgitgadget@gmail.com>
995 source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>
996
997
@@ -1017,7 +1009,7 @@ Release tarballs are available at:
1009 also fails.
1010
1011 Needs review.
1020 - cf. <20260716140956.1023740-1-paulius.zaleckas@gmail.com>
1012 + cf. <xmqq7bmwm5g6.fsf@gitster.g>
1013 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>
1014
1015
@@ -1029,7 +1021,7 @@ Release tarballs are available at:
1021 to spawn a 'git apply' subprocess.
1022
1023 Needs review.
1032 - cf. <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>
1024 + cf. <xmqq8q6to4em.fsf@gitster.g>
1025 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>
1026
1027
@@ -1044,7 +1036,8 @@ Release tarballs are available at:
1036 Ejected due to conflicts with 'pw/rebase-drop-notes-with-commit'.
1037
1038 Waiting for response.
1047 - cf. <b4cf8f14-1ffa-4395-bc3e-936538574665@gmail.com>
1039 + cf. <690b965e-5f07-4aa4-a64c-96e60a86d73b@gmail.com>
1040 + cf. <xmqqh5m494yh.fsf@gitster.g>
1041 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>
1042
1043
@@ -1058,7 +1051,7 @@ Release tarballs are available at:
1051 Apache handles concurrent requests.
1052
1053 Needs review.
1061 - cf. <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>
1054 + cf. <CAC2QwmLWkk4JS2XKLdj4i4CAtr7zZo=9tV_=pPQ77zR+R=pGUw@mail.gmail.com>
1055 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>
1056
1057
@@ -1090,14 +1083,15 @@ Release tarballs are available at:
1083
1084
1085 * ds/sparse-index-ita-crash (2026-07-06) 1 commit
1093 - - sparse-index: avoid crash on intent-to-add entry outside the cone
1086 + (merged to 'next' on 2026-07-31 at 21b8a5bc05)
1087 + + sparse-index: avoid crash on intent-to-add entry outside the cone
1088
1089 A crash in the 'sparse-index' collapse code when encountering an
1090 invalidated cache-tree node (due to an intent-to-add path) has been
1091 fixed by avoiding collapsing such subtrees.
1092
1099 - Needs review.
1100 - cf. <pull.2167.git.1783345853272.gitgitgadget@gmail.com>
1093 + Will merge to 'master'.
1094 + cf. <xmqq33x1o465.fsf@gitster.g>
1095 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>
1096
1097
@@ -1137,46 +1131,9 @@ Release tarballs are available at:
1131 the header is ultimately rejected.
1132
1133 Needs review.
1140 - cf. <20260702041759.51572-1-zhihao.yao@njit.edu>
1134 source: <20260702041759.51572-1-zhihao.yao@njit.edu>
1135
1136
1144 -* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
1145 - - submodule absorbgitdirs tests: use test_* helper functions
1146 -
1147 - The test script 't7412' that tests 'git submodule absorbgitdirs' has
1148 - been modernized to use test_path_is_file(), test_path_is_dir(), and
1149 - test_path_is_missing() helper functions instead of raw 'test -[fde]'
1150 - commands.
1151 -
1152 - Waiting for response for too long, stalled.
1153 - cf. <xmqqik60o22y.fsf@gitster.g>
1154 - cf. <akTKHfKPsP3-Rn31@pks.im>
1155 - source: <20260630020220.1559190-1-bblima@usp.br>
1156 -
1157 -
1158 -* ty/migrate-excludes-file (2026-07-13) 10 commits
1159 - (merged to 'next' on 2026-07-23 at 749560a29c)
1160 - + repository: adjust the comment of config_values_private_
1161 - + environment: move object_creation_mode into repo_config_values
1162 - + environment: move autorebase into repo_config_values
1163 - + environment: move push_default into repo_config_values
1164 - + environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
1165 - + environment: move askpass_program into repo_config_values
1166 - + environment: move pager_program into repo_config_values
1167 - + environment: move editor_program into repo_config_values
1168 - + environment: move excludes_file into repo_config_values
1169 - + repository: introduce repo_config_values_clear()
1170 -
1171 - The 'excludes_file' and various other global configuration variables
1172 - (including 'editor_program', 'pager_program', 'askpass_program', and
1173 - 'push_default') have been migrated into the per-repository structure.
1174 -
1175 - Will merge to 'master'.
1176 - cf. <xmqqa4ruyhbh.fsf@gitster.g>
1177 - source: <20260714032525.1611141-1-cat@malon.dev>
1178 -
1179 -
1137 * ps/libgit-in-subdir (2026-07-12) 3 commits
1138 . Move libgit.a sources into separate "lib/" directory
1139 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
@@ -1188,8 +1145,9 @@ Release tarballs are available at:
1145
1146 Ejected for now, as it causes too many evil merges with other topics.
1147
1191 - Waiting for response.
1192 - cf. <xmqqcxxi3eov.fsf@gitster.g>
1148 + Waiting for response, stalled.
1149 + cf. <xmqqqzkx9t95.fsf@gitster.g>
1150 + cf. <al6yCTDjBRn2HGq0@com-79390>
1151 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>
1152
1153
@@ -1211,10 +1169,9 @@ Release tarballs are available at:
1169 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>
1170
1171
1214 -* hn/history-squash (2026-07-20) 5 commits
1215 - - history: re-edit a squash with every message
1216 - - sequencer: share the squash message marker helpers and flags
1172 +* hn/history-squash (2026-07-31) 4 commits
1173 - history: add squash subcommand to fold a range
1174 + - sequencer: share the squash message marker helpers and flags
1175 - history: give commit_tree_ext a message template
1176 - history: extract helper for a commit's parent tree
1177
@@ -1223,8 +1180,7 @@ Release tarballs are available at:
1180 descendants replayed on top.
1181
1182 Needs review.
1226 - cf. <f5f7af53-df3e-4902-b350-8fcf8ccb02ad@gmail.com>
1227 - source: <pull.2337.v10.git.git.1784536024.gitgitgadget@gmail.com>
1183 + source: <pull.2337.v11.git.git.1785567209.gitgitgadget@gmail.com>
1184
1185
1186 * tb/midx-incremental-custom-base (2026-06-12) 3 commits
@@ -1239,7 +1195,6 @@ Release tarballs are available at:
1195 logic, and reachability closure for bitmaps was broken.
1196
1197 Needs review.
1242 - cf. <cover.1781294771.git.me@ttaylorr.com>
1198 source: <cover.1781294771.git.me@ttaylorr.com>
1199
1200
@@ -1253,48 +1208,20 @@ Release tarballs are available at:
1208 rebase --no-rebase-merges'.
1209
1210 Needs review.
1256 - Kicked back to 'seen'.
1211 cf. <xmqqy0evc6n9.fsf@gitster.g>
1212 source: <20260728-toon-git-replay-drop-merges-v8-0-ced11dffe749@iotcl.com>
1213
1214
1261 -* ps/cat-file-remote-object-info (2026-07-24) 13 commits
1262 - (merged to 'next' on 2026-07-24 at e436a42272)
1263 - + cat-file: make remote-object-info allow-list adapt to the server
1264 - + cat-file: add remote-object-info to batch-command
1265 - + transport: add client support for object-info
1266 - + serve: advertise object-info feature
1267 - + protocol-caps: check object existence regardless of the attributes requested
1268 - + fetch-pack: move fetch initialization
1269 - + connect: make write_fetch_command_and_capabilities() more generic
1270 - + fetch-pack: move write_fetch_command_and_capabilities() to connect.c
1271 - + fetch-pack: use unsigned int for hash_algo variable
1272 - + fetch-pack: drop the static advertise_sid variable
1273 - + t1006: extract helper functions into new 'lib-cat-file.sh'
1274 - + cat-file: declare loop counter inside for()
1275 - + transport-helper: fix memory leak of helper on disconnect
1276 - (this branch is used by ps/cat-file-remote-object-info-type.)
1277 -
1278 - The 'remote-object-info' command has been added to 'git cat-file
1279 - --batch-command', allowing clients to request object metadata
1280 - (currently size) from a remote server via protocol v2 without
1281 - downloading the entire object. Format placeholders are dynamically
1282 - filtered on the client based on server-advertised capabilities,
1283 - returning empty strings for inapplicable or unsupported fields.
1284 -
1285 - Will merge to 'master'.
1286 - source: <20260724-ps-eric-work-rebase-v21-0-ba67f024fdff@gmail.com>
1287 -
1288 -
1289 -* mm/diff-process-hunks (2026-07-26) 10 commits
1290 - - line-log: consult diff process for range tracking
1291 - - diff: consult diff process for --stat counts
1292 - - blame: consult diff process for no-hunk detection
1293 - - diff: bypass diff process with --no-ext-diff and in format-patch
1294 - - diff: add long-running diff process via diff.<driver>.process
1295 - - sub-process: separate process lifecycle from hashmap management
1215 +* mm/diff-process-hunks (2026-08-01) 11 commits
1216 + - diff: consult oid-only hunk providers via diff.<driver>.process
1217 - userdiff: add diff.<driver>.process config
1297 - - xdiff: support external hunks via xpparam_t
1218 + - sub-process: add a gentle status read
1219 + - sub-process: separate process lifecycle from hashmap management
1220 + - blame: read precomputed hunks
1221 + - diff: read precomputed hunks for stat output
1222 + - diff: record precomputed hunks during stat output
1223 + - diff-hunks: add the store format, library, and command
1224 + - diff: introduce a hunk provider interface
1225 - gitattributes: document how external diff drivers relate to diff features
1226 - Merge branch 'mm/line-log-limited-ops' into mm/diff-process-hunks
1227 (this branch uses mm/line-log-limited-ops.)
@@ -1306,24 +1233,7 @@ Release tarballs are available at:
1233 Git's standard pipeline.
1234
1235 Needs review.
1309 - source: <pull.2120.v6.git.1785091889.gitgitgadget@gmail.com>
1310 -
1311 -
1312 -* ty/migrate-trust-executable-bit (2026-07-20) 4 commits
1313 - (merged to 'next' on 2026-07-23 at 4873f289dd)
1314 - + environment: move has_symlinks into repo_config_values
1315 - + environment: move trust_executable_bit into repo_config_values
1316 - + read-cache: pass 'repo' to 'ce_mode_from_stat()'
1317 - + read-cache: remove redundant extern declarations
1318 -
1319 - The 'trust_executable_bit' (coming from the 'core.filemode'
1320 - configuration) has been migrated into 'struct repo_config_values' to
1321 - tie it to a specific repository instance.
1322 -
1323 - Will merge to 'master'.
1324 - cf. <alvNq8rXF/jofqUc@szeder.dev>
1325 - cf. <xmqq8q7961xe.fsf@gitster.g>
1326 - source: <20260720105335.3202013-1-cat@malon.dev>
1236 + source: <20260801174156.2998808-1-mmontalbo@gmail.com>
1237
1238
1239 * ec/commit-fixup-options (2026-05-26) 2 commits
@@ -1335,14 +1245,13 @@ Release tarballs are available at:
1245 --fixup' variations.
1246
1247 Needs review.
1338 - cf. <cover.1779792311.git.erik@cervined.in>
1248 source: <cover.1779792311.git.erik@cervined.in>
1249
1250
1342 -* hn/branch-delete-merged (2026-07-25) 7 commits
1251 +* hn/branch-delete-merged (2026-07-30) 7 commits
1252 - branch: add --dry-run for --delete-merged
1253 - branch: add branch.<name>.deleteMerged opt-out
1345 - - branch: add --delete-merged <branch>
1254 + - branch: add --delete-merged <pattern>
1255 - branch: prepare delete_branches for a bulk caller
1256 - branch: let delete_branches skip unmerged branches on bulk refusal
1257 - branch: convert delete_branches() to a flags argument
@@ -1353,8 +1262,8 @@ Release tarballs are available at:
1262 remote-tracking branches.
1263
1264 Needs review.
1356 - cf. <1f282ad4-9937-4c95-89d4-70f7a1c883a8@gmail.com>
1357 - source: <pull.2285.v23.git.git.1784979136.gitgitgadget@gmail.com>
1265 + cf. <2574f79a-f04e-449f-aeb4-10d68cdc9437@gmail.com>
1266 + source: <pull.2285.v24.git.git.1785419916.gitgitgadget@gmail.com>
1267
1268
1269 * kk/merge-base-exhaustion (2026-07-11) 11 commits
@@ -1374,6 +1283,7 @@ Release tarballs are available at:
1283 early when one side's exclusive commits in the queue are exhausted,
1284 yielding significant speedups for queries with one-sided histories.
1285
1377 - Needs review.
1286 + Waiting for review.
1287 + cf. <CAL71e4PwoJ4fxKBNuf3HB3Po92WRaV4yDBUDcuEYiggiDD=+Ew@mail.gmail.com>
1288 cf. <CABPp-BGATrNJyT7trzUzAMB_v-1ssVe_SRqp+281X5GzU=2eow@mail.gmail.com>
1289 source: <pull.2149.v6.git.1783776466.gitgitgadget@gmail.com>