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