What's cooking (2026/07 #02)

Junio C Hamano committed Jul 6, 2026 at 06:47 UTC f304dc0b18d5dc0347a2f26df7b681ccd318c451
1 file changed +319 -173
whats-cooking.txt
+319 -173
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 -Subject: What's cooking in git.git (Jul 2026, #01)
2 +Subject: What's cooking in git.git (Jul 2026, #02)
3 X-master-at: e9019fcafe0040228b8631c30f97ae1adb61bcdc
4 -X-next-at: 602f6c329a7d99df269d382df353b4e1bbbbd8aa
4 +X-next-at: c42f45431d0ffbb231a771bbd65f8a334855ceed
5 Bcc: lwn@lwn.net, gitster@pobox.com
6
7 -What's cooking in git.git (Jul 2026, #01)
7 +What's cooking in git.git (Jul 2026, #02)
8 -----------------------------------------
9
10 Here are the topics that have been cooking in my tree. Commits
@@ -17,15 +17,15 @@ 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 -Git 2.55 (final) has been tagged. The next release is tentatively
21 -called Git 2.56. This week is the 0th week of the cycle, which is
22 -time to see if there are any brown paper bag breakages and
23 -regressions we need to fix. Next week, I plan to start merging the
24 -topics that have been cooking in 'next' down to 'master'. It has
25 -been customary to rewind 'next' and rebuild it on top of 'master'
26 -soon after a major release, but IIRC, we didn't do so in Git 2.55;
27 -perhaps we can do without rebuilding it this cycle as well. We'll
28 -see.
20 +As the zeroth week of the post-Git 2.55 cycle has passed without any
21 +reports of unexpected regressions, let's start merging things
22 +down. I plan to merge the topics that have been cooking in the
23 +'next' branch down to the 'master' branch early this week. The
24 +'next' branch may have to be frozen for a few days while I decide
25 +whether we want to rewind and rebuild it during the week, and we'll
26 +go from there. In the meantime, please help advance the topics
27 +waiting outside the 'next' branch by providing reviews,
28 +encouragement and testing.
29
30 Copies of the source code to Git live in many repositories, and the
31 following is a list of the ones I push into or their mirrors. Some
@@ -58,6 +58,173 @@ Release tarballs are available at:
58 --------------------------------------------------
59 [New Topics]
60
61 +* bc/parse-options-exit-0-on-help (2026-07-01) 4 commits
62 + - parse-options: exit 0 on -h
63 + - rev-parse: have --parseopt callers exit 0 on --help
64 + - parse-options: add a separate case for help output on error
65 + - t1517: skip svn tests if svn is not installed
66 +
67 + Option parsing with 'git rev-parse --parseopt' and most git
68 + subcommands has been updated to exit with 0 (instead of 129) when the
69 + help option (-h or --help) is requested directly by the user, aligning
70 + with standard Unix convention.
71 +
72 + Expecting a reroll.
73 + cf. <akZ6H84Tzzgu8L5W@fruit.crustytoothpaste.net>
74 + source: <20260701212442.1430084-1-sandals@crustytoothpaste.net>
75 +
76 +
77 +* mg/meson-hook-list-buildfix (2026-07-01) 1 commit
78 + - meson: restore hook-list.h to builtin_sources
79 +
80 + A racy build failure under Meson has been corrected by ensuring that
81 + the generated header file hook-list.h is built before compiling files
82 + in builtin_sources that depend on it.
83 +
84 + Will merge to 'next'.
85 + cf. <akZGJP1kVtjBFN_e@pks.im>
86 + source: <20260701193928.358825-1-floppym@gentoo.org>
87 +
88 +
89 +* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
90 + - apply: avoid leaking abandoned git-header state
91 +
92 + A candidate git diff header parsed by "git apply" is now isolated in a
93 + temporary structure, preventing any partially parsed state from
94 + polluting the main patch structure and causing assertions to trip if
95 + the header is ultimately rejected.
96 +
97 + Needs review.
98 + source: <20260702041759.51572-1-zhihao.yao@njit.edu>
99 +
100 +
101 +* jk/hash-algo-leak-fixes (2026-07-02) 9 commits
102 + - hash: add platform-specific discard functions
103 + - hash: fix memory leak copying sha256 gcrypt handles
104 + - http: discard hash in dumb-http http_object_request
105 + - check_stream_oid(): discard hash on read error
106 + - patch-id: discard hash when done
107 + - csum-file: provide a function to release checkpoints
108 + - csum-file: always finalize or discard hash
109 + - hash: add discard primitive
110 + - csum-file: drop discard_hashfile()
111 +
112 + Various code paths that initialize a cryptographic hash context but
113 + bail out or finish without calling git_hash_final() have been
114 + taught to call git_hash_discard() to release allocated resources,
115 + fixing memory leaks when Git is built with non-default backends
116 + like OpenSSL or libgcrypt.
117 +
118 + Will merge to 'next'?
119 + cf. <aktIIKuReMxJmDsi@pks.im>
120 + source: <20260702075234.GA1548258@coredump.intra.peff.net>
121 +
122 +
123 +* ml/t9811-replace-test-f (2026-07-02) 1 commit
124 + - t9811: replace 'test -f' and '! test -f' with 'test_path_*'
125 +
126 + The test script 't/t9811-git-p4-label-import.sh' has been
127 + modernized to use 'test_path_is_file' and 'test_path_is_missing'
128 + instead of raw 'test -f' and '! test -f' calls.
129 +
130 + Waiting for response(s) to review comment(s).
131 + cf. <akdwp_a2EuhVoGVW@pks.im>
132 + source: <20260702140704.65805-1-marcelomlage@usp.br>
133 +
134 +
135 +* ps/t-fixes-for-git-test-long (2026-07-03) 9 commits
136 + - gitlab-ci: enable "GIT_TEST_LONG"
137 + - gitlab-ci: disable RAM disk on macOS jobs
138 + - t: use `test_bool_env` to parse GIT_TEST_LONG
139 + - t7900: clean up large EXPENSIVE repository
140 + - t7508: skip EXPENSIVE test that is broken without SIZE_T_IS_32BIT
141 + - t5608: reduce maximum disk usage
142 + - t4141: fix inefficient use of dd(1)
143 + - t0021: skip EXPENSIVE test that is broken without SIZE_T_IS_32BIT
144 + - README: add GitLab CI badge to make it more discoverable
145 +
146 + Various test scripts have been updated to clean up large temporary
147 + files and repositories, reducing peak disk usage during testing.
148 + Also, expensive tests have been disabled on platforms that lack
149 + sufficient resources (like 32-bit platforms and Windows CI
150 + runners), and the long test suite has been enabled in GitLab CI.
151 +
152 + Waiting for response(s) to review comment(s).
153 + cf. <xmqqse60ht57.fsf@gitster.g>
154 + source: <20260703-b4-pks-t-fixes-for-GIT-TEST-LONG-v2-0-79076a7e0c62@pks.im>
155 +
156 +
157 +* ih/precompose-flex-array (2026-07-04) 1 commit
158 + - precompose_utf8: use a flex array for d_name
159 +
160 + The UTF-8 precomposition wrapper on macOS has been updated to use a
161 + flexible array member to represent the name of a directory entry,
162 + preventing fortified libc checks from failing when name is
163 + reallocated to be larger than NAME_MAX bytes.
164 +
165 + Will merge to 'next'?
166 + cf. <20260703050800.GA29216@tb-raspi4>
167 + source: <20260704233724.16928-1-ihar.hrachyshka@gmail.com>
168 +
169 +
170 +* sn/osxkeychain-rust-universal (2026-07-04) 2 commits
171 + - Makefile: support universal macOS builds via RUST_TARGETS
172 + - Makefile: add $(RUST_LIB) prerequisite to osxkeychain
173 +
174 + The build system has been updated to support building universal
175 + macOS binaries when Rust is enabled, by compiling separate static
176 + archives for each target triple listed in RUST_TARGETS and
177 + combining them using the macOS lipo tool. Additionally, the
178 + git-credential-osxkeychain helper has been updated to link against
179 + $(RUST_LIB) when Rust is enabled.
180 +
181 + Waiting for response(s) to review comment(s).
182 + cf. <akuIQADP_aRb5pY6@pks.im>
183 + source: <pull.2288.v4.git.git.1783188355.gitgitgadget@gmail.com>
184 +
185 +--------------------------------------------------
186 +[Stalled]
187 +
188 +* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
189 + - http: preserve wwwauth_headers across redirects
190 +
191 + When cURL follows a redirect, the WWW-Authenticate headers from the
192 + redirect target were lost because credential_from_url() cleared the
193 + credential state. This has been fixed by preserving the collected
194 + headers across the redirect update.
195 +
196 + Expecting a reroll for too long, stalled.
197 + cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
198 + source: <20260602161150.1527493-1-aplattner@nvidia.com>
199 +
200 +
201 +* jt/config-lock-timeout (2026-05-17) 1 commit
202 + - config: retry acquiring config.lock, configurable via core.configLockTimeout
203 +
204 + Configuration file locking now retries for a short period, avoiding
205 + failures when multiple processes attempt to update the configuration
206 + simultaneously.
207 +
208 + Waiting for response(s) to review comment(s) for too long, stalled.
209 + cf. <agrIrGwSMFlKTx9x@pks.im>
210 + source: <20260517132111.1014901-1-joerg@thalheim.io>
211 +
212 +--------------------------------------------------
213 +[Cooking]
214 +
215 +* cl/conditional-config-on-worktree-path (2026-07-02) 2 commits
216 + - config: add "worktree" and "worktree/i" includeIf conditions
217 + - config: refactor include_by_gitdir() into include_by_path()
218 +
219 + The [includeIf "condition"] conditional inclusion facility for
220 + configuration files has learned to use the location of the worktree in
221 + its condition.
222 +
223 + Waiting for response(s) to review comment(s).
224 + cf. <akeW4yFC8uuu2o8a@pks.im>
225 + source: <20260703-includeif-worktree-v6-0-a13893ad9a7f@black-desk.cn>
226 +
227 +
228 * kk/commit-reach-find-all-fix (2026-06-29) 2 commits
229 - commit-reach: guard !FIND_ALL early exit with generation ordering check
230 - t6600: add test for merge-base early exit with clock skew
@@ -85,14 +252,15 @@ Release tarballs are available at:
252
253
254 * jk/format-patch-leakfix (2026-06-29) 2 commits
88 - - format-patch: fix leak of rev_info in prepare_bases()
89 - - t: move LSan errors from stdout to stderr
255 + (merged to 'next' on 2026-07-05 at 072cbaa461)
256 + + format-patch: fix leak of rev_info in prepare_bases()
257 + + t: move LSan errors from stdout to stderr
258
259 A memory leak in the '--base' handling of 'git format-patch' has been
260 plugged, and the leak-reporting of the test suite when running under a
261 TAP harness has been improved.
262
95 - Will merge to 'next'?
263 + Will merge to 'master'.
264 cf. <akOZy-BygZS8fqPM@pks.im>
265 source: <20260630063944.GA3733670@coredump.intra.peff.net>
266
@@ -163,34 +331,34 @@ Release tarballs are available at:
331 exposed when running tests with the
332 `GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1` environment variable.
333
166 - Will merge to 'next'?
334 + Will merge to 'next'.
335 + cf. <b641aed4-ad52-477b-b1d8-9d8e470be46f@gmail.com>
336 cf. <xmqqo6gqobrt.fsf@gitster.g>
337 source: <20260701063538.GA2579765@coredump.intra.peff.net>
338
339
171 -* js/ci-dockerized-pid-limit (2026-07-01) 1 commit
172 - - ci(dockerized): reduce the PID limit for private repositories
340 +* js/ci-dockerized-pid-limit (2026-07-04) 1 commit
341 + - ci(dockerized): raise the PID limit for private repositories
342
343 Dockerized CI jobs running in private GitHub repositories have been
344 adjusted to use explicit process and file limits, preventing resource
345 exhaustion errors on private runners.
346
178 - Waiting for response(s) to review comment(s).
179 - cf. <xmqq5x2yps4c.fsf@gitster.g>
180 - source: <pull.2164.git.1782889484346.gitgitgadget@gmail.com>
347 + Will merge to 'next'?
348 + cf. <xmqqh5medmzh.fsf@gitster.g>
349 + source: <pull.2164.v2.git.1783155124926.gitgitgadget@gmail.com>
350
351
183 -* js/coverity-fixes (2026-07-01) 13 commits
184 - - mingw: make exit_process() own the process handle on all paths
352 +* js/coverity-fixes (2026-07-05) 12 commits
353 + - mingw: make `exit_process()` own the process handle on all paths
354 - fsmonitor: plug token-data leak on early daemon-startup failures
355 - reftable/table: release filter on error path
356 - imap-send: avoid leaking the IMAP upload buffer
357 - worktree: fix resource leaks when branch creation fails
189 - - submodule: fix cwd leak in get_superproject_working_tree()
190 - - dir: free allocations on parse-error paths in read_one_dir()
358 + - submodule: fix cwd leak in `get_superproject_working_tree()`
359 + - dir: free allocations on parse-error paths in `read_one_dir()`
360 - line-log: avoid redundant copy that leaks in process_ranges
192 - - run_diff_files: avoid memory leak
193 - - run-command: avoid close(-1) in start_command() error paths
361 + - run-command: avoid `close(-1)` in `start_command()` error paths
362 - download_https_uri_to_file(): do not leak fd upon failure
363 - loose: avoid closing invalid fd on error path
364 - load_one_loose_object_map(): fix resource leak
@@ -199,74 +367,9 @@ Release tarballs are available at:
367 descriptor closures, and process handle ownership issues flagged by
368 Coverity.
369
202 - Waiting for response(s) to review comment(s).
203 - cf. <akTIMM6qLfDNdg-a@pks.im>
204 - source: <pull.2163.git.1782889472.gitgitgadget@gmail.com>
205 -
206 ---------------------------------------------------
207 -[Stalled]
208 -
209 -* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
210 - - http: preserve wwwauth_headers across redirects
211 -
212 - When cURL follows a redirect, the WWW-Authenticate headers from the
213 - redirect target were lost because credential_from_url() cleared the
214 - credential state. This has been fixed by preserving the collected
215 - headers across the redirect update.
216 -
217 - Expecting a reroll for too long, stalled.
218 - cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
219 - source: <20260602161150.1527493-1-aplattner@nvidia.com>
220 -
221 -
222 -* jt/config-lock-timeout (2026-05-17) 1 commit
223 - - config: retry acquiring config.lock, configurable via core.configLockTimeout
224 -
225 - Configuration file locking now retries for a short period, avoiding
226 - failures when multiple processes attempt to update the configuration
227 - simultaneously.
228 -
229 - Waiting for response(s) to review comment(s) for too long, stalled.
230 - cf. <agrIrGwSMFlKTx9x@pks.im>
231 - source: <20260517132111.1014901-1-joerg@thalheim.io>
232 -
233 -
234 -* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
235 - - SQUASH???
236 - - doc: document autocorrect API
237 - - parseopt: add tests for subcommand autocorrection
238 - - parseopt: enable subcommand autocorrection for git-remote and git-notes
239 - - parseopt: autocorrect mistyped subcommands
240 - - autocorrect: provide config resolution API
241 - - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
242 - - autocorrect: use mode and delay instead of magic numbers
243 - - help: move tty check for autocorrection to autocorrect.c
244 - - help: make autocorrect handling reusable
245 - - parseopt: extract subcommand handling from parse_options_step()
246 -
247 - The parse-options library learned to auto-correct misspelled
248 - subcommand names.
249 -
250 - Waiting for response(s) to review comment(s) for too long, stalled.
251 - cf. <xmqq33yzd9yf.fsf@gitster.g>
252 - cf. <SY0P300MB0801E50FCB7EB2F45CD15208CE042@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
253 - source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
254 -
255 -
256 -* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
257 - - config: add "worktree" and "worktree/i" includeIf conditions
258 - - config: refactor include_by_gitdir() into include_by_path()
259 -
260 - The [includeIf "condition"] conditional inclusion facility for
261 - configuration files has learned to use the location of worktree
262 - in its condition.
263 -
264 - Waiting for response(s) to review comment(s) for too long, stalled.
265 - cf. <xmqq8q97et9b.fsf@gitster.g>
266 - source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>
370 + Needs review.
371 + source: <pull.2163.v2.git.1783239870.gitgitgadget@gmail.com>
372
268 ---------------------------------------------------
269 -[Cooking]
373
374 * tb/repack-geometric-cruft (2026-06-28) 11 commits
375 - SQUASH??? bare grep !???
@@ -281,22 +384,25 @@ Release tarballs are available at:
384 - repack: extract `locate_existing_pack()` helper
385 - repack: unconditionally exclude non-kept packs
386
284 - Teach `git repack` to accept `--geometric` and `--cruft`
285 - together. When both are given, the geometric repack rolls up non-cruft
286 - packs as usual, while a separate cruft pack is written to collect
287 - unreachable objects.
387 + Teach `git repack` to accept `--geometric` and `--cruft` together.
388 + When both are given, the geometric repack rolls up non-cruft packs as
389 + usual, while a separate cruft pack is written to collect unreachable
390 + objects.
391
392 Expecting a reroll.
290 - cf. <akTIMM6qLfDNdg-a@pks.im>
393 + cf. <aj8cOhH6hGVZIFft@nand.local>
394 source: <cover.1782500507.git.me@ttaylorr.com>
395
396
397 * jk/reftable-leakfix (2026-06-28) 1 commit
295 - - reftable: fix unlikely leak on API error
398 + (merged to 'next' on 2026-07-05 at e224acf508)
399 + + reftable: fix unlikely leak on API error
400
297 - Leakfix.
401 + A memory leak in the reftable_writer_new() initialization function has
402 + been fixed by delaying the allocation of struct reftable_writer until
403 + after input options are validated.
404
299 - Will merge to 'next'.
405 + Will merge to 'master'.
406 cf. <akIPBJLtPqDjQt-A@pks.im>
407 source: <20260628090314.GA661068@coredump.intra.peff.net>
408
@@ -305,20 +411,24 @@ Release tarballs are available at:
411 (merged to 'next' on 2026-06-29 at 2bf33c6a40)
412 + t3420-rebase-autostash: don't try to grep non-existing files
413
308 - Test fix.
414 + A test checking interactions between git rebase --quit and
415 + autostash in t3420-rebase-autostash.sh has been corrected to use
416 + test_path_is_missing instead of ! grep on a file that shouldn't
417 + exist in the conflicted state.
418
419 Will merge to 'master'.
420 source: <20211010172809.1472914-1-szeder.dev@gmail.com>
421
422
423 * ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit
315 - - gpg-interface: fix strip_cr_before_lf to only remove CR before LF
424 + (merged to 'next' on 2026-07-05 at 25ae7a9822)
425 + + gpg-interface: fix strip_cr_before_lf to only remove CR before LF
426
427 The GPG and SSH signature parsing code has been corrected to strip
428 carriage return characters only when they immediately precede line
429 feeds, instead of unconditionally stripping all carriage returns.
430
321 - Will merge to 'next'.
431 + Will merge to 'master'.
432 source: <20260624093618.17456-1-antonio.destefani08@gmail.com>
433
434
@@ -330,9 +440,9 @@ Release tarballs are available at:
440 - object-file: propagate files transaction errors
441 - object-file: rename files transaction prepare function
442
333 - git-receive-pack has been refactored to use ODB transaction
334 - interfaces instead of directly managing tmp_objdir for staging
335 - incoming objects, bringing it closer to being ODB backend agnostic.
443 + git-receive-pack has been refactored to use ODB transaction interfaces
444 + instead of directly managing tmp_objdir for staging incoming objects,
445 + bringing it closer to being ODB backend agnostic.
446
447 Expecting a reroll.
448 cf. <aju_AmlKVi5UZaiQ@pks.im>
@@ -341,7 +451,7 @@ Release tarballs are available at:
451 source: <20260624041920.2601961-1-jltobler@gmail.com>
452
453
344 -* ps/odb-drop-whence (2026-06-24) 7 commits
454 +* ps/odb-drop-whence (2026-07-02) 7 commits
455 - odb: document object info fields
456 - odb: drop `whence` field from object info
457 - treewide: convert users of `whence` to the new source field
@@ -355,13 +465,12 @@ Release tarballs are available at:
465 refactoring backend-specific object information retrieval into an
466 opt-in struct object_info_source structure.
467
358 - Will merge to 'next'?
359 - cf. <akOod6X1a2axIXKZ@pks.im>
468 + Will merge to 'next'.
469 cf. <xmqqv7b0rmt6.fsf@gitster.g>
361 - source: <20260624-b4-pks-odb-drop-whence-v1-0-8d1877b790ac@pks.im>
470 + source: <20260702-b4-pks-odb-drop-whence-v2-0-b0af7468ad95@pks.im>
471
472
364 -* ps/reftable-hardening (2026-06-29) 12 commits
473 +* ps/reftable-hardening (2026-07-03) 12 commits
474 - reftable/table: fix OOB read on truncated table
475 - reftable/table: fix NULL pointer access when seeking to bogus offsets
476 - reftable/block: fix OOB read with bogus restart offset
@@ -380,38 +489,40 @@ Release tarballs are available at:
489 during parsing.
490
491 Needs review.
383 - source: <20260629-pks-reftable-hardening-v2-0-b0228e7d908d@pks.im>
492 + source: <20260703-pks-reftable-hardening-v3-0-b87c555b9920@pks.im>
493
494
495 * hn/branch-push-slip-advice (2026-06-27) 2 commits
387 - - push: suggest <remote> <branch> for a slash slip
388 - - branch: suggest <remote>/<branch> on upstream slip
496 + (merged to 'next' on 2026-07-05 at 9620e1e4b2)
497 + + push: suggest <remote> <branch> for a slash slip
498 + + branch: suggest <remote>/<branch> on upstream slip
499
390 - "git push origin/main" and "git branch origin main" could both be
391 - an obvious typo, in which case offer the obvious typofix.
500 + When 'git push origin/main' or 'git branch origin main' is run, the
501 + tool recognizes it as a potential typo and offers a typofix.
502
393 - Will merge to 'next'.
503 + Will merge to 'master'.
504 cf. <xmqqfr272lq7.fsf@gitster.g>
505 source: <pull.2331.v3.git.git.1782583345.gitgitgadget@gmail.com>
506
507
508 * jc/history-message-prep-fix (2026-06-29) 1 commit
399 - - history: streamline message preparation and plug file stream leak
509 + (merged to 'next' on 2026-07-05 at c42f45431d)
510 + + history: streamline message preparation and plug file stream leak
511
512 Code clean-up with leakfix for a write file stream.
513
403 - Will merge to 'next'?
514 + Will merge to 'master'.
515 cf. <akO1mhi2u2PntLbt@pks.im>
516 source: <xmqqmrwdxrat.fsf@gitster.g>
517
518
408 -* ty/migrate-excludes-file (2026-06-30) 1 commit
519 +* ty/migrate-excludes-file (2026-07-01) 1 commit
520 - environment: move excludes_file into repo_config_values
521
522 Move excludes_file global variable into per-repository structure.
523
524 Needs review.
414 - source: <20260630164401.2906091-2-cat@malon.dev>
525 + source: <20260701180813.776173-2-cat@malon.dev>
526
527
528 * kk/merge-base-exhaustion (2026-07-01) 10 commits
@@ -430,8 +541,8 @@ Release tarballs are available at:
541 early when one side's exclusive commits in the queue are exhausted,
542 yielding significant speedups for queries with one-sided histories.
543
433 - Needs review.
434 - passes t6600 standalone, breaks when merged to 'seen'.
544 + Expecting a reroll.
545 + cf. <CAL71e4PgcZDK-gJziJa_yjEqX9TE+PFMwZn0xbjAUzuUDDDBYA@mail.gmail.com>
546 source: <pull.2149.v5.git.1782923832.gitgitgadget@gmail.com>
547
548
@@ -441,7 +552,8 @@ Release tarballs are available at:
552 The USE_NSEC build knob, which enables support for sub-second file
553 timestamp resolution, has been wired up to the Meson build system.
554
444 - Waiting for response(s) to review comment(s).
555 + Expecting a reroll.
556 + cf. <CALnO6CDm74rCBQu6Q0djsvtuw5U14V=PApptcZTgP+pic1f_AA@mail.gmail.com>
557 cf. <ajjuoS5Qc3K0nCRl@pks.im>
558 cf. <akIL6oJgUv8J8SB2@pks.im>
559 source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>
@@ -476,15 +588,16 @@ Release tarballs are available at:
588 directory to clean up the top-level directory and clearly separate
589 library code.
590
479 - Waiting for response(s) to review comment(s).
480 - cf. <cbbb08fc-fd4d-45ef-927b-05ac44602ff1@gmail.com>
591 + Comments?
592 + cf. <akX1TMoRr87Id8Ss@pks.im>
593 source: <20260701-pks-libgit-in-subdir-v3-0-5e4860056094@pks.im>
594
595
596 * ps/odb-generalize-prepare (2026-06-22) 3 commits
485 - - odb: introduce `odb_prepare()`
486 - - odb/source: generalize `reprepare()` callback
487 - - Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare
597 + (merged to 'next' on 2026-07-05 at e33360c151)
598 + + odb: introduce `odb_prepare()`
599 + + odb/source: generalize `reprepare()` callback
600 + + Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare
601 (this branch uses ps/odb-source-packed.)
602
603 The `reprepare()` callback for object database sources has been
@@ -492,7 +605,7 @@ Release tarballs are available at:
605 flag, and a new `odb_prepare()` wrapper has been introduced to
606 allow pre-opening object database sources.
607
495 - Will merge to 'next'?
608 + Will merge to 'master'.
609 cf. <87ik704f1j.fsf@emacs.iotcl.com>
610 source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>
611
@@ -603,7 +716,7 @@ Release tarballs are available at:
716 "update", and "rename" subcommands to create, delete, update, and
717 rename references, respectively.
718
606 - Will merge to 'next'?
719 + Will merge to 'next'.
720 cf. <xmqqcxx7susi.fsf@gitster.g>
721 source: <20260630-pks-refs-writing-subcommands-v3-0-deb04de1ecef@pks.im>
722
@@ -646,9 +759,9 @@ Release tarballs are available at:
759 (merged to 'next' on 2026-06-22 at f7e984a003)
760 + log: improve --follow following renames for non-linear history
761
649 - "git log --follow" has been updated to handle non-linear history, in
650 - which the path being tracked gets renamed differently in multiple
651 - history lines, better.
762 + "git log --follow" has been updated to better handle non-linear
763 + history, in which the path being tracked gets renamed differently in
764 + multiple history lines.
765
766 Will merge to 'master'.
767 source: <ajjU4w2B0NlZffw1@collabora.com>
@@ -677,11 +790,11 @@ Release tarballs are available at:
790 exclusion logic incorrectly skipped packs from layers above the
791 selected base, breaking reachability closure for bitmaps.
792
680 - Needs review.
793 + Comments?
794 source: <cover.1781294771.git.me@ttaylorr.com>
795
796
684 -* mm/test-grep-lint (2026-06-12) 6 commits
797 +* mm/test-grep-lint (2026-07-02) 6 commits
798 - t: add greplint to detect bare grep assertions
799 - t: convert grep assertions to test_grep
800 - t: fix Lexer line count for $() inside double-quoted strings
@@ -689,31 +802,41 @@ Release tarballs are available at:
802 - t: fix grep assertions missing file arguments
803 - t/README: document test_grep helper
804
692 - Waiting for response(s) to review comment(s).
693 - cf. <aj93BE8MYatQAjoy@szeder.dev>
805 + The test suite has been updated to use the test_grep helper instead
806 + of bare grep for test assertions, allowing file contents to be
807 + printed on failure for easier debugging. A new greplint linter has
808 + been introduced to detect and prevent new bare grep assertions from
809 + being added to the test suite.
810 +
811 + Will merge to 'next'.
812 cf. <xmqqqzlpt543.fsf@gitster.g>
695 - source: <pull.2135.v2.git.1781323575.gitgitgadget@gmail.com>
813 + source: <pull.2135.v3.git.1783054466.gitgitgadget@gmail.com>
814
815
816 * rs/cat-file-default-format-optim (2026-06-14) 1 commit
817 (merged to 'next' on 2026-06-17 at 43ed8b3969)
818 + cat-file: speed up default format
819
820 + The default format path of git cat-file --batch has been optimized
821 + to use strbuf_add_oid_hex() and strbuf_add_uint() instead of
822 + strbuf_addf(), yielding a noticeable speedup.
823 +
824 Will merge to 'master'.
825 cf. <20260615165326.GA91269@coredump.intra.peff.net>
826 source: <5a7ed929-6fe0-496c-83bd-65dee57c2241@web.de>
827
828
829 * kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
708 - - prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
709 - - prio-queue: rename .nr to .nr_ and add accessor helpers
830 + (merged to 'next' on 2026-07-05 at 935d102244)
831 + + prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
832 + + prio-queue: rename .nr to .nr_ and add accessor helpers
833
834 The lazy priority queue optimization pattern (deferring actual removal
835 in prio_queue_get() to allow get+put fusion) has been folded directly
836 into prio_queue itself, speeding up commit traversal workflows and
837 simplifying callers.
838
716 - Will merge to 'next'?
839 + Will merge to 'master'.
840 cf. <xmqqh5mjrbgq.fsf@gitster.g>
841 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>
842
@@ -734,21 +857,18 @@ Release tarballs are available at:
857 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>
858
859
737 -* tc/replay-linearize (2026-06-25) 3 commits
860 +* tc/replay-linearize (2026-07-02) 3 commits
861 - replay: offer an option to linearize the commit topology
739 - - replay: better explain how pick_regular_commit() picks a base
740 - - replay: add helper to put entry into mapped_commits
862 + - replay: resolve the replay base outside pick_regular_commit()
863 + - replay: add helper to put entry into replayed_commits
864
742 - git replay learns --linearize option to drop merge commits and
743 - linearize the replayed history, mimicking git rebase
865 + The git replay command has learned the --linearize option to drop
866 + merge commits and linearize the replayed history, mimicking git rebase
867 --no-rebase-merges.
868
869 Waiting for response(s) to review comment(s).
747 - cf. <xmqq5x358byf.fsf@gitster.g>
748 - cf. <b5d70a0b-ef32-49c9-84ba-8a64b7809574@gmail.com>
749 - cf. <f8b520d1-edeb-9e45-c503-025c8b5833c3@gmx.de>
750 - cf. <akOpOXeD_gS5U7rH@pks.im>
751 - source: <20260626-toon-git-replay-drop-merges-v5-0-5e120738b9d0@iotcl.com>
870 + cf. <xmqqbjcnhjvk.fsf@gitster.g>
871 + source: <20260702-toon-git-replay-drop-merges-v6-0-78a07cdd0382@iotcl.com>
872
873
874 * ps/setup-drop-global-state (2026-06-10) 8 commits
@@ -888,6 +1008,7 @@ Release tarballs are available at:
1008
1009 Waiting for response(s) to review comment(s).
1010 cf. <xmqq7bneo9mh.fsf@gitster.g>
1011 + cf. <xmqqse62obwh.fsf@gitster.g>
1012 source: <20260701-ps-eric-work-rebase-v15-0-c88a43b63917@gmail.com>
1013
1014
@@ -915,7 +1036,7 @@ Release tarballs are available at:
1036 underlying real branches, fixing failures when branch aliases (like a
1037 default branch rename) are present.
1038
918 - Waiting for response(s) to review comment(s).
1039 + Waiting for response(s) to review comment(s) for too long, stalled.
1040 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
1041 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>
1042
@@ -929,8 +1050,8 @@ Release tarballs are available at:
1050 - xdiff: support external hunks via xpparam_t
1051
1052 A new `diff.<driver>.process` configuration has been introduced to
932 - allow a long-running external process to act as a hunk provider to
933 - allows external tools to control which lines Git considers changed
1053 + allow a long-running external process to act as a hunk provider,
1054 + allowing external tools to control which lines Git considers changed
1055 while leaving all output formatting (word diff, color, blame, etc.) to
1056 Git's standard pipeline.
1057
@@ -1017,7 +1138,9 @@ Release tarballs are available at:
1138 subcommand to remove a commit and replay its descendants onto its
1139 parent.
1140
1020 - Needs review.
1141 + Will merge to 'next'.
1142 + cf. <xmqq1pdmprbk.fsf@gitster.g>
1143 + cf. <CAP8UFD3OAktVQsLuqBNFH2uhEO31PH8ZF3ZT1ZW8k++XE8YLPw@mail.gmail.com>
1144 source: <20260701-b4-pks-history-drop-v8-0-19b5cdf1facd@pks.im>
1145
1146
@@ -1046,7 +1169,10 @@ Release tarballs are available at:
1169 - doc: interpret-trailers: replace “lines” with “metadata”
1170 - doc: interpret-trailers: stop fixating on RFC 822
1171
1049 - Documentation updates.
1172 + Documentation for git interpret-trailers has been updated to
1173 + explain the format of trailer keys (alphanumeric characters and
1174 + hyphens), replace outdated terminology, define key terms upfront,
1175 + and document how comment lines in the input are treated.
1176
1177 Expecting a reroll.
1178 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
@@ -1057,7 +1183,7 @@ Release tarballs are available at:
1183 - completion: hide dotfiles by default for path completion
1184 - completion: hide dotfiles for selected path completion
1185
1060 - The path completion for commands like `git rm` and `git mv`, is being
1186 + The path completion for commands like `git rm` and `git mv` is being
1187 updated to hide dotfiles by default, unless the user explicitly starts
1188 the path with a dot, matching standard shell-completion behavior.
1189
@@ -1070,10 +1196,10 @@ Release tarballs are available at:
1196 - commit: allow -c/-C for all kinds of --fixup
1197 - commit: allow -m/-F for all kinds of --fixup
1198
1073 - The -m/-F/-c/-C options to supply commit log message from outside the
1074 - editor are now supported for all "git commit --fixup" variations.
1199 + The -m/-F/-c/-C options to supply a commit log message from outside
1200 + the editor are now supported for all "git commit --fixup" variations.
1201
1076 - Needs review.
1202 + Comments?
1203 source: <cover.1779792311.git.erik@cervined.in>
1204
1205
@@ -1086,7 +1212,7 @@ Release tarballs are available at:
1212 Doc update for "git replay" to actually refer to its configuration
1213 variables.
1214
1089 - Needs review.
1215 + Comments?
1216 source: <V3_CV_doc_replay_config.780@msgid.xyz>
1217
1218
@@ -1149,7 +1275,7 @@ Release tarballs are available at:
1275 "git checkout --track=..." learned to optionally fetch the branch
1276 from the remote the new branch will work with.
1277
1152 - Waiting for response(s) to review comment(s).
1278 + Comments?
1279 cf. <12998c3a-ff69-4a98-9ed6-18aa0224e75e@gmail.com>
1280 cf. <CAL71e4MiijEiM26TKJcOYT7L4pfQeMM_F2oT3U3igP-wOZm2Ag@mail.gmail.com>
1281 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>
@@ -1184,9 +1310,9 @@ Release tarballs are available at:
1310 source: <cover.1782230024.git.phillip.wood@dunelm.org.uk>
1311
1312
1187 -* ps/shift-root-in-graph (2026-06-20) 3 commits
1313 +* ps/shift-root-in-graph (2026-07-04) 3 commits
1314 - graph: indent visual root in graph
1189 - - revision: add peek functions for lookahead
1315 + - graph: add a 2 commit buffer for lookahead
1316 - lib-log-graph: move check_graph function
1317
1318 "git log --graph" has been modified to visually distinguish
@@ -1195,9 +1321,29 @@ Release tarballs are available at:
1321 appearing falsely related to unrelated commits rendered immediately
1322 above them.
1323
1198 - Expecting a reroll.
1199 - The peek-ahead approach may need to be scratched.
1200 - cf. <CAN5EUNSj-2hkEBF7N_M6RLsuujDNFNUF3w53zR7SN1_5i2BRyg@mail.gmail.com>
1201 - cf. <CAL71e4OQ_kGb+UwHgikHG236-8BVtc7P9OdpV4i4UzYRCoPczw@mail.gmail.com>
1202 - cf. <CAN5EUNTQV68_eofa7BGb0BukMe=U2d4-FEVmJwW4dObQ2r6LuA@mail.gmail.com>
1203 - source: <20260620-ps-pre-commit-indent-v6-0-cdc6d8fd5fbc@gmail.com>
1324 + Needs review.
1325 + source: <20260704-ps-pre-commit-indent-v7-0-a94706cc8376@gmail.com>
1326 +
1327 +--------------------------------------------------
1328 +[Discarded]
1329 +
1330 +* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
1331 + . SQUASH???
1332 + . doc: document autocorrect API
1333 + . parseopt: add tests for subcommand autocorrection
1334 + . parseopt: enable subcommand autocorrection for git-remote and git-notes
1335 + . parseopt: autocorrect mistyped subcommands
1336 + . autocorrect: provide config resolution API
1337 + . autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
1338 + . autocorrect: use mode and delay instead of magic numbers
1339 + . help: move tty check for autocorrection to autocorrect.c
1340 + . help: make autocorrect handling reusable
1341 + . parseopt: extract subcommand handling from parse_options_step()
1342 +
1343 + The parse-options library learned to auto-correct misspelled
1344 + subcommand names.
1345 +
1346 + Discarded after waiting for response(s) to review comment(s) for too long.
1347 + cf. <xmqq33yzd9yf.fsf@gitster.g>
1348 + cf. <SY0P300MB0801E50FCB7EB2F45CD15208CE042@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
1349 + source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>