What's cooking (2025/12 #02)

Junio C Hamano committed Dec 9, 2025 at 22:04 UTC f1b73e598593ade0fdefa070b455b33c4359f053
1 file changed +175 -195
whats-cooking.txt
+175 -195
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 -Subject: What's cooking in git.git (Dec 2025, #01)
3 -X-master-at: bdc5341ff65278a3cc80b2e8a02a2f02aa1fac06
4 -X-next-at: 3f4935d65f8d04f04e16a208ba4f77a42d207db3
2 +Subject: What's cooking in git.git (Dec 2025, #02)
3 +X-master-at: e85ae279b0d58edc2f4c3fd5ac391b51e1223985
4 +X-next-at: 3fc767764aec198db34053b394419bf8a1e8e5d2
5 Bcc: lwn@lwn.net, gitster@pobox.com
6
7 -What's cooking in git.git (Dec 2025, #01)
7 +What's cooking in git.git (Dec 2025, #02)
8 -----------------------------------------
9
10 Here are the topics that have been cooking in my tree. Commits
@@ -51,128 +51,151 @@ Release tarballs are available at:
51 --------------------------------------------------
52 [Graduated to 'master']
53
54 -* cc/fast-import-strip-if-invalid (2025-11-16) 3 commits
55 - (merged to 'next' on 2025-11-26 at 7235cd0d18)
56 - + fast-import: add 'strip-if-invalid' mode to --signed-commits=<mode>
57 - + commit: refactor verify_commit_buffer()
58 - + fast-import: refactor finalize_commit_buffer()
54 +* bc/zsh-testsuite (2025-11-27) 2 commits
55 + (merged to 'next' on 2025-11-30 at b4a3081f6f)
56 + + t5564: fix test hang under zsh's sh mode
57 + + t0614: use numerical comparison with test_line_count
58 +
59 + A few tests have been updated to work under the shell compatible
60 + mode of zsh.
61 + source: <20251128012107.101431-1-sandals@crustytoothpaste.net>
62 +
63
60 - "git fast-import" learns "--strip-if-invalid" option to drop
61 - invalid cryptographic signature from objects.
62 - source: <20251117043450.322644-1-christian.couder@gmail.com>
63 -
64 -
65 -* en/xdiff-cleanup-2 (2025-11-18) 10 commits
66 - (merged to 'next' on 2025-11-25 at 452b7107da)
67 - + xdiff: rename rindex -> reference_index
68 - + xdiff: change rindex from long to size_t in xdfile_t
69 - + xdiff: make xdfile_t.nreff a size_t instead of long
70 - + xdiff: make xdfile_t.nrec a size_t instead of long
71 - + xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
72 - + xdiff: use unambiguous types in xdl_hash_record()
73 - + xdiff: use size_t for xrecord_t.size
74 - + xdiff: make xrecord_t.ptr a uint8_t instead of char
75 - + xdiff: use ptrdiff_t for dstart/dend
76 - + doc: define unambiguous type mappings across C and Rust
77 -
78 - Code clean-up.
79 - source: <pull.2070.v5.git.git.1763505262.gitgitgadget@gmail.com>
80 -
81 -
82 -* jc/optional-path (2025-11-20) 3 commits
83 - (merged to 'next' on 2025-11-25 at 5e75404281)
84 - + config: really treat missing optional path as not configured
85 - + config: really pretend missing :(optional) value is not there
86 - + config: mark otherwise unused function as file-scope static
87 -
88 - "git config get --path" segfaulted on an ":(optional)path" that
89 - does not exist, which has been corrected.
90 - source: <xmqqikf47ajk.fsf@gitster.g>
91 -
92 -
93 -* js/ci-show-breakage-in-dockerized-jobs (2025-11-17) 1 commit
94 - (merged to 'next' on 2025-11-26 at 3c4a8c430f)
95 - + ci(dockerized): do show the result of failing tests again
96 -
97 - Dockerised jobs at the GitHub Actions CI have been taught to show
98 - more details of failed tests.
99 - cf. <xmqqpl9gike6.fsf@gitster.g>
100 - cf. <CABPp-BErdhTjbqDem4Xvc-XbhgLUEpy9-eiaaR1F_diMca--6A@mail.gmail.com>
101 - source: <pull.2003.git.1763399064983.gitgitgadget@gmail.com>
102 -
103 -
104 -* js/strip-scalar-too (2025-11-17) 1 commit
105 - (merged to 'next' on 2025-11-25 at 9f2607acfb)
106 - + make strip: include `scalar`
107 -
108 - "make strip" has been taught to strip "scalar" as well as "git".
109 - cf. <xmqq7bvoiadg.fsf@gitster.g>
110 - source: <pull.2004.git.1763409086322.gitgitgadget@gmail.com>
111 -
112 -
113 -* kh/doc-committer-date-is-author-date (2025-11-20) 1 commit
114 - (merged to 'next' on 2025-11-25 at 9f829587af)
115 - + doc: warn against --committer-date-is-author-date
116 -
117 - The "--committer-date-is-author-date" option of "git am/rebase" is
118 - a misguided one. The documentation is updated to discourage its
119 - use.
120 - source: <V2_committer-date-is-author-date.1@msgid.xyz>
121 -
122 -
123 -* ps/object-source-management (2025-11-18) 14 commits
124 - (merged to 'next' on 2025-11-26 at 6f98745b4a)
125 - + odb: handle recreation of quarantine directories
126 - + odb: handle changing a repository's commondir
127 - + chdir-notify: add function to unregister listeners
128 - + odb: handle initialization of sources in `odb_new()`
129 - + http-push: stop setting up `the_repository` for each reference
130 - + t/helper: stop setting up `the_repository` repeatedly
131 - + builtin/index-pack: fix deferred fsck outside repos
132 - + oidset: introduce `oidset_equal()`
133 - + odb: move logic to disable ref updates into repo
134 - + odb: refactor `odb_clear()` to `odb_free()`
135 - + odb: adopt logic to close object databases
136 - + setup: convert `set_git_dir()` to have file scope
137 - + path: move `enter_repo()` into "setup.c"
138 - + Merge branch 'ps/object-source-loose' into ps/object-source-management
139 -
140 - Code refactoring around object database sources.
141 - cf. <aSAZSyUzIMvn-IvR@pks.im>
142 - source: <20251119-b4-pks-odb-creation-v1-0-2b2ed2612cb6@pks.im>
143 -
144 -
145 -* rs/config-set-multi-error-message-fix (2025-11-24) 1 commit
146 - (merged to 'next' on 2025-11-26 at 639a1e26d2)
147 - + config: fix suggestion for failed set of multi-valued option
148 -
149 - The error message given by "git config set", when the variable
150 - being updated has more than one values defined, used old style "git
151 - config" syntax with an incorrect option in its hint, both of which
152 - have been corrected.
153 - source: <c09945fe-fee2-47f6-8193-ac60d7245209@web.de>
154 -
155 -
156 -* rs/config-unset-opthelp-fix (2025-11-24) 1 commit
157 - (merged to 'next' on 2025-11-26 at 31e282f4ae)
158 - + config: fix short help of unset flags
64 +* en/replay-doc-revision-range (2025-11-28) 1 commit
65 + (merged to 'next' on 2025-11-30 at 37ba09bea2)
66 + + Documentation/git-replay.adoc: fix errors around revision range
67 +
68 + The use of "revision" (a connected set of commits) has been
69 + clarified in the "git replay" documentation.
70 + source: <pull.2012.git.1764391464952.gitgitgadget@gmail.com>
71
160 - The option help text given by "git config unset -h" described
161 - the "--all" option to "replace", not "unset", multiple variables,
162 - which has been corrected.
163 - source: <06997dce-e4d5-4889-8e70-5f44da3dc800@web.de>
72 +
73 +* pw/replay-exclude-gpgsig-fix (2025-11-26) 1 commit
74 + (merged to 'next' on 2025-11-30 at 3dda1242db)
75 + + replay: do not copy "gpgsign-sha256" header
76 + (this branch is used by ps/history and pw/replay-drop-empty.)
77 +
78 + "git replay" forgot to omit the "gpgsig-sha256" extended header
79 + from the resulting commit the same way it omits "gpgsig", which has
80 + been corrected.
81 + source: <4f04af5790353b074cf122c450c1cd3f8d1cecf3.1764167611.git.phillip.wood@dunelm.org.uk>
82 +
83 +
84 +* yc/xdiff-patience-optim (2025-11-26) 1 commit
85 + (merged to 'next' on 2025-11-30 at db62d67599)
86 + + xdiff: optimize patience diff's LCS search
87 +
88 + The way patience diff finds LCS has been optimized.
89 + source: <pull.2109.v2.git.git.1764209766305.gitgitgadget@gmail.com>
90
91 --------------------------------------------------
92 [New Topics]
93
168 -* ap/packfile-promisor-object-optim (2025-12-05) 1 commit
169 - - packfile: skip decompressing and hashing blobs in add_promisor_object()
94 +* jc/capability-leak (2025-12-06) 1 commit
95 + - connect: plug protocol capability leak
96 +
97 + Leakfix.
98 +
99 + Will merge to 'next'.
100 + source: <xmqqfr9mnbu9.fsf@gitster.g>
101 +
102 +
103 +* kh/doc-replay-updates (2025-12-07) 3 commits
104 + - doc: replay: link section using markup
105 + - doc: replay: document --contained
106 + - doc: replay: mention no output on conflicts
107 +
108 + "git replay" documentation updates.
109 +
110 + Will merge to 'next'.
111 + source: <CV_replay_conflict.101@msgid.xyz>
112 +
113 +
114 +* lo/repo-info-keys (2025-12-07) 1 commit
115 + - repo: add new flag --keys to git-repo-info
116 + (this branch uses lo/repo-struct-z.)
117 +
118 + "git repo info" learns "--keys" action to list known keys.
119 +
120 + Expecting a reroll.
121 + source: <20251204210843.79411-1-lucasseikioshiro@gmail.com>
122 +
123 +
124 +* kh/doc-pre-commit-fix (2025-12-07) 1 commit
125 + - doc: join default pre-commit paragraphs
126 +
127 + Docfix.
128 +
129 + Will merge to 'next'.
130 + source: <pre-commit_when_enabled.10a@msgid.xyz>
131 +
132 +
133 +* kh/doc-send-email-paragraph-fix (2025-12-08) 1 commit
134 + - doc: send-email: fix broken list continuation
135 +
136 + Docfix.
137 +
138 + Will merge to 'next'.
139 + source: <send-email_list_contin.112@msgid.xyz>
140 +
141 +
142 +* mh/doc-config-gui-gcwarning (2025-12-08) 1 commit
143 + - config: document 'gui.GCWarning'
144 +
145 + Docfix.
146 +
147 + Will merge to 'next'.
148 + source: <20251208190400.64920-1-matthewhughes934@gmail.com>
149 +
150 +
151 +* ps/odb-alternates-object-sources (2025-12-08) 8 commits
152 + - odb: write alternates via sources
153 + - odb: read alternates via sources
154 + - odb: drop forward declaration of `read_info_alternates()`
155 + - odb: remove mutual recursion when parsing alternates
156 + - odb: adapt `odb_add_to_alternates_file()` to call `odb_add_source()`
157 + - odb: move computation of normalized objdir into `alt_odb_usable()`
158 + - odb: resolve relative alternative paths when parsing
159 + - odb: refactor parsing of alternates to be self-contained
160 +
161 + Code refactoring around alternate object store.
162 +
163 + Comments?
164 + source: <20251208-b4-pks-odb-alternates-via-source-v1-0-e7ebb8b18c03@pks.im>
165 +
166 +
167 +* ps/repack-avoid-noop-midx-rewrite (2025-12-08) 2 commits
168 + - builtin/repack: don't regenerate MIDX unless needed
169 + - midx: fix `BUG()` when getting preferred pack without a reverse index
170 +
171 + Even when there is no changes in the packfile and no need to
172 + recompute bitmaps, "git repack" recomputed and updated the MIDX
173 + file, which has been corrected.
174 +
175 + Comments?
176 + source: <20251208-pks-skip-noop-rewrite-v1-0-430d52dba9f0@pks.im>
177 +
178 +
179 +* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
180 + - doc: fix `update-ref` `symref-create` formatting
181 +
182 + Doc mark-up fix.
183 +
184 + Will merget to 'next'.
185 + source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>
186 +
187 +--------------------------------------------------
188 +[Cooking]
189 +
190 +* ap/packfile-promisor-object-optim (2025-12-08) 2 commits
191 + - packfile: skip hash checks in add_promisor_object()
192 + - object: apply skip_hash and discard_tree optimizations to unknown blobs too
193
194 The code path that enumerates promisor objects have been optimized
195 to skip pointlessly parsing blob objects.
196
197 Comments?
175 - source: <20251206002014.2066644-1-aplattner@nvidia.com>
198 + source: <20251209014900.402637-1-aplattner@nvidia.com>
199
200
201 * je/doc-pull (2025-12-03) 1 commit
@@ -212,6 +235,7 @@ Release tarballs are available at:
235 + repo: add -z as an alias for --format=nul to git-repo-structure
236 + repo: use [--format=... | -z] instead of [-z] in git-repo-info synopsis
237 + repo: remove blank line from Documentation/git-repo.adoc
238 + (this branch is used by lo/repo-info-keys.)
239
240 "git repo struct" learned to take "-z" as a synonym to "--format=nul".
241
@@ -266,16 +290,17 @@ Release tarballs are available at:
290
291
292 * rs/ban-mktemp (2025-12-06) 5 commits
269 - - compat: remove gitmkdtemp()
270 - - banned.h: ban mktemp(3)
271 - - compat: remove mingw_mktemp()
272 - - compat: use git_mkdtemp()
273 - - wrapper: add git_mkdtemp()
293 + (merged to 'next' on 2025-12-09 at d459e9d8dd)
294 + + compat: remove gitmkdtemp()
295 + + banned.h: ban mktemp(3)
296 + + compat: remove mingw_mktemp()
297 + + compat: use git_mkdtemp()
298 + + wrapper: add git_mkdtemp()
299
300 Rewrite the only use of "mktemp()" that is subject to TOCTOU race
301 and Stop using the insecure "mktemp()" function.
302
278 - Will merge to 'next'.
303 + Will merge to 'master'.
304 source: <64e62623-b911-4ddd-a481-05191853c0a6@web.de>
305
306
@@ -300,7 +325,8 @@ Release tarballs are available at:
325
326 Further work on incremental repacking using MIDX/bitmap
327
303 - Comments?
328 + Expecting a reroll.
329 + cf. <aTd+fxpflcLuJXDn@nand.local>
330 source: <cover.1765053054.git.me@ttaylorr.com>
331
332
@@ -323,8 +349,6 @@ Release tarballs are available at:
349 Comments?
350 source: <xmqqzf7vm7b7.fsf@gitster.g>
351
326 ---------------------------------------------------
327 -[Cooking]
352
353 * tc/last-modified-active-paths-optimization (2025-11-28) 1 commit
354 (merged to 'next' on 2025-12-05 at 42c18b607f)
@@ -337,17 +361,6 @@ Release tarballs are available at:
361 source: <20251128-toon-big-endian-ci-v1-1-80da0f629c1e@iotcl.com>
362
363
340 -* en/replay-doc-revision-range (2025-11-28) 1 commit
341 - (merged to 'next' on 2025-11-30 at 37ba09bea2)
342 - + Documentation/git-replay.adoc: fix errors around revision range
343 -
344 - The use of "revision" (a connected set of commits) has been
345 - clarified in the "git replay" documentation.
346 -
347 - Will merge to 'master'.
348 - source: <pull.2012.git.1764391464952.gitgitgadget@gmail.com>
349 -
350 -
364 * jk/parse-int (2025-11-30) 5 commits
365 - fsck: use parse_unsigned_from_buf() for parsing timestamp
366 - cache-tree: use parse_int_from_buf()
@@ -399,19 +412,6 @@ Release tarballs are available at:
412 source: <aa28974b-ec73-4562-bfc8-4745ad58b55a@web.de>
413
414
402 -* pw/replay-exclude-gpgsig-fix (2025-11-26) 1 commit
403 - (merged to 'next' on 2025-11-30 at 3dda1242db)
404 - + replay: do not copy "gpgsign-sha256" header
405 - (this branch is used by ps/history and pw/replay-drop-empty.)
406 -
407 - "git replay" forgot to omit the "gpgsig-sha256" extended header
408 - from the resulting commit the same way it omits "gpgsig", which has
409 - been corrected.
410 -
411 - Will merge to 'master'.
412 - source: <4f04af5790353b074cf122c450c1cd3f8d1cecf3.1764167611.git.phillip.wood@dunelm.org.uk>
413 -
414 -
415 * tc/last-modified-options-cleanup (2025-11-26) 4 commits
416 - fixup! last-modified: document option --max-depth
417 - last-modified: document how depth is handled better
@@ -425,28 +425,6 @@ Release tarballs are available at:
425 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>
426
427
428 -* yc/xdiff-patience-optim (2025-11-26) 1 commit
429 - (merged to 'next' on 2025-11-30 at db62d67599)
430 - + xdiff: optimize patience diff's LCS search
431 -
432 - The way patience diff finds LCS has been optimized.
433 -
434 - Will merge to 'master'.
435 - source: <pull.2109.v2.git.git.1764209766305.gitgitgadget@gmail.com>
436 -
437 -
438 -* bc/zsh-testsuite (2025-11-27) 2 commits
439 - (merged to 'next' on 2025-11-30 at b4a3081f6f)
440 - + t5564: fix test hang under zsh's sh mode
441 - + t0614: use numerical comparison with test_line_count
442 -
443 - A few tests have been updated to work under the shell compatible
444 - mode of zsh.
445 -
446 - Will merge to 'master'.
447 - source: <20251128012107.101431-1-sandals@crustytoothpaste.net>
448 -
449 -
428 * ds/doc-scalar-config (2025-12-01) 5 commits
429 - scalar: document config settings
430 - scalar: alphabetize and simplify config
@@ -464,7 +442,7 @@ Release tarballs are available at:
442 * pw/replay-drop-empty (2025-11-27) 2 commits
443 - replay: drop commits that become empty
444 - Merge branch 'ps/history' into pw/replay-drop-empty
467 - (this branch uses ps/history and pw/replay-exclude-gpgsig-fix.)
445 + (this branch uses ps/history.)
446
447 "git replay" is taught to drop commits that become empty (not the
448 ones that are empty in the original).
@@ -485,11 +463,12 @@ Release tarballs are available at:
463
464
465 * gf/win32-pthread-cond-init (2025-11-20) 1 commit
488 - - win32: pthread_cond_init should return a value
466 + (merged to 'next' on 2025-12-09 at 202516d20c)
467 + + win32: pthread_cond_init should return a value
468
469 Emulation code clean-up.
470
492 - Will merge to 'next'.
471 + Will merge to 'master'.
472 source: <pull.2103.v3.git.git.1763675016637.gitgitgadget@gmail.com>
473
474
@@ -522,31 +501,32 @@ Release tarballs are available at:
501
502
503 * ps/object-read-stream (2025-11-23) 20 commits
525 - - streaming: drop redundant type and size pointers
526 - - streaming: move into object database subsystem
527 - - streaming: refactor interface to be object-database-centric
528 - - streaming: move logic to read packed objects streams into backend
529 - - streaming: move logic to read loose objects streams into backend
530 - - streaming: make the `odb_read_stream` definition public
531 - - streaming: get rid of `the_repository`
532 - - streaming: rely on object sources to create object stream
533 - - packfile: introduce function to read object info from a store
534 - - streaming: move zlib stream into backends
535 - - streaming: create structure for filtered object streams
536 - - streaming: create structure for packed object streams
537 - - streaming: create structure for loose object streams
538 - - streaming: create structure for in-core object streams
539 - - streaming: allocate stream inside the backend-specific logic
540 - - streaming: explicitly pass packfile info when streaming a packed object
541 - - streaming: propagate final object type via the stream
542 - - streaming: drop the `open()` callback function
543 - - streaming: rename `git_istream` into `odb_read_stream`
544 - - Merge branch 'ps/object-source-loose' into ps/object-read-stream
504 + (merged to 'next' on 2025-12-09 at c8d645f8ea)
505 + + streaming: drop redundant type and size pointers
506 + + streaming: move into object database subsystem
507 + + streaming: refactor interface to be object-database-centric
508 + + streaming: move logic to read packed objects streams into backend
509 + + streaming: move logic to read loose objects streams into backend
510 + + streaming: make the `odb_read_stream` definition public
511 + + streaming: get rid of `the_repository`
512 + + streaming: rely on object sources to create object stream
513 + + packfile: introduce function to read object info from a store
514 + + streaming: move zlib stream into backends
515 + + streaming: create structure for filtered object streams
516 + + streaming: create structure for packed object streams
517 + + streaming: create structure for loose object streams
518 + + streaming: create structure for in-core object streams
519 + + streaming: allocate stream inside the backend-specific logic
520 + + streaming: explicitly pass packfile info when streaming a packed object
521 + + streaming: propagate final object type via the stream
522 + + streaming: drop the `open()` callback function
523 + + streaming: rename `git_istream` into `odb_read_stream`
524 + + Merge branch 'ps/object-source-loose' into ps/object-read-stream
525
526 The "git_istream" abstraction has been revamped to make it easier
527 to interface with pluggable object database design.
528
549 - Will merge to 'next'.
529 + Will merge to 'master'.
530 source: <20251123-b4-pks-odb-read-stream-v3-0-1a129182822b@pks.im>
531
532
@@ -670,7 +650,7 @@ Release tarballs are available at:
650 - replay: extract logic to pick commits
651 - wt-status: provide function to expose status for trees
652 - Merge branch 'pw/replay-exclude-gpgsig-fix' into ps/history
673 - (this branch is used by pw/replay-drop-empty; uses pw/replay-exclude-gpgsig-fix.)
653 + (this branch is used by pw/replay-drop-empty.)
654
655 "git history" history rewriting UI.
656