What's cooking (2026/07 #05)

Junio C Hamano committed Jul 12, 2026 at 18:35 UTC 8e01790140c3c13eefb25f66e6fbd6ddb187c54b
1 file changed +392 -290
whats-cooking.txt
+392 -290
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 -Subject: What's cooking in git.git (Jul 2026, #04)
2 +Subject: What's cooking in git.git (Jul 2026, #05)
3 X-master-at: f60db8d575adb79761d363e026fb49bddf330c73
4 -X-next-at: 6434b31f5699143ab55cdfd0d7f1cdbbd37d82c1
4 +X-next-at: 8d093f411df65440e1ddb297f1180711f28b7488
5 Bcc: lwn@lwn.net, gitster@pobox.com
6
7 -What's cooking in git.git (Jul 2026, #04)
7 +What's cooking in git.git (Jul 2026, #05)
8 -----------------------------------------
9
10 Here are the topics that have been cooking in my tree. Commits
@@ -50,6 +50,154 @@ Release tarballs are available at:
50 --------------------------------------------------
51 [New Topics]
52
53 +* js/pack-objects-delta-size-t (2026-07-09) 12 commits
54 + - git-zlib: widen `git_deflate_bound()` to `size_t`
55 + - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
56 + - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
57 + - diff: widen `deflate_it()`'s bound local from int to `size_t`
58 + - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
59 + - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
60 + - delta: widen `create_delta()` and `diff_delta()` to `size_t`
61 + - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
62 + - pack-objects: widen `free_unpacked()` return to `size_t`
63 + - pack-objects: widen delta-cache accounting to `size_t`
64 + - delta: widen `create_delta_index()` parameter to `size_t`
65 + - diff-delta: widen `struct delta_index`' size fields to `size_t`
66 +
67 + The pack-objects and delta-encoding code paths have been updated to
68 + use 'size_t' instead of 'unsigned long' for object sizes and offset
69 + limits, avoiding potential truncation issues on 64-bit Windows.
70 +
71 + Needs review.
72 + source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>
73 +
74 +
75 +* cl/b4-cover-change-id (2026-07-10) 1 commit
76 + - b4: include change-id in cover template
77 +
78 + The in-tree 'b4' cover letter template has been updated to include the
79 + 'change-id' trailer, ensuring that sent tags generated by 'b4' contain
80 + the required tracking information for subsequent runs.
81 +
82 + Will merge to 'next'.
83 + source: <20260710-add-change-id-to-b4-template-v1-1-1bd37a25064e@black-desk.cn>
84 +
85 +
86 +* ps/odb-stream-double-close-fix (2026-07-10) 1 commit
87 + - object-file: fix closing object stream twice
88 +
89 + The stream-based object signature verification path has been
90 + corrected to avoid double-closing the stream on read errors.
91 +
92 + Will merge to 'next'.
93 + source: <20260710-pks-odb-stream-double-close-v1-1-d5fa233a37c7@pks.im>
94 +
95 +
96 +* pz/fetch-submodule-errors-config (2026-07-11) 3 commits
97 + - fixup! fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
98 + - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
99 + - submodule: fix premature failure in recursive submodule fetch
100 +
101 + The 'git fetch' command has been updated to allow configuring how
102 + submodule fetch errors are handled. A new configuration variable
103 + 'fetch.submoduleErrors' and a corresponding '--submodule-errors'
104 + command-line option have been introduced, allowing users to make
105 + submodule fetch errors non-fatal (warn instead of fail). Additionally,
106 + a premature failure during recursive submodule fetches has been fixed
107 + by deferring the error until the OID-based retry phase also fails.
108 +
109 + Needs review.
110 + source: <20260710122655.3066377-1-paulius.zaleckas@gmail.com>
111 +
112 +
113 +* gr/add-e-use-apply-api (2026-07-10) 1 commit
114 + - builtin/add.c: replace run_command() with direct apply_all_patches() call
115 +
116 + The application of the edited patch in 'git add -e' has been
117 + refactored to use the internal apply API directly, avoiding the need
118 + to spawn a 'git apply' subprocess.
119 +
120 + Needs review.
121 + source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>
122 +
123 +
124 +* fz/rebase-autosquash-empty (2026-07-11) 1 commit
125 + . sequencer: honor --empty when a fixup!/squash! empties its target
126 +
127 + A commit that is emptied by melding a 'fixup!' or 'squash!' commit
128 + during 'git rebase --autosquash' is now handled according to the
129 + '--empty' option, allowing it to be dropped, kept, or to halt the
130 + rebase.
131 +
132 + Waiting for response(s) to review comment(s).
133 + cf. <xmqqh5m494yh.fsf@gitster.g>
134 + source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>
135 +
136 +--------------------------------------------------
137 +[Stalled]
138 +
139 +* kh/doc-trailers (2026-06-10) 10 commits
140 + - doc: interpret-trailers: document comment line treatment
141 + - doc: interpret-trailers: commit to “trailer block” term
142 + - doc: interpret-trailers: join new-trailers again
143 + - doc: interpret-trailers: add key format example
144 + - doc: interpret-trailers: explain key format
145 + - doc: interpret-trailers: explain the format after the intro
146 + - doc: interpret-trailers: not just for commit messages
147 + - doc: interpret-trailers: use “metadata” in Name as well
148 + - doc: interpret-trailers: replace “lines” with “metadata”
149 + - doc: interpret-trailers: stop fixating on RFC 822
150 +
151 + Documentation for 'git interpret-trailers' has been updated to explain
152 + the format of trailer keys (alphanumeric characters and hyphens),
153 + replace outdated terminology, define key terms upfront, and document
154 + how comment lines in the input are treated.
155 +
156 + Expecting a reroll for too long, stalled.
157 + cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
158 + source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>
159 +
160 +
161 +* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
162 + - rebase: skip branch symref aliases
163 +
164 + 'git rebase --update-refs' has been taught to resolve local branch
165 + symrefs to their referents before queuing updates, ensuring aliases of
166 + the current branch are skipped and duplicate updates are avoided to
167 + prevent failures when branch aliases are present.
168 +
169 + Waiting for response(s) to review comment(s) for too long, stalled.
170 + cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
171 + source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>
172 +
173 +
174 +* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
175 + - http: preserve wwwauth_headers across redirects
176 +
177 + When 'cURL' follows a redirect, the 'WWW-Authenticate' headers from
178 + the redirect target were lost because 'credential_from_url()' cleared
179 + the credential state. This has been fixed by preserving the collected
180 + headers across the redirect update.
181 +
182 + Will discard.
183 + cf. <xmqqmrw2zavx.fsf@gitster.g>
184 + source: <20260602161150.1527493-1-aplattner@nvidia.com>
185 +
186 +
187 +* jt/config-lock-timeout (2026-05-17) 1 commit
188 + - config: retry acquiring config.lock, configurable via core.configLockTimeout
189 +
190 + Configuration file locking has been updated to retry for a short
191 + period, avoiding failures when multiple processes attempt to update
192 + the configuration simultaneously.
193 +
194 + Waiting for response(s) to review comment(s) for too long, stalled.
195 + cf. <agrIrGwSMFlKTx9x@pks.im>
196 + source: <20260517132111.1014901-1-joerg@thalheim.io>
197 +
198 +--------------------------------------------------
199 +[Cooking]
200 +
201 * dm/submodule-update-i-shorthand (2026-07-07) 1 commit
202 - submodule--helper: accept '-i' shorthand for update --init
203
@@ -57,42 +205,45 @@ Release tarballs are available at:
205 'git submodule update' command until it was broken in a modernization
206 of the option-parsing code, has been restored.
207
60 - Will merge to 'next'?
208 + Needs review.
209 source: <20260708-submodule-init-v1-1-719456077262@atmark-techno.com>
210
211
212 * hf/unpack-trees-quadratic-scan (2026-07-08) 1 commit
65 - - unpack-trees: avoid quadratic index scan in next_cache_entry()
213 + (merged to 'next' on 2026-07-12 at 744f1aede4)
214 + + unpack-trees: avoid quadratic index scan in next_cache_entry()
215
216 The cache-scanning loop in 'next_cache_entry()' has been optimized
217 to avoid rescanning already-unpacked index entries, preventing a
218 quadratic performance slow-down when diffing the working tree
219 against a commit with a pathspec matching early index entries.
220
72 - Will merge to 'next'?
221 + Will merge to 'master'.
222 cf. <xmqqpl0xqh3n.fsf@gitster.g>
223 source: <pull.2353.v2.git.git.1783546933992.gitgitgadget@gmail.com>
224
225
226 * jc/relnotes-2.55-rust-fix (2026-07-07) 1 commit
78 - - Rust: fix description in Release Notes to 2.55
227 + (merged to 'next' on 2026-07-10 at 444d202a75)
228 + + Rust: fix description in Release Notes to 2.55
229
230 A description in the release notes for Git 2.55.0 has been
231 retroactively updated to clarify that Rust support is enabled by
232 default, but still optional, and will become mandatory in Git 3.0.
233
84 - Will merge to 'next'?
234 + Will merge to 'master'.
235 source: <xmqqpl0y4rpg.fsf@gitster.g>
236
237
238 * jc/submitting-patches-abandoning (2026-07-08) 1 commit
89 - - SubmittingPatches: document how to retract a topic
239 + (merged to 'next' on 2026-07-10 at 41b9b65b23)
240 + + SubmittingPatches: document how to retract a topic
241
242 The 'SubmittingPatches' document has been updated to explicitly
243 describe the expectation for contributors to retract or abandon their
244 patch series when they are no longer pursuing it.
245
95 - Will merge to 'next'?
246 + Will merge to 'master'.
247 cf. <ak6U07K1dQPlXxIp@nixos>
248 source: <xmqqpl0xv25e.fsf@gitster.g>
249
@@ -119,7 +270,7 @@ Release tarballs are available at:
270 source: <20260708035235.GA41491@coredump.intra.peff.net>
271
272
122 -* mm/lib-httpd-cgi-safe (2026-07-07) 3 commits
273 +* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
274 - t/README: document writing concurrency-safe helpers
275 - t/lib-httpd: make http-429 first-request check atomic
276 - t/lib-httpd: fix apply-one-time-script race under concurrent requests
@@ -128,9 +279,8 @@ Release tarballs are available at:
279 to use atomic filesystem operations, preventing race conditions when
280 Apache handles concurrent requests.
281
131 - Expecting a reroll.
132 - cf. <CAC2QwmKuHUP6_287T9SOLdjLdb=b4EqV4qJ_NnYCkGP0-d6qHA@mail.gmail.com>
133 - source: <pull.2171.git.1783479584.gitgitgadget@gmail.com>
282 + Needs review.
283 + source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>
284
285
286 * mm/sideband-ansi-sgr-colon-fix (2026-05-13) 1 commit
@@ -172,8 +322,9 @@ Release tarballs are available at:
322
323
324 * tc/bundle-uri-empty-fix (2026-07-08) 2 commits
175 - - bundle-uri: stop sending invalid bundle configuration
176 - - bundle-uri: drain remaining response on invalid bundle-uri lines
325 + (merged to 'next' on 2026-07-12 at 9da32fdaf7)
326 + + bundle-uri: stop sending invalid bundle configuration
327 + + bundle-uri: drain remaining response on invalid bundle-uri lines
328
329 The client-side parser of server-advertised bundle-URI list has been
330 updated to drain the remaining response in order to avoid protocol
@@ -181,48 +332,53 @@ Release tarballs are available at:
332 the server-side has been taught to omit empty configuration values
333 instead of sending invalid key-value lines.
334
184 - Will merge to 'next'?
335 + Will merge to 'master'.
336 cf. <xmqqtsq9qj5k.fsf@gitster.g>
337 source: <20260708-toon-bundle-uri-no-uri-v2-0-09a03d8db556@iotcl.com>
338
339
340 * gr/t1410-reflog-exit-code (2026-07-08) 1 commit
190 - - t1410-reflog.sh: avoid suppressing git's exit code in pipelines
341 + (merged to 'next' on 2026-07-10 at d0cf55ea54)
342 + + t1410-reflog.sh: avoid suppressing git's exit code in pipelines
343
344 The pipelines in 't1410-reflog.sh' have been replaced with the
345 'test_stdout_line_count' helper to avoid suppressing the exit code of
346 'git' commands, ensuring failures are not hidden from the test suite.
347
196 - Will merge to 'next'?
348 + Will merge to 'master'.
349 cf. <xmqqtsq8p18x.fsf@gitster.g>
350 source: <20260709051229.40363-1-gatlavishweshwarreddy26@gmail.com>
351
352
201 -* js/coverity-fixes-null-safety (2026-07-09) 11 commits
202 - - shallow: fix NULL dereference
203 - - bisect: ensure non-NULL `head` before using it
204 - - pack-bitmap: handle missing bitmap for base MIDX
205 - - revision: avoid dereferencing NULL in `add_parents_only()`
206 - - replay: die when --onto does not peel to a commit
207 - - bisect: handle NULL commit in `bisect_successful()`
208 - - mailsplit: move NULL check before first use of file handle
209 - - reftable/stack: guard against NULL list_file in stack_destroy
210 - - remote: guard `remote_tracking()` against NULL remote
211 - - diff: handle NULL return from repo_get_commit_tree()
212 - - diffcore-break: guard against NULLed queue entries in merge loop
353 +* js/coverity-fixes-null-safety (2026-07-10) 12 commits
354 + (merged to 'next' on 2026-07-12 at 8d093f411d)
355 + + shallow: give write_one_shallow() its own hex buffer
356 + + shallow: fix NULL dereference
357 + + bisect: ensure non-NULL `head` before using it
358 + + pack-bitmap: handle missing bitmap for base MIDX
359 + + revision: avoid dereferencing NULL in `add_parents_only()`
360 + + replay: die when --onto does not peel to a commit
361 + + bisect: handle NULL commit in `bisect_successful()`
362 + + mailsplit: move NULL check before first use of file handle
363 + + reftable/stack: guard against NULL list_file in stack_destroy
364 + + remote: guard `remote_tracking()` against NULL remote
365 + + diff: handle NULL return from repo_get_commit_tree()
366 + + diffcore-break: guard against NULLed queue entries in merge loop
367
368 Various code paths have been hardened against potential NULL-pointer
369 dereferences and invalid file descriptor accesses flagged by
370 Coverity.
371
218 - Needs review.
219 - source: <pull.2174.git.1783590159.gitgitgadget@gmail.com>
372 + Will merge to 'master'.
373 + cf. <xmqqa4ryg84e.fsf@gitster.g>
374 + source: <pull.2174.v2.git.1783683577.gitgitgadget@gmail.com>
375
376
222 -* ps/odb-for-each-object-filter (2026-07-09) 8 commits
377 +* ps/odb-for-each-object-filter (2026-07-10) 9 commits
378 - builtin/cat-file: filter objects via object database
379 - odb: introduce object filters to `odb_for_each_object()`
380 - pack-bitmap: introduce function to open bitmap for a single source
381 + - pack-bitmap: drop `_1` suffix from functions that open bitmaps
382 - pack-bitmap: iterate object sources when opening bitmaps
383 - pack-bitmap: allow aborting iteration of bitmapped objects
384 - pack-bitmap: mark object filter as `const`
@@ -230,115 +386,53 @@ Release tarballs are available at:
386 - Merge branch 'ps/odb-drop-whence' into ps/odb-for-each-object-filter
387 (this branch uses ps/odb-drop-whence.)
388
233 - The object database enumeration interface 'odb_for_each_object()'
234 - has learned to accept object filters, allowing the underlying
235 - backends to optimize the traversal by using reachability bitmaps
236 - when available. 'git cat-file --batch-all-objects' has been updated
237 - to use this generic interface, simplifying its code and avoiding
238 - direct access to ODB backend internals.
389 + The object database enumeration interface 'odb_for_each_object()' has
390 + been taught to accept object filters, allowing the underlying backends
391 + to optimize the traversal by using reachability bitmaps when
392 + available. 'git cat-file --batch-all-objects' has been updated to
393 + use this generic interface, simplifying its code and avoiding direct
394 + access to ODB backend internals.
395
396 Needs review.
241 - source: <20260709-pks-odb-for-each-object-filter-v1-0-82fe014b12b3@pks.im>
397 + source: <20260710-pks-odb-for-each-object-filter-v2-0-3710a9cc165a@pks.im>
398
399
400 * ps/refs-wo-the-repository (2026-07-09) 8 commits
245 - . refs: remove remaining uses of `the_repository`
246 - . worktree: pass repository to public functions
247 - . worktree: pass repository to file-local functions
248 - . worktree: refactor code to use available repositories
249 - . refs/files: drop `USE_THE_REPOSITORY_VARIABLE`
250 - . refs/packed: drop `USE_THE_REPOSITORY_VARIABLE`
251 - . refs/packed: de-globalize handling of "core.packedRefsTimeout"
252 - . Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository
401 + - refs: remove remaining uses of `the_repository`
402 + - worktree: pass repository to public functions
403 + - worktree: pass repository to file-local functions
404 + - worktree: refactor code to use available repositories
405 + - refs/files: drop `USE_THE_REPOSITORY_VARIABLE`
406 + - refs/packed: drop `USE_THE_REPOSITORY_VARIABLE`
407 + - refs/packed: de-globalize handling of "core.packedRefsTimeout"
408 + - Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository
409 (this branch uses ps/refs-writing-subcommands.)
410
255 - The ref subsystem and the worktree API have been refactored to pass
256 - a repository pointer down the call chain, allowing them to drop
411 + The ref subsystem and the worktree API have been refactored to pass a
412 + repository pointer down the call chain, allowing them to drop
413 references to the global 'the_repository' variable. As part of this,
414 the handling of the 'core.packedRefsTimeout' configuration has been
415 moved into the per-repository ref store structure.
416
261 - Needs review.
417 + Expecting a reroll.
418 + cf. <alCJpxAQwpTQ4g93@pks.im>
419 source: <20260709-pks-refs-wo-the-repository-v1-0-1ad6f27529c9@pks.im>
420
421
422 * kk/commit-graph-topo-levels-fix (2026-07-09) 2 commits
266 - - commit-graph: propagate topo_levels slab to all chain layers
267 - - commit-graph: add trace2 instrumentation for generation DFS
423 + (merged to 'next' on 2026-07-12 at 295a5f9b34)
424 + + commit-graph: propagate topo_levels slab to all chain layers
425 + + commit-graph: add trace2 instrumentation for generation DFS
426
269 - The 'topo_levels' slab was only propagated to the topmost layer of a
270 - split commit-graph chain, causing incremental writes to recompute
271 - topological levels for commits in base layers. This has been
427 + The 'topo_levels' slab was propagated only to the topmost layer of a
428 + split commit-graph chain, causing topological levels for commits in
429 + base layers to be recomputed during incremental writes. This has been
430 corrected.
431
274 - Will merge to 'next'?
275 - cf. <ak-ljlV33GLigFf6@pks.im>
432 + Will merge to 'master'.
433 + cf. <alFu8gZURKhYr1VE@com-79390>
434 source: <pull.2170.v2.git.1783609382.gitgitgadget@gmail.com>
435
278 ---------------------------------------------------
279 -[Stalled]
280 -
281 -* kh/doc-trailers (2026-06-10) 10 commits
282 - - doc: interpret-trailers: document comment line treatment
283 - - doc: interpret-trailers: commit to “trailer block” term
284 - - doc: interpret-trailers: join new-trailers again
285 - - doc: interpret-trailers: add key format example
286 - - doc: interpret-trailers: explain key format
287 - - doc: interpret-trailers: explain the format after the intro
288 - - doc: interpret-trailers: not just for commit messages
289 - - doc: interpret-trailers: use “metadata” in Name as well
290 - - doc: interpret-trailers: replace “lines” with “metadata”
291 - - doc: interpret-trailers: stop fixating on RFC 822
292 -
293 - Documentation for 'git interpret-trailers' has been updated to explain
294 - the format of trailer keys (alphanumeric characters and hyphens),
295 - replace outdated terminology, define key terms upfront, and document
296 - how comment lines in the input are treated.
297 -
298 - Expecting a reroll for too long. stalled.
299 - cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
300 - source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>
301 -
302 -
303 -* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
304 - - rebase: skip branch symref aliases
305 -
306 - 'git rebase --update-refs' has been taught to resolve local branch
307 - symrefs to their referents before queuing updates, ensuring aliases of
308 - the current branch are skipped and duplicate updates are avoided to
309 - prevent failures when branch aliases are present.
310 -
311 - Waiting for response(s) to review comment(s) for too long, stalled.
312 - cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
313 - source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>
314 -
315 -
316 -* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
317 - - http: preserve wwwauth_headers across redirects
318 -
319 - When 'cURL' follows a redirect, the 'WWW-Authenticate' headers from
320 - the redirect target were lost because 'credential_from_url()' cleared
321 - the credential state. This has been fixed by preserving the collected
322 - headers across the redirect update.
323 -
324 - Will discard.
325 - cf. <xmqqmrw2zavx.fsf@gitster.g>
326 - source: <20260602161150.1527493-1-aplattner@nvidia.com>
327 -
328 -
329 -* jt/config-lock-timeout (2026-05-17) 1 commit
330 - - config: retry acquiring config.lock, configurable via core.configLockTimeout
331 -
332 - Configuration file locking has been updated to retry for a short
333 - period, avoiding failures when multiple processes attempt to update
334 - the configuration simultaneously.
335 -
336 - Waiting for response(s) to review comment(s) for too long, stalled.
337 - cf. <agrIrGwSMFlKTx9x@pks.im>
338 - source: <20260517132111.1014901-1-joerg@thalheim.io>
339 -
340 ---------------------------------------------------
341 -[Cooking]
436
437 * ds/sparse-index-ita-crash (2026-07-06) 1 commit
438 - sparse-index: avoid crash on intent-to-add entry outside the cone
@@ -361,23 +455,24 @@ Release tarballs are available at:
455 script on repositories already managed by the new tool.
456
457 Expecting a reroll.
364 - cf. <27215.27575.968985.583226@chiark.greenend.org.uk>
458 + cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
459 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>
460
461
368 -* kk/reftable-tombstone-quadratic-fix (2026-07-09) 2 commits
369 - - reftable: fix quadratic behavior in the presence of tombstones
370 - - t/perf: add perf test for ref tombstone scenarios
462 +* kk/reftable-tombstone-quadratic-fix (2026-07-10) 2 commits
463 + (merged to 'next' on 2026-07-12 at 4e60bb0027)
464 + + reftable: fix quadratic behavior in the presence of tombstones
465 + + t/perf: add perf test for ref tombstone scenarios
466
372 - The performance of ref updates and reads using the reftable backend in
373 - the presence of many deletion tombstone records has been optimized by
374 - removing the tombstone suppression flag from the merged iterator and
375 - instead skipping tombstones at higher-level call sites where iteration
376 - bounds are known.
467 + The performance of ref updates and reads using the 'reftable' backend
468 + in the presence of many deletion tombstone records has been optimized
469 + by removing the tombstone suppression flag from the merged iterator
470 + and instead skipping tombstones at higher-level call sites where
471 + iteration bounds are known.
472
378 - Expecting a reroll.
379 - cf. <CAL71e4PrtZwB8TMg3eBj=LzC7ik+C8yxLYEEEP7SDgMPiWSs0Q@mail.gmail.com>
380 - source: <pull.2166.v2.git.1783598912.gitgitgadget@gmail.com>
473 + Will merge to 'master'.
474 + cf. <alECc90WZ9RPqMaA@pks.im>
475 + source: <pull.2166.v3.git.1783679767.gitgitgadget@gmail.com>
476
477
478 * rs/blame-abbrev-marks (2026-07-06) 1 commit
@@ -406,17 +501,18 @@ Release tarballs are available at:
501
502
503 * bc/parse-options-exit-0-on-help (2026-07-07) 4 commits
409 - - parse-options: exit 0 on -h
410 - - rev-parse: have --parseopt callers exit 0 on --help
411 - - parse-options: add a separate case for help output on error
412 - - t1517: skip svn tests if svn is not installed
504 + (merged to 'next' on 2026-07-10 at 775654e447)
505 + + parse-options: exit 0 on -h
506 + + rev-parse: have --parseopt callers exit 0 on --help
507 + + parse-options: add a separate case for help output on error
508 + + t1517: skip svn tests if svn is not installed
509
414 - Option parsing with 'git rev-parse --parseopt' and most 'git'
510 + Option parsing with 'git rev-parse --parseopt' and in most 'git'
511 subcommands has been updated to exit with 0 (instead of 129) when the
512 help option ('-h' or '--help') is requested directly by the user,
513 aligning with standard Unix convention.
514
419 - Will merge to 'next'.
515 + Will merge to 'master'.
516 cf. <20260708035930.GB41684@coredump.intra.peff.net>
517 source: <20260708001557.3581080-1-sandals@crustytoothpaste.net>
518
@@ -470,17 +566,16 @@ Release tarballs are available at:
566 source: <20260702075234.GA1548258@coredump.intra.peff.net>
567
568
473 -* ml/t9811-replace-test-f (2026-07-02) 1 commit
569 +* ml/t9811-replace-test-f (2026-07-11) 2 commits
570 - t9811: replace 'test -f' and '! test -f' with 'test_path_*'
571 + - t9811: break long && chains into multiple lines
572
573 The test script 't/t9811-git-p4-label-import.sh' has been
574 modernized to use 'test_path_is_file' and 'test_path_is_missing'
575 instead of raw 'test -f' and '! test -f' calls.
576
480 - Expecting a reroll.
481 - cf. <akdwp_a2EuhVoGVW@pks.im>
482 - cf. <CAO=vGZpMe3dxyzFVwR7BWBxaAZ-z9Kw3CqQ0kAe5ZZGSQszkzw@mail.gmail.com>
483 - source: <20260702140704.65805-1-marcelomlage@usp.br>
577 + Needs review.
578 + source: <20260711160447.99708-1-marcelomlage@usp.br>
579
580
581 * ps/t-fixes-for-git-test-long (2026-07-05) 9 commits
@@ -521,9 +616,10 @@ Release tarballs are available at:
616
617
618 * sn/osxkeychain-rust-universal (2026-07-07) 3 commits
524 - - contrib: wire up osxkeychain in contrib/Makefile on macOS
525 - - Makefile: support universal macOS builds via RUST_TARGETS
526 - - Makefile: add $(RUST_LIB) prerequisite to osxkeychain
619 + (merged to 'next' on 2026-07-10 at fe82b5d188)
620 + + contrib: wire up osxkeychain in contrib/Makefile on macOS
621 + + Makefile: support universal macOS builds via RUST_TARGETS
622 + + Makefile: add $(RUST_LIB) prerequisite to osxkeychain
623
624 The build system has been updated to support building universal macOS
625 binaries when 'Rust' is enabled, by compiling separate static archives
@@ -531,36 +627,35 @@ Release tarballs are available at:
627 using the macOS 'lipo' tool. The 'git-credential-osxkeychain' helper
628 has been updated to link against '$(RUST_LIB)' when 'Rust' is enabled.
629
534 - Will merge to 'next'?
630 + Will merge to 'master'.
631 cf. <xmqq4ii9teym.fsf@gitster.g>
632 source: <pull.2288.v8.git.git.1783480879.gitgitgadget@gmail.com>
633
634
539 -* cl/conditional-config-on-worktree-path (2026-07-08) 3 commits
540 - . config: add "worktree" and "worktree/i" includeIf conditions
541 - . repository: keep a symlink-preserving copy of the worktree path
542 - . config: refactor include_by_gitdir() into include_by_path()
635 +* cl/conditional-config-on-worktree-path (2026-07-09) 2 commits
636 + - config: add "worktree" and "worktree/i" includeIf conditions
637 + - config: refactor include_by_gitdir() into include_by_path()
638
639 The '[includeIf "condition"]' conditional inclusion facility for
640 configuration files has been taught to use the location of the
641 worktree in its condition.
642
643 Needs review.
549 - cf. <ak9zWopOWpRVHmmS@pks.im>
550 - cf. <xmqqzezzkibu.fsf@gitster.g>
551 - source: <20260709-includeif-worktree-v7-0-e87e705e8df6@black-desk.cn>
644 + source: <20260710-includeif-worktree-v8-0-04686d8a616c@black-desk.cn>
645
646
647 * kk/commit-reach-find-all-fix (2026-06-29) 2 commits
555 - - commit-reach: guard !FIND_ALL early exit with generation ordering check
556 - - t6600: add test for merge-base early exit with clock skew
648 + (merged to 'next' on 2026-07-10 at 0444c74d81)
649 + + commit-reach: guard !FIND_ALL early exit with generation ordering check
650 + + t6600: add test for merge-base early exit with clock skew
651 + (this branch is used by kk/merge-base-exhaustion.)
652
558 - The early-exit optimization in 'paint_down_to_common()' has been gated
559 - on the queue being generation-ordered. This fixes a bug where 'git
560 - merge-base' (without '--all') could return incorrect results on
561 - repositories with v1 commit graphs and clock skew.
653 + The early-exit optimization in 'paint_down_to_common()' has been
654 + gated on the queue being generation-ordered, fixing a bug where
655 + 'git merge-base' (without '--all') could return incorrect results
656 + on repositories with v1 commit graphs and clock skew.
657
563 - Will merge to 'next'.
658 + Will merge to 'master'.
659 cf. <xmqqjyr5v1gu.fsf@gitster.g>
660 source: <pull.2162.git.1782739162.gitgitgadget@gmail.com>
661
@@ -568,8 +663,8 @@ Release tarballs are available at:
663 * bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
664 - submodule absorbgitdirs tests: use test_* helper functions
665
571 - 't7412' that tests 'git submodule absorbgitdirs' has been modernized
572 - to use 'test_path_is_file', 'test_path_is_dir', and
666 + The test script 't7412' that tests 'git submodule absorbgitdirs' has
667 + been modernized to use 'test_path_is_file', 'test_path_is_dir', and
668 'test_path_is_missing' helper functions instead of raw 'test -[fde]'
669 commands.
670
@@ -593,22 +688,23 @@ Release tarballs are available at:
688
689
690 * ps/setup-split-discovery-and-setup (2026-07-07) 16 commits
596 - - setup: mark `set_git_work_tree()` as file-local
597 - - setup: pass worktree to `init_db()`
598 - - setup: drop redundant configuration of `startup_info->have_repository`
599 - - setup: make repository discovery self-contained
600 - - setup: propagate prefix via repository discovery
601 - - setup: drop static `cwd` variable
602 - - setup: move prefix into repository
603 - - setup: embed repository format in discovery
604 - - setup: introduce explicit repository discovery
605 - - setup: split up concerns of `setup_git_env_internal()`
606 - - setup: unify setup of shallow file
607 - - setup: mark bogus worktree in `apply_repository_format()`
608 - - setup: rename `check_repository_format_gently()`
609 - - Merge branch 'jk/repo-info-path-keys' into ps/setup-split-discovery-and-setup
610 - - Merge branch 'ps/setup-drop-global-state' into ps/setup-split-discovery-and-setup
611 - - Merge branch 'ps/refs-onbranch-fixes' into ps/setup-split-discovery-and-setup
691 + (merged to 'next' on 2026-07-10 at 1691a942ab)
692 + + setup: mark `set_git_work_tree()` as file-local
693 + + setup: pass worktree to `init_db()`
694 + + setup: drop redundant configuration of `startup_info->have_repository`
695 + + setup: make repository discovery self-contained
696 + + setup: propagate prefix via repository discovery
697 + + setup: drop static `cwd` variable
698 + + setup: move prefix into repository
699 + + setup: embed repository format in discovery
700 + + setup: introduce explicit repository discovery
701 + + setup: split up concerns of `setup_git_env_internal()`
702 + + setup: unify setup of shallow file
703 + + setup: mark bogus worktree in `apply_repository_format()`
704 + + setup: rename `check_repository_format_gently()`
705 + + Merge branch 'jk/repo-info-path-keys' into ps/setup-split-discovery-and-setup
706 + + Merge branch 'ps/setup-drop-global-state' into ps/setup-split-discovery-and-setup
707 + + Merge branch 'ps/refs-onbranch-fixes' into ps/setup-split-discovery-and-setup
708
709 The repository discovery and repository configuration phases, which
710 were previously intertwined in 'setup.c', have been split. Repository
@@ -617,7 +713,7 @@ Release tarballs are available at:
713 repository configuration to initialize the repository, paving the way
714 for clean unification of repository configuration.
715
620 - Will merge to 'next'.
716 + Will merge to 'master'.
717 cf. <87h5m9om0j.fsf@emacs.iotcl.com>
718 source: <20260707-pks-setup-split-discovery-and-setup-v2-0-aab372cd227c@pks.im>
719
@@ -715,9 +811,9 @@ Release tarballs are available at:
811 - repack: unconditionally exclude non-kept packs
812
813 'git repack' has been taught to accept '--geometric' and '--cruft'
718 - together. When both are given, the geometric repack rolls up non-cruft
719 - packs as usual, while a separate cruft pack is written to collect
720 - unreachable objects.
814 + together. When both are given, non-cruft packs are rolled up by the
815 + geometric repack as usual, while a separate cruft pack is written to
816 + collect unreachable objects.
817
818 Waiting for response(s) to review comment(s).
819 cf. <aj8cOhH6hGVZIFft@nand.local>
@@ -749,7 +845,7 @@ Release tarballs are available at:
845 source: <20260624093618.17456-1-antonio.destefani08@gmail.com>
846
847
752 -* jt/receive-pack-use-odb-transactions (2026-07-08) 11 commits
848 +* jt/receive-pack-use-odb-transactions (2026-07-10) 11 commits
849 - builtin/receive-pack: stage incoming objects via ODB transactions
850 - builtin/receive-pack: drop redundant tmpdir env
851 - odb/transaction: introduce ODB transaction flags
@@ -766,9 +862,8 @@ Release tarballs are available at:
862 interfaces instead of directly managing 'tmp_objdir' for staging
863 incoming objects, bringing it closer to being ODB backend agnostic.
864
769 - Expecting a reroll.
770 - cf. <ak-ntVKQ8XqMr6zv@denethor>
771 - source: <20260708235925.3992097-1-jltobler@gmail.com>
865 + Needs review.
866 + source: <20260710163722.2962278-1-jltobler@gmail.com>
867
868
869 * ps/odb-drop-whence (2026-07-02) 7 commits
@@ -792,24 +887,25 @@ Release tarballs are available at:
887
888
889 * ps/reftable-hardening (2026-07-03) 12 commits
795 - - reftable/table: fix OOB read on truncated table
796 - - reftable/table: fix NULL pointer access when seeking to bogus offsets
797 - - reftable/block: fix OOB read with bogus restart offset
798 - - reftable/block: fix use of uninitialized memory when binsearch fails
799 - - reftable/block: fix OOB read with bogus restart count
800 - - reftable/block: fix OOB read with bogus block size
801 - - reftable/block: fix OOB write with bogus inflated log size
802 - - t/unit-tests: introduce test helper to write reftable blocks
803 - - reftable/record: don't abort when decoding invalid ref value type
804 - - reftable/basics: fix OOB read on binary search of empty range
805 - - oss-fuzz: add fuzzer for parsing reftables
806 - - meson: support building fuzzers with libFuzzer
890 + (merged to 'next' on 2026-07-10 at b8f4dd0ab9)
891 + + reftable/table: fix OOB read on truncated table
892 + + reftable/table: fix NULL pointer access when seeking to bogus offsets
893 + + reftable/block: fix OOB read with bogus restart offset
894 + + reftable/block: fix use of uninitialized memory when binsearch fails
895 + + reftable/block: fix OOB read with bogus restart count
896 + + reftable/block: fix OOB read with bogus block size
897 + + reftable/block: fix OOB write with bogus inflated log size
898 + + t/unit-tests: introduce test helper to write reftable blocks
899 + + reftable/record: don't abort when decoding invalid ref value type
900 + + reftable/basics: fix OOB read on binary search of empty range
901 + + oss-fuzz: add fuzzer for parsing reftables
902 + + meson: support building fuzzers with libFuzzer
903
904 The reftable code has been hardened against corrupted tables by
905 fixing out-of-bounds writes, out-of-bounds reads, and abort calls
906 during parsing.
907
812 - Will merge to 'next'?
908 + Will merge to 'master'.
909 cf. <877bn5obz9.fsf@emacs.iotcl.com>
910 source: <20260703-pks-reftable-hardening-v3-0-b87c555b9920@pks.im>
911
@@ -821,7 +917,7 @@ Release tarballs are available at:
917
918 When 'git push origin/main' or 'git branch origin main' is run, the
919 command is now recognized as a potential typo, and advice has been
824 - added to offer a typofix.
920 + added to offer a typo fix.
921
922 Will merge to 'master'.
923 cf. <xmqqfr272lq7.fsf@gitster.g>
@@ -840,7 +936,7 @@ Release tarballs are available at:
936 source: <xmqqmrwdxrat.fsf@gitster.g>
937
938
843 -* ty/migrate-excludes-file (2026-07-09) 9 commits
939 +* ty/migrate-excludes-file (2026-07-12) 9 commits
940 - environment: move object_creation_mode into repo_config_values
941 - environment: move autorebase into repo_config_values
942 - environment: move push_default into repo_config_values
@@ -855,8 +951,9 @@ Release tarballs are available at:
951 (including 'editor_program', 'pager_program', 'askpass_program', and
952 'push_default') have been migrated into the per-repository structure.
953
858 - Needs review.
859 - source: <20260709161145.13349-1-cat@malon.dev>
954 + Expecting a reroll.
955 + cf. <2a39cee9-1082-48aa-b42e-e12c34fa0e29@malon.dev>
956 + source: <20260712111734.1073514-1-cat@malon.dev>
957
958
959 * dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
@@ -865,14 +962,13 @@ Release tarballs are available at:
962 The 'USE_NSEC' build knob, which enables support for sub-second file
963 timestamp resolution, has been wired up to the Meson build system.
964
868 - Expecting a reroll.
869 - cf. <CALnO6CDm74rCBQu6Q0djsvtuw5U14V=PApptcZTgP+pic1f_AA@mail.gmail.com>
870 - cf. <ajjuoS5Qc3K0nCRl@pks.im>
871 - cf. <akIL6oJgUv8J8SB2@pks.im>
965 + Will discard.
966 + cf. <xmqqa4rx9mb5.fsf@gitster.g>
967 source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>
968
969
875 -* ps/libgit-in-subdir (2026-06-30) 3 commits
970 +* ps/libgit-in-subdir (2026-07-10) 4 commits
971 + - fixup! Move libgit.a sources into separate "lib/" directory
972 - Move libgit.a sources into separate "lib/" directory
973 - t/helper: prepare "test-example-tap.c" for introduction of "lib/"
974 - Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir
@@ -881,8 +977,8 @@ Release tarballs are available at:
977 directory to clean up the top-level directory and clearly separate
978 library code.
979
884 - Needs review.
885 - cf. <akX1TMoRr87Id8Ss@pks.im>
980 + Waiting for response(s) to review comment(s).
981 + cf. <0c94331b-7eb1-4116-afa5-811082ad5854@ramsayjones.plus.com>
982 source: <20260701-pks-libgit-in-subdir-v3-0-5e4860056094@pks.im>
983
984
@@ -903,15 +999,16 @@ Release tarballs are available at:
999
1000
1001 * ty/migrate-ignorecase (2026-06-19) 2 commits
906 - - config: use repo_ignore_case() to access core.ignorecase
907 - - environment: move ignore_case into repo_config_values
1002 + (merged to 'next' on 2026-07-12 at 39e9fdb93f)
1003 + + config: use repo_ignore_case() to access core.ignorecase
1004 + + environment: move ignore_case into repo_config_values
1005
1006 The global configuration variable 'ignore_case' (representing the
1007 'core.ignorecase' configuration) has been migrated into 'struct
1008 repo_config_values' to tie it to a specific repository instance.
1009
913 - Waiting for comments from Johannes.
914 - cf. <xmqqzf0mzc7j.fsf@gitster.g>
1010 + Will merge to 'master'.
1011 + cf. <xmqqechaga7p.fsf@gitster.g>
1012 source: <20260619155152.642760-1-cat@malon.dev>
1013
1014
@@ -926,26 +1023,25 @@ Release tarballs are available at:
1023
1024 The 'git log -L<range>:<path>' command has been taught to limit
1025 various 'diff' operations, such as '--stat', '--check', and '-G', to
929 - the specified range:path.
1026 + the specified range and path.
1027
1028 Needs review.
1029 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>
1030
1031
935 -* hn/history-squash (2026-07-06) 5 commits
1032 +* hn/history-squash (2026-07-10) 5 commits
1033 - history: re-edit a squash with every message
937 - - sequencer: extract helpers for the squash message markers
1034 + - sequencer: share the squash message marker helpers and flags
1035 - history: add squash subcommand to fold a range
1036 - history: give commit_tree_ext a message template
1037 - history: extract helper for a commit's parent tree
1038
1039 The experimental 'git history' command has been taught a new 'squash'
943 - subcommand to fold a range of commits into a single commit, replaying
944 - any descendants on top.
1040 + subcommand to fold a range of commits into a single commit, with any
1041 + descendants replayed on top.
1042
946 - Waiting for response(s) to review comment(s).
947 - cf. <38493ca6-8fdd-4b6c-9972-5145f3bf0aa4@gmail.com>
948 - source: <pull.2337.v7.git.git.1783327849.gitgitgadget@gmail.com>
1043 + Needs review.
1044 + source: <pull.2337.v8.git.git.1783674396.gitgitgadget@gmail.com>
1045
1046
1047 * ps/refs-writing-subcommands (2026-07-06) 5 commits
@@ -966,13 +1062,14 @@ Release tarballs are available at:
1062
1063
1064 * wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
969 - - MyFirstContribution: mention trimming quoted text in replies
1065 + (merged to 'next' on 2026-07-12 at adeaa999b6)
1066 + + MyFirstContribution: mention trimming quoted text in replies
1067
1068 The contributor guide has been updated to advise new contributors to
1069 trim irrelevant quoted text when replying to review comments, matching
1070 the existing advice given to reviewers.
1071
975 - Will merge to 'next'?
1072 + Will merge to 'master'.
1073 cf. <xmqqcxxwljue.fsf@gitster.g>
1074 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>
1075
@@ -984,21 +1081,22 @@ Release tarballs are available at:
1081
1082 The 'git multi-pack-index write --incremental' command has been
1083 corrected to properly honor the '--base' option. Previously, the
987 - custom base was ignored by the normal write path, and the pack
988 - exclusion logic incorrectly skipped packs from layers above the
989 - selected base, breaking reachability closure for bitmaps.
1084 + custom base was ignored by the normal write path; packs from layers
1085 + above the selected base were incorrectly skipped by the pack exclusion
1086 + logic, and reachability closure for bitmaps was broken.
1087
1088 Needs review.
1089 source: <cover.1781294771.git.me@ttaylorr.com>
1090
1091
1092 * mm/test-grep-lint (2026-07-05) 6 commits
996 - - t: add greplint to detect bare grep assertions
997 - - t: convert grep assertions to test_grep
998 - - t: fix Lexer line count for $() inside double-quoted strings
999 - - t: extract chainlint's parser into shared module
1000 - - t: fix grep assertions missing file arguments
1001 - - t/README: document test_grep helper
1093 + (merged to 'next' on 2026-07-10 at 1916c07bf5)
1094 + + t: add greplint to detect bare grep assertions
1095 + + t: convert grep assertions to test_grep
1096 + + t: fix Lexer line count for $() inside double-quoted strings
1097 + + t: extract chainlint's parser into shared module
1098 + + t: fix grep assertions missing file arguments
1099 + + t/README: document test_grep helper
1100
1101 The test suite has been updated to use the 'test_grep' helper instead
1102 of bare 'grep' for test assertions, allowing file contents to be
@@ -1006,7 +1104,7 @@ Release tarballs are available at:
1104 been introduced to detect and prevent new bare 'grep' assertions from
1105 being added to the test suite.
1106
1009 - Will merge to 'next'.
1107 + Will merge to 'master'.
1108 cf. <xmqqtsqedxmt.fsf@gitster.g>
1109 source: <pull.2135.v4.git.1783314119.gitgitgadget@gmail.com>
1110
@@ -1032,11 +1130,10 @@ Release tarballs are available at:
1130 - ref-filter: memoize --contains with generations
1131 - commit-reach: reject cycles in contains walk
1132
1035 - 'git branch --contains' and 'git for-each-ref --contains' have
1036 - been optimized to use the memoized commit traversal previously
1037 - used only by 'git tag --contains', significantly speeding up
1038 - connectivity checks across many candidate refs with shared
1039 - history.
1133 + 'git branch --contains' and 'git for-each-ref --contains' have been
1134 + optimized to use the memoized commit traversal previously used only by
1135 + 'git tag --contains', significantly speeding up connectivity checks
1136 + across many candidate refs with shared history.
1137
1138 Needs review.
1139 cf. <xmqqqzlpulkp.fsf@gitster.g>
@@ -1058,19 +1155,19 @@ Release tarballs are available at:
1155 source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com>
1156
1157
1061 -* ps/cat-file-remote-object-info (2026-07-01) 13 commits
1158 +* ps/cat-file-remote-object-info (2026-07-10) 13 commits
1159 - cat-file: make remote-object-info allow-list dynamic
1160 - cat-file: validate remote atoms with an allow-list
1161 - cat-file: add remote-object-info to batch-command
1162 - transport: add client support for object-info
1163 - serve: advertise object-info feature
1164 - fetch-pack: move fetch initialization
1068 - - connect: make `write_fetch_command_and_capabilities()` more generic
1069 - - fetch-pack: move `write_fetch_command_and_capabilities()` to connect.c
1070 - - fetch-pack: drop static `advertise_sid` variable
1165 + - connect: make write_fetch_command_and_capabilities() more generic
1166 + - fetch-pack: move write_fetch_command_and_capabilities() to connect.c
1167 + - fetch-pack: drop static advertise_sid variable
1168 + - fetch-pack: fix hash_algo variable type
1169 - t1006: split test utility functions into new 'lib-cat-file.sh'
1170 - cat-file: declare loop counter inside for()
1073 - - git-compat-util: add `strtoumax_szt()` with error handling
1171 - transport-helper: fix memory leak of helper on disconnect
1172
1173 The 'remote-object-info' command has been added to 'git cat-file
@@ -1080,9 +1177,9 @@ Release tarballs are available at:
1177 filtered on the client based on server-advertised capabilities,
1178 returning empty strings for inapplicable or unsupported fields.
1179
1083 - Expecting a reroll.
1084 - cf. <CAN5EUNQ=2qtKXSJvxQiNLYqx0N0m6sfyBGLLXm4FB1kwtOsdbQ@mail.gmail.com>
1085 - source: <20260701-ps-eric-work-rebase-v15-0-c88a43b63917@gmail.com>
1180 + Will merge to 'next'?
1181 + cf. <CA+J6zkSo3ZqLe7HLEXRAs+hOq2FuOVokMQWbABcW95wihNtCgA@mail.gmail.com>
1182 + source: <20260710-ps-eric-work-rebase-v16-0-66e07b58a8fe@gmail.com>
1183
1184
1185 * mm/diff-process-hunks (2026-06-14) 6 commits
@@ -1099,7 +1196,7 @@ Release tarballs are available at:
1196 while leaving all output formatting (word diff, color, blame, etc.) to
1197 Git's standard pipeline.
1198
1102 - Expecting a reroll.
1199 + Expecting a reroll for too long, stalled.
1200 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
1201 source: <pull.2120.v4.git.1781463564.gitgitgadget@gmail.com>
1202
@@ -1118,21 +1215,6 @@ Release tarballs are available at:
1215 source: <20260619162105.648495-1-cat@malon.dev>
1216
1217
1121 -* kk/prio-queue-cascade-sift (2026-07-08) 3 commits
1122 - - prio-queue: use cascade for unfused gets
1123 - - prio-queue: extract sift_up() from prio_queue_put()
1124 - - Merge branch 'kk/prio-queue-get-put-fusion' into kk/prio-queue-cascade-sift
1125 - (this branch uses kk/prio-queue-get-put-fusion.)
1126 -
1127 - 'prio_queue_get()' has been optimized by using a cascade-down approach
1128 - (promoting the smaller child at each level and sifting up the last
1129 - element from the leaf vacancy), which halves the number of comparisons
1130 - per extract-min operation in the common case.
1131 -
1132 - Needs review.
1133 - source: <pull.2132.v3.git.1783532989.gitgitgadget@gmail.com>
1134 -
1135 -
1218 * ps/history-drop (2026-07-01) 11 commits
1219 (merged to 'next' on 2026-07-08 at 6fb84708a4)
1220 + builtin/history: implement "drop" subcommand
@@ -1148,7 +1230,7 @@ Release tarballs are available at:
1230 + read-cache: split out function to drop unmerged entries to stage 0
1231
1232 The experimental 'git history' command has been taught a new 'drop'
1151 - subcommand to remove a commit and replay its descendants onto its
1233 + subcommand to remove a commit, with its descendants replayed onto its
1234 parent.
1235
1236 Will merge to 'master'.
@@ -1165,7 +1247,7 @@ Release tarballs are available at:
1247 updated to hide dotfiles by default unless the user explicitly starts
1248 the path with a dot, matching standard shell-completion behavior.
1249
1168 - Waiting for response(s) to review comment(s).
1250 + Waiting for response(s) to review comment(s), stalled.
1251 cf. <xmqqik71t3nr.fsf@gitster.g>
1252 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>
1253
@@ -1209,7 +1291,8 @@ Release tarballs are available at:
1291 to remove local branches that are already merged to their tracked
1292 remote-tracking branches.
1293
1212 - Needs review.
1294 + Expecting a reroll.
1295 + cf. <CAHwyqnWspUTSnqmkMyXtWuAnENDSzrRLhhUR=Ljtt1xer3tphA@mail.gmail.com>
1296 source: <pull.2285.v18.git.git.1782338106.gitgitgadget@gmail.com>
1297
1298
@@ -1225,9 +1308,10 @@ Release tarballs are available at:
1308 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>
1309
1310
1228 -* ps/shift-root-in-graph (2026-07-04) 3 commits
1311 +* ps/shift-root-in-graph (2026-07-11) 4 commits
1312 - graph: indent visual root in graph
1313 - graph: add a 2 commit buffer for lookahead
1314 + - revision: add next_commit_to_show()
1315 - lib-log-graph: move check_graph function
1316
1317 'git log --graph' has been modified to visually distinguish parentless
@@ -1235,27 +1319,45 @@ Release tarballs are available at:
1319 simplification) by indenting them, preventing them from appearing
1320 falsely related to unrelated commits rendered immediately above them.
1321
1238 - Expecting a reroll.
1239 - cf. <CAN5EUNQoLtJ9cGwe8RNJTTdngM=qoak2=5F+yc7TH94TmQn7uw@mail.gmail.com>
1240 - source: <20260704-ps-pre-commit-indent-v7-0-a94706cc8376@gmail.com>
1241 -
1242 -
1243 -* kk/merge-base-exhaustion (2026-07-01) 10 commits
1244 - . commit-reach: remove commit-date ordering fallback
1245 - . commit-reach: move min_generation check into paint_queue_get()
1246 - . commit-reach: terminate merge-base walk when one paint side is exhausted
1247 - . commit-reach: introduce struct paint_state with per-side counters
1248 - . t6600: add clock-skew topologies and step counts for edge cases
1249 - . commit-reach: add trace2 instrumentation to paint_down_to_common()
1250 - . t6099, t6600: add side-exhaustion regression tests
1251 - . t6600: add test cases for side-exhaustion edge cases
1252 - . test-lib-functions: improve diagnostic output for trace2 data assertions
1253 - . Documentation/technical: add paint-down-to-common doc
1322 + Needs review.
1323 + source: <20260711-ps-pre-commit-indent-v9-0-eab6676e82f7@gmail.com>
1324 +
1325 +
1326 +* kk/merge-base-exhaustion (2026-07-11) 11 commits
1327 + - commit-reach: remove commit-date ordering fallback
1328 + - commit-reach: move min_generation check into paint_queue_get()
1329 + - commit-reach: terminate merge-base walk when one paint side is exhausted
1330 + - commit-reach: introduce struct paint_state with per-side counters
1331 + - t6600: add clock-skew topologies and step counts for edge cases
1332 + - commit-reach: add trace2 instrumentation to paint_down_to_common()
1333 + - t6099, t6600: add side-exhaustion regression tests
1334 + - t6600: add test cases for side-exhaustion edge cases
1335 + - test-lib-functions: improve diagnostic output for trace2 data assertions
1336 + - Documentation/technical: add paint-down-to-common doc
1337 + - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion
1338 + (this branch uses kk/commit-reach-find-all-fix.)
1339
1340 The merge-base computation has been optimized by stopping the walk
1341 early when one side's exclusive commits in the queue are exhausted,
1342 yielding significant speedups for queries with one-sided histories.
1343
1259 - Expecting a reroll.
1260 - cf. <CAL71e4PgcZDK-gJziJa_yjEqX9TE+PFMwZn0xbjAUzuUDDDBYA@mail.gmail.com>
1261 - source: <pull.2149.v5.git.1782923832.gitgitgadget@gmail.com>
1344 + Needs review.
1345 + source: <pull.2149.v6.git.1783776466.gitgitgadget@gmail.com>
1346 +
1347 +--------------------------------------------------
1348 +[Discarded]
1349 +
1350 +* kk/prio-queue-cascade-sift (2026-07-08) 3 commits
1351 + . prio-queue: use cascade for unfused gets
1352 + . prio-queue: extract sift_up() from prio_queue_put()
1353 + . Merge branch 'kk/prio-queue-get-put-fusion' into kk/prio-queue-cascade-sift
1354 + (this branch uses kk/prio-queue-get-put-fusion.)
1355 +
1356 + 'prio_queue_get()' has been optimized by using a cascade-down approach
1357 + (promoting the smaller child at each level and sifting up the last
1358 + element from the leaf vacancy), whereby the number of comparisons per
1359 + extract-min operation is halved in the common case.
1360 +
1361 + Retracted.
1362 + cf. <CAL71e4PRVYfUWc-c+6XHTwtADqrbub9ykbo+rPyramDhJw=Rfg@mail.gmail.com>
1363 + source: <pull.2132.v3.git.1783532989.gitgitgadget@gmail.com>