What's cooking (2026/05 #08)
Junio C Hamano committed
May 27, 2026 at 16:01 UTC
00f39f365964cc1848128bc045c4aa9054ffb3aa
1 file changed
+227
-307
whats-cooking.txt
+227
-307
@@ -1,10 +1,10 @@
1
To: git@vger.kernel.org
2
-Subject: What's cooking in git.git (May 2026, #07)
3
-X-master-at: 56a4f3c3a221adf1df9b39da69b8a6890f803157
4
-X-next-at: 208068f2d8ae29d7edaa245d9975b1b22ec65738
2
+Subject: What's cooking in git.git (May 2026, #08)
3
+X-master-at: c69baaf57ba26cf117c2b6793802877f19738b0d
4
+X-next-at: 2f8565e1d14d2de4cfbc9da0132131bf0d0dc087
5
Bcc: lwn@lwn.net, gitster@pobox.com
6
7
-What's cooking in git.git (May 2026, #07)
7
+What's cooking in git.git (May 2026, #08)
8
-----------------------------------------
9
10
Here are the topics that have been cooking in my tree. Commits
@@ -48,69 +48,241 @@ Release tarballs are available at:
48
--------------------------------------------------
49
[Graduated to 'master']
50
51
-* ag/sequencer-remove-unused-struct-member (2026-05-11) 1 commit
52
- (merged to 'next' on 2026-05-17 at 8553437ae1)
53
- + sequencer: remove todo_add_branch_context.commit
51
+* ds/fetch-negotiation-options (2026-05-19) 8 commits
52
+ (merged to 'next' on 2026-05-21 at ff57fd9c97)
53
+ + send-pack: pass negotiation config in push
54
+ + remote: add remote.*.negotiationInclude config
55
+ + fetch: add --negotiation-include option for negotiation
56
+ + negotiator: add have_sent() interface
57
+ + remote: add remote.*.negotiationRestrict config
58
+ + transport: rename negotiation_tips
59
+ + fetch: add --negotiation-restrict option
60
+ + t5516: fix test order flakiness
61
+
62
+ The negotiation tip options in "git fetch" have been reworked to
63
+ allow requiring certain refs to be sent as "have" lines, and to
64
+ restrict negotiation to a specific set of refs.
65
+ source: <pull.2085.v6.git.1779207896.gitgitgadget@gmail.com>
66
+
67
+
68
+* en/batch-prefetch (2026-05-14) 4 commits
69
+ (merged to 'next' on 2026-05-20 at 722acf81c8)
70
+ + grep: prefetch necessary blobs
71
+ + builtin/log: prefetch necessary blobs for `git cherry`
72
+ + patch-ids.h: add missing trailing parenthesis in documentation comment
73
+ + promisor-remote: document caller filtering contract
74
+
75
+ In a lazy clone, "git cherry" and "git grep" often fetch necessary
76
+ blob objects one by one from promisor remotes. It has been corrected
77
+ to collect necessary object names and fetch them in bulk to gain
78
+ reasonable performance.
79
+ cf. <0da4f159-8d4b-49e2-93c1-25aa0bf69371@gmail.com>
80
+ source: <pull.2089.v3.git.1778775928.gitgitgadget@gmail.com>
81
+
82
+
83
+* jk/sq-dequote-cleanup (2026-05-18) 3 commits
84
+ (merged to 'next' on 2026-05-21 at fbedf2daea)
85
+ + quote: simplify internals of dequoting
86
+ + quote: drop sq_dequote_to_argv()
87
+ + quote.h: bump strvec forward declaration to the top
88
+
89
+ Code simplification.
90
+ source: <20260519011837.GA1615637@coredump.intra.peff.net>
91
+
92
+
93
+* jt/odb-transaction-write (2026-05-14) 7 commits
94
+ (merged to 'next' on 2026-05-21 at 61108abe4d)
95
+ + odb/transaction: make `write_object_stream()` pluggable
96
+ + object-file: generalize packfile writes to use odb_write_stream
97
+ + object-file: avoid fd seekback by checking object size upfront
98
+ + object-file: remove flags from transaction packfile writes
99
+ + odb: update `struct odb_write_stream` read() callback
100
+ + odb/transaction: use pluggable `begin_transaction()`
101
+ + odb: split `struct odb_transaction` into separate header
102
+ (this branch is used by ps/odb-in-memory and ps/odb-source-loose.)
103
+
104
+ ODB transaction interface is being reworked to explicitly handle
105
+ object writes.
106
+ source: <20260514183740.1505171-1-jltobler@gmail.com>
107
+
108
+
109
+* kk/limit-list-optim (2026-05-14) 1 commit
110
+ (merged to 'next' on 2026-05-19 at f17450dd1b)
111
+ + revision: use priority queue in limit_list()
112
+
113
+ The limit_list() function that is one of the core part of the
114
+ revision traversal infrastructure has been optimized by replacing
115
+ its use of linear list with priority queue.
116
+ source: <pull.2114.git.1778777491939.gitgitgadget@gmail.com>
117
+
118
+
119
+* kk/merge-octopus-optim (2026-05-11) 1 commit
120
+ (merged to 'next' on 2026-05-20 at afe427dc66)
121
+ + merge: use repo_in_merge_bases for octopus up-to-date check
122
+
123
+ The logic to determine that branches in an octopus merge are
124
+ independent has been optimized.
125
+ cf. <c5b333f1-0db6-4aec-a369-6503cb924e7f@gmail.com>
126
+ source: <pull.2110.git.1778566286543.gitgitgadget@gmail.com>
127
+
128
+
129
+* kn/refs-fsck-skip-lock-files (2026-05-17) 1 commit
130
+ (merged to 'next' on 2026-05-21 at 91e30e3543)
131
+ + refs/files: skip lock files during consistency checks
132
+
133
+ The consistency checks for the files reference backend have been updated
134
+ to skip lock files earlier, avoiding unnecessary parsing of
135
+ intermediate files.
136
+ source: <20260517-refs-fsck-skip-lock-files-v3-1-b24dfd673c7e@gmail.com>
137
+
138
+
139
+* pb/doc-diff-format-updates (2026-05-15) 3 commits
140
+ (merged to 'next' on 2026-05-20 at fe8d31e9f9)
141
+ + diff-format.adoc: mode and hash are 0* for unmerged paths from index only
142
+ + diff-format.adoc: 'git diff-files' prints two lines for unmerged files
143
+ + diff-format.adoc: remove mention of diff-tree specific output
144
+
145
+ Doc updates.
146
+ source: <pull.2304.git.git.1778860091.gitgitgadget@gmail.com>
147
+
148
+
149
+* ps/odb-in-memory (2026-04-10) 18 commits
150
+ (merged to 'next' on 2026-05-21 at c8709aa17f)
151
+ + t/unit-tests: add tests for the in-memory object source
152
+ + odb: generic in-memory source
153
+ + odb/source-inmemory: stub out remaining functions
154
+ + odb/source-inmemory: implement `freshen_object()` callback
155
+ + odb/source-inmemory: implement `count_objects()` callback
156
+ + odb/source-inmemory: implement `find_abbrev_len()` callback
157
+ + odb/source-inmemory: implement `for_each_object()` callback
158
+ + odb/source-inmemory: convert to use oidtree
159
+ + oidtree: add ability to store data
160
+ + cbtree: allow using arbitrary wrapper structures for nodes
161
+ + odb/source-inmemory: implement `write_object_stream()` callback
162
+ + odb/source-inmemory: implement `write_object()` callback
163
+ + odb/source-inmemory: implement `read_object_stream()` callback
164
+ + odb/source-inmemory: implement `read_object_info()` callback
165
+ + odb: fix unnecessary call to `find_cached_object()`
166
+ + odb/source-inmemory: implement `free()` callback
167
+ + odb: introduce "in-memory" source
168
+ + Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
169
+ (this branch is used by ps/odb-source-loose; uses jt/odb-transaction-write.)
170
55
- Code clean-up.
56
- cf. <agLKVn6RF4UBYd_8@pks.im>
57
- source: <pull.2111.git.1778502113485.gitgitgadget@gmail.com>
171
+ Add a new odb "in-memory" source that is meant to only hold
172
+ tentative objects (like the virtual blob object that represents the
173
+ working tree file used by "git blame").
174
+ source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>
175
176
60
-* dk/doc-exclude-is-shared-per-repo (2026-05-12) 1 commit
61
- (merged to 'next' on 2026-05-17 at ddc761aec6)
62
- + ignore: note info/exclude lives in GIT_COMMON_DIR, not GIT_DIR
177
+* ps/setup-wo-the-repository (2026-05-19) 18 commits
178
+ (merged to 'next' on 2026-05-21 at d8fb5a7b3e)
179
+ + setup: stop using `the_repository` in `init_db()`
180
+ + setup: stop using `the_repository` in `create_reference_database()`
181
+ + setup: stop using `the_repository` in `initialize_repository_version()`
182
+ + setup: stop using `the_repository` in `check_repository_format()`
183
+ + setup: stop using `the_repository` in `upgrade_repository_format()`
184
+ + setup: stop using `the_repository` in `setup_git_directory()`
185
+ + setup: stop using `the_repository` in `setup_git_directory_gently()`
186
+ + setup: stop using `the_repository` in `setup_git_env()`
187
+ + setup: stop using `the_repository` in `set_git_work_tree()`
188
+ + setup: stop using `the_repository` in `setup_work_tree()`
189
+ + setup: stop using `the_repository` in `enter_repo()`
190
+ + setup: stop using `the_repository` in `verify_non_filename()`
191
+ + setup: stop using `the_repository` in `verify_filename()`
192
+ + setup: stop using `the_repository` in `path_inside_repo()`
193
+ + setup: stop using `the_repository` in `prefix_path()`
194
+ + setup: stop using `the_repository` in `is_inside_work_tree()`
195
+ + setup: stop using `the_repository` in `is_inside_git_dir()`
196
+ + setup: replace use of `the_repository` in static functions
197
+ (this branch is used by ps/setup-centralize-odb-creation.)
198
64
- Document the fact that .git/info/exclude is shared across worktrees
65
- linked to the same repository.
66
- cf. <bea48414-217b-4860-9279-fe94e3687c28@gmail.com>
67
- source: <ec97ad3f054e90b675f099a36a81a23bb4b2a0ed.1778620784.git.ben.knoble+github@gmail.com>
199
+ Many uses of the_repository has been updated to use a more
200
+ appropriate struct repository instance in setup.c codepath.
201
+ source: <20260519-pks-setup-wo-the-repository-v3-0-a00d8ea8b07f@pks.im>
202
203
70
-* jk/dumb-http-alternate-fix (2026-05-12) 1 commit
71
- (merged to 'next' on 2026-05-17 at c1a51214fb)
72
- + http: handle absolute-path alternates from server root
204
+* ps/t3903-cover-stash-include-untracked (2026-05-16) 1 commit
205
+ (merged to 'next' on 2026-05-20 at f1e7ac1cbd)
206
+ + stash: add coverage for show --include-untracked
207
74
- The HTTP walker misinterpreted the alternates file that gives an
75
- absolute path when the server URL does not have the final slash
76
- (i.e., "https://example.com" not "https://example.com/").
77
- source: <20260512162619.GA69813@coredump.intra.peff.net>
208
+ Test coverage has been added to "git stash --include-untracked".
209
+ source: <20260516183347.4323-2-pushkarkumarsingh1970@gmail.com>
210
211
80
-* jk/pretty-no-strbuf-presizing (2026-05-12) 1 commit
81
- (merged to 'next' on 2026-05-17 at ee684c614f)
82
- + pretty: drop strbuf pre-sizing from add_rfc2047()
212
+* rs/trailer-fold-optim (2026-05-15) 1 commit
213
+ (merged to 'next' on 2026-05-20 at 38c9fb15c2)
214
+ + trailer: change strbuf in-place in unfold_value()
215
84
- Remove ineffective strbuf presizing that would have computed an
85
- allocation that would not have fit in the available memory anyway,
86
- or too small due to integer wraparound to cause immediate automatic
87
- growing.
88
- source: <20260512162022.GA69669@coredump.intra.peff.net>
216
+ Code simplification.
217
+ source: <816be07e-2cd6-48fe-ae93-57fa0f2543ed@web.de>
218
219
91
-* kk/paint-down-to-common-optim (2026-05-11) 2 commits
92
- (merged to 'next' on 2026-05-17 at 2e39c767e5)
93
- + commit-reach: early exit paint_down_to_common for single merge-base
94
- + commit-reach: introduce merge_base_flags enum
220
+* rs/use-builtin-add-overflow-explicitly-on-clang (2026-05-18) 2 commits
221
+ (merged to 'next' on 2026-05-21 at c223b71079)
222
+ + use __builtin_add_overflow() in st_add() with Clang
223
+ + strbuf: use st_add3() in strbuf_grow()
224
96
- "git merge-base" optimization.
97
- source: <pull.2109.v4.git.1778504352.gitgitgadget@gmail.com>
225
+ Micro optimization of codepaths that compute allocation sizes carefully.
226
+ source: <20260518202502.25682-1-l.s.r@web.de>
227
228
100
-* mm/diff-U-takes-no-negative-values (2026-05-12) 4 commits
101
- (merged to 'next' on 2026-05-17 at d81439a049)
102
- + parse-options: clarify what "negated" means for PARSE_OPT_NONEG
103
- + xdiff: guard against negative context lengths
104
- + diff: reject negative values for -U/--unified
105
- + diff: reject negative values for --inter-hunk-context
229
+* tb/incremental-midx-part-3.3 (2026-05-19) 16 commits
230
+ (merged to 'next' on 2026-05-21 at 6c11c1a739)
231
+ + repack: allow `--write-midx=incremental` without `--geometric`
232
+ + repack: introduce `--write-midx=incremental`
233
+ + repack: implement incremental MIDX repacking
234
+ + packfile: ensure `close_pack_revindex()` frees in-memory revindex
235
+ + builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
236
+ + repack-geometry: prepare for incremental MIDX repacking
237
+ + repack-midx: extract `repack_fill_midx_stdin_packs()`
238
+ + repack-midx: factor out `repack_prepare_midx_command()`
239
+ + midx: expose `midx_layer_contains_pack()`
240
+ + repack: track the ODB source via existing_packs
241
+ + midx: support custom `--base` for incremental MIDX writes
242
+ + midx: introduce `--no-write-chain-file` for incremental MIDX writes
243
+ + midx: use `strvec` for `keep_hashes`
244
+ + midx: build `keep_hashes` array in order
245
+ + midx: use `strset` for retained MIDX files
246
+ + midx-write: handle noop writes when converting incremental chains
247
+
248
+ The repacking code has been refactored and compaction of MIDX layers
249
+ have been implemented, and incremental strategy that does not require
250
+ all-into-one repacking has been introduced.
251
+ source: <cover.1779206239.git.me@ttaylorr.com>
252
107
- The command line parser for "git diff" learned a few options take
108
- only non-negative integers.
109
- source: <pull.2105.v2.git.1778609423.gitgitgadget@gmail.com>
253
+
254
+* tb/pseudo-merge-bugfixes (2026-05-11) 9 commits
255
+ (merged to 'next' on 2026-05-19 at ecee155d5c)
256
+ + pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
257
+ + Documentation: fix broken `sampleRate` in gitpacking(7)
258
+ + pack-bitmap: reject pseudo-merge "sampleRate" of 0
259
+ + pack-bitmap: parse commits in `find_pseudo_merge_group_for_ref()`
260
+ + pack-bitmap: fix pseudo-merge lookup for shared commits
261
+ + pack-bitmap: fix inverted binary search in `pseudo_merge_at()`
262
+ + pack-bitmap-write: sort pseudo-merge commit lookup table in pack order
263
+ + t5333: demonstrate various pseudo-merge bugs
264
+ + t/helper: add 'test-tool bitmap write' subcommand
265
+ (this branch is used by tb/bitmap-build-performance.)
266
+
267
+ Fixes many bugs in pseudo-merge code.
268
+ source: <cover.1778546804.git.me@ttaylorr.com>
269
270
--------------------------------------------------
271
[New Topics]
272
273
+* za/completion-hide-dotfiles (2026-05-26) 1 commit
274
+ - completion: hide dotfiles for selected path completion
275
+
276
+ The path completion for commands like `git rm` and `git mv`, is being
277
+ updated to hide dotfiles by default, unless the user explicitly starts
278
+ the path with a dot, matching standard shell-completion behavior.
279
+
280
+ Will merge to 'next'?
281
+ source: <pull.2311.v2.git.git.1779808987825.gitgitgadget@gmail.com>
282
+
283
+--------------------------------------------------
284
+[Cooking]
285
+
286
* kk/fetch-store-ref-optimization (2026-05-24) 1 commit
287
- fetch: pass transport to post-fetch connectivity check
288
@@ -122,7 +294,7 @@ Release tarballs are available at:
294
source: <pull.2123.git.1779625693328.gitgitgadget@gmail.com>
295
296
125
-* ds/restore-sparse-index (2026-05-24) 2 commits
297
+* ds/restore-sparse-index (2026-05-26) 2 commits
298
- restore: avoid sparse index expansion
299
- t1092: test 'git restore' with sparse index
300
@@ -130,8 +302,8 @@ Release tarballs are available at:
302
the sparse index when operating on paths within the sparse checkout
303
definition, by handling sparse directory entries at the tree level.
304
133
- Will merge to 'next'?
134
- source: <pull.2121.git.1779644412.gitgitgadget@gmail.com>
305
+ Will merge to 'next'.
306
+ source: <pull.2121.v2.git.1779827195.gitgitgadget@gmail.com>
307
308
309
* kk/commit-reach-optim (2026-05-25) 3 commits
@@ -149,14 +321,15 @@ Release tarballs are available at:
321
322
323
* ar/receive-pack-worktree-env (2026-05-25) 1 commit
152
- - receive-pack: fix updateInstead with core.worktree
324
+ (merged to 'next' on 2026-05-27 at 9c246d1969)
325
+ + receive-pack: fix updateInstead with core.worktree
326
327
The GIT_WORK_TREE variable prepared to invoke the push-to-checkout
328
hook was leaking into the environment even when there was no hook
329
used and broke the default push-to-deploy (i.e., let "git checkout"
330
update the working tree only when the working tree is clean).
331
159
- Will merge to 'next'.
332
+ Will merge to 'master'.
333
source: <20260525162311.66240-2-hi@alyssa.is>
334
335
@@ -191,8 +364,6 @@ Release tarballs are available at:
364
Comments?
365
source: <cover.1779792311.git.erik@cervined.in>
366
194
---------------------------------------------------
195
-[Cooking]
367
368
* gh/jump-auto-mode (2026-05-21) 1 commit
369
- git-jump: pick a mode automatically when invoked without arguments
@@ -234,7 +405,6 @@ Release tarballs are available at:
405
- odb/source-loose: store pointer to "files" instead of generic source
406
- odb/source-loose: move loose source into "odb/" subsystem
407
- Merge branch 'ps/odb-in-memory' into ps/odb-source-loose
237
- (this branch uses jt/odb-transaction-write and ps/odb-in-memory.)
408
409
The loose object source has been refactored into a proper `struct
410
odb_source`.
@@ -253,7 +423,6 @@ Release tarballs are available at:
423
- setup: drop `setup_git_env()`
424
- t0001: plug test gaps for git-init(1) with GIT_OBJECT_DIRECTORY
425
- Merge branch 'ps/setup-wo-the-repository' into ps/setup-centralize-odb-creation
256
- (this branch uses ps/setup-wo-the-repository.)
426
427
The setup logic to discover and configure repositories has been
428
refactored, and the initialization of the object database has been
@@ -328,18 +497,6 @@ Release tarballs are available at:
497
source: <20260522044352.GA861761@coredump.intra.peff.net>
498
499
331
-* jk/sq-dequote-cleanup (2026-05-18) 3 commits
332
- (merged to 'next' on 2026-05-21 at fbedf2daea)
333
- + quote: simplify internals of dequoting
334
- + quote: drop sq_dequote_to_argv()
335
- + quote.h: bump strvec forward declaration to the top
336
-
337
- Code simplification.
338
-
339
- Will merge to 'master'.
340
- source: <20260519011837.GA1615637@coredump.intra.peff.net>
341
-
342
-
500
* aj/stash-patch-optimize-temporary-index (2026-05-22) 1 commit
501
- stash: reuse cached index entries in --patch temporary index
502
@@ -361,13 +518,14 @@ Release tarballs are available at:
518
- pack-bitmap: check subtree bits before recursing
519
- pack-bitmap: pass object position to `fill_bitmap_tree()`
520
- Merge branch 'tb/pseudo-merge-bugfixes' into tb/bitmap-build-performance
364
- (this branch uses tb/pseudo-merge-bugfixes.)
521
522
Reachability bitmap generation has been significantly optimized. By
523
reordering tree traversal, caching object positions, and refining how
524
pseudo-merge bitmaps are constructed, the performance of "git repack
525
--write-midx-bitmaps" is improved, especially for large repositories
526
and when using pseudo-merges.
527
+
528
+ Comments?
529
source: <cover.1779207127.git.me@ttaylorr.com>
530
531
@@ -382,18 +540,6 @@ Release tarballs are available at:
540
source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>
541
542
385
-* kk/merge-octopus-optim (2026-05-11) 1 commit
386
- (merged to 'next' on 2026-05-20 at afe427dc66)
387
- + merge: use repo_in_merge_bases for octopus up-to-date check
388
-
389
- The logic to determine that branches in an octopus merge are
390
- independent has been optimized.
391
-
392
- Will merge to 'master'.
393
- cf. <c5b333f1-0db6-4aec-a369-6503cb924e7f@gmail.com>
394
- source: <pull.2110.git.1778566286543.gitgitgadget@gmail.com>
395
-
396
-
543
* rs/strbuf-add-uint (2026-05-12) 4 commits
544
- ls-tree: use strbuf_add_uint()
545
- ls-files: use strbuf_add_uint()
@@ -441,18 +587,6 @@ Release tarballs are available at:
587
source: <183aa0fd-d455-4ec9-9c42-d511fac8b3e4@web.de>
588
589
444
-* kk/limit-list-optim (2026-05-14) 1 commit
445
- (merged to 'next' on 2026-05-19 at f17450dd1b)
446
- + revision: use priority queue in limit_list()
447
-
448
- The limit_list() function that is one of the core part of the
449
- revision traversal infrastructure has been optimized by replacing
450
- its use of linear list with priority queue.
451
-
452
- Will merge to 'master'.
453
- source: <pull.2114.git.1778777491939.gitgitgadget@gmail.com>
454
-
455
-
590
* ed/check-connected-close-err-fd (2026-05-16) 1 commit
591
(merged to 'next' on 2026-05-22 at 00d592399e)
592
+ Merge branch 'ed/check-connected-close-err-fd-2.53' into ed/check-connected-close-err-fd
@@ -486,49 +620,6 @@ Release tarballs are available at:
620
source: <pull.2116.v3.git.1778947182.gitgitgadget@gmail.com>
621
622
489
-* pb/doc-diff-format-updates (2026-05-15) 3 commits
490
- (merged to 'next' on 2026-05-20 at fe8d31e9f9)
491
- + diff-format.adoc: mode and hash are 0* for unmerged paths from index only
492
- + diff-format.adoc: 'git diff-files' prints two lines for unmerged files
493
- + diff-format.adoc: remove mention of diff-tree specific output
494
-
495
- Doc updates.
496
-
497
- Will merge to 'master'.
498
- source: <pull.2304.git.git.1778860091.gitgitgadget@gmail.com>
499
-
500
-
501
-* ps/t3903-cover-stash-include-untracked (2026-05-16) 1 commit
502
- (merged to 'next' on 2026-05-20 at f1e7ac1cbd)
503
- + stash: add coverage for show --include-untracked
504
-
505
- Test coverage has been added to "git stash --include-untracked".
506
-
507
- Will merge to 'master'.
508
- source: <20260516183347.4323-2-pushkarkumarsingh1970@gmail.com>
509
-
510
-
511
-* rs/trailer-fold-optim (2026-05-15) 1 commit
512
- (merged to 'next' on 2026-05-20 at 38c9fb15c2)
513
- + trailer: change strbuf in-place in unfold_value()
514
-
515
- Code simplification.
516
-
517
- Will merge to 'master'.
518
- source: <816be07e-2cd6-48fe-ae93-57fa0f2543ed@web.de>
519
-
520
-
521
-* rs/use-builtin-add-overflow-explicitly-on-clang (2026-05-18) 2 commits
522
- (merged to 'next' on 2026-05-21 at c223b71079)
523
- + use __builtin_add_overflow() in st_add() with Clang
524
- + strbuf: use st_add3() in strbuf_grow()
525
-
526
- Micro optimization of codepaths that compute allocation sizes carefully.
527
-
528
- Will merge to 'master'.
529
- source: <20260518202502.25682-1-l.s.r@web.de>
530
-
531
-
623
* tc/generate-configlist-fix-for-older-ninja (2026-05-15) 1 commit
624
(merged to 'next' on 2026-05-22 at 8322bfb8f2)
625
+ generate-configlist: collapse depfile for older Ninja
@@ -566,18 +657,6 @@ Release tarballs are available at:
657
source: <pull.2117.v2.git.1779704908.gitgitgadget@gmail.com>
658
659
569
-* kn/refs-fsck-skip-lock-files (2026-05-17) 1 commit
570
- (merged to 'next' on 2026-05-21 at 91e30e3543)
571
- + refs/files: skip lock files during consistency checks
572
-
573
- The consistency checks for the files reference backend have been updated
574
- to skip lock files earlier, avoiding unnecessary parsing of
575
- intermediate files.
576
-
577
- Will merge to 'master'.
578
- source: <20260517-refs-fsck-skip-lock-files-v3-1-b24dfd673c7e@gmail.com>
579
-
580
-
660
* jt/config-lock-timeout (2026-05-17) 1 commit
661
- config: retry acquiring config.lock, configurable via core.configLockTimeout
662
@@ -739,91 +818,6 @@ Release tarballs are available at:
818
source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>
819
820
742
-* tb/pseudo-merge-bugfixes (2026-05-11) 9 commits
743
- (merged to 'next' on 2026-05-19 at ecee155d5c)
744
- + pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
745
- + Documentation: fix broken `sampleRate` in gitpacking(7)
746
- + pack-bitmap: reject pseudo-merge "sampleRate" of 0
747
- + pack-bitmap: parse commits in `find_pseudo_merge_group_for_ref()`
748
- + pack-bitmap: fix pseudo-merge lookup for shared commits
749
- + pack-bitmap: fix inverted binary search in `pseudo_merge_at()`
750
- + pack-bitmap-write: sort pseudo-merge commit lookup table in pack order
751
- + t5333: demonstrate various pseudo-merge bugs
752
- + t/helper: add 'test-tool bitmap write' subcommand
753
- (this branch is used by tb/bitmap-build-performance.)
754
-
755
- Fixes many bugs in pseudo-merge code.
756
-
757
- Will merge to 'master'.
758
- source: <cover.1778546804.git.me@ttaylorr.com>
759
-
760
-
761
-* ds/fetch-negotiation-options (2026-05-19) 8 commits
762
- (merged to 'next' on 2026-05-21 at ff57fd9c97)
763
- + send-pack: pass negotiation config in push
764
- + remote: add remote.*.negotiationInclude config
765
- + fetch: add --negotiation-include option for negotiation
766
- + negotiator: add have_sent() interface
767
- + remote: add remote.*.negotiationRestrict config
768
- + transport: rename negotiation_tips
769
- + fetch: add --negotiation-restrict option
770
- + t5516: fix test order flakiness
771
-
772
- The negotiation tip options in "git fetch" have been reworked to
773
- allow requiring certain refs to be sent as "have" lines, and to
774
- restrict negotiation to a specific set of refs.
775
-
776
- Will merge to 'master'.
777
- source: <pull.2085.v6.git.1779207896.gitgitgadget@gmail.com>
778
-
779
-
780
-* en/batch-prefetch (2026-05-14) 4 commits
781
- (merged to 'next' on 2026-05-20 at 722acf81c8)
782
- + grep: prefetch necessary blobs
783
- + builtin/log: prefetch necessary blobs for `git cherry`
784
- + patch-ids.h: add missing trailing parenthesis in documentation comment
785
- + promisor-remote: document caller filtering contract
786
-
787
- In a lazy clone, "git cherry" and "git grep" often fetch necessary
788
- blob objects one by one from promisor remotes. It has been corrected
789
- to collect necessary object names and fetch them in bulk to gain
790
- reasonable performance.
791
-
792
- Will merge to 'master'.
793
- cf. <0da4f159-8d4b-49e2-93c1-25aa0bf69371@gmail.com>
794
- source: <pull.2089.v3.git.1778775928.gitgitgadget@gmail.com>
795
-
796
-
797
-* ps/odb-in-memory (2026-04-10) 18 commits
798
- (merged to 'next' on 2026-05-21 at c8709aa17f)
799
- + t/unit-tests: add tests for the in-memory object source
800
- + odb: generic in-memory source
801
- + odb/source-inmemory: stub out remaining functions
802
- + odb/source-inmemory: implement `freshen_object()` callback
803
- + odb/source-inmemory: implement `count_objects()` callback
804
- + odb/source-inmemory: implement `find_abbrev_len()` callback
805
- + odb/source-inmemory: implement `for_each_object()` callback
806
- + odb/source-inmemory: convert to use oidtree
807
- + oidtree: add ability to store data
808
- + cbtree: allow using arbitrary wrapper structures for nodes
809
- + odb/source-inmemory: implement `write_object_stream()` callback
810
- + odb/source-inmemory: implement `write_object()` callback
811
- + odb/source-inmemory: implement `read_object_stream()` callback
812
- + odb/source-inmemory: implement `read_object_info()` callback
813
- + odb: fix unnecessary call to `find_cached_object()`
814
- + odb/source-inmemory: implement `free()` callback
815
- + odb: introduce "in-memory" source
816
- + Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
817
- (this branch is used by ps/odb-source-loose; uses jt/odb-transaction-write.)
818
-
819
- Add a new odb "in-memory" source that is meant to only hold
820
- tentative objects (like the virtual blob object that represents the
821
- working tree file used by "git blame").
822
-
823
- Will merge to 'master'.
824
- source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>
825
-
826
-
821
* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
822
- config: add "worktree" and "worktree/i" includeIf conditions
823
- config: refactor include_by_gitdir() into include_by_path()
@@ -878,24 +872,6 @@ Release tarballs are available at:
872
source: <20260406183041.783800-1-vikingtc4@gmail.com>
873
874
881
-* jt/odb-transaction-write (2026-05-14) 7 commits
882
- (merged to 'next' on 2026-05-21 at 61108abe4d)
883
- + odb/transaction: make `write_object_stream()` pluggable
884
- + object-file: generalize packfile writes to use odb_write_stream
885
- + object-file: avoid fd seekback by checking object size upfront
886
- + object-file: remove flags from transaction packfile writes
887
- + odb: update `struct odb_write_stream` read() callback
888
- + odb/transaction: use pluggable `begin_transaction()`
889
- + odb: split `struct odb_transaction` into separate header
890
- (this branch is used by ps/odb-in-memory and ps/odb-source-loose.)
891
-
892
- ODB transaction interface is being reworked to explicitly handle
893
- object writes.
894
-
895
- Will merge to 'master'.
896
- source: <20260514183740.1505171-1-jltobler@gmail.com>
897
-
898
-
875
* sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit
876
(merged to 'next' on 2026-05-22 at 197a9bad73)
877
+ cat-file: add mailmap subcommand to --batch-command
@@ -908,33 +884,6 @@ Release tarballs are available at:
884
source: <20260416033250.4327-2-siddharthasthana31@gmail.com>
885
886
911
-* tb/incremental-midx-part-3.3 (2026-05-19) 16 commits
912
- (merged to 'next' on 2026-05-21 at 6c11c1a739)
913
- + repack: allow `--write-midx=incremental` without `--geometric`
914
- + repack: introduce `--write-midx=incremental`
915
- + repack: implement incremental MIDX repacking
916
- + packfile: ensure `close_pack_revindex()` frees in-memory revindex
917
- + builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
918
- + repack-geometry: prepare for incremental MIDX repacking
919
- + repack-midx: extract `repack_fill_midx_stdin_packs()`
920
- + repack-midx: factor out `repack_prepare_midx_command()`
921
- + midx: expose `midx_layer_contains_pack()`
922
- + repack: track the ODB source via existing_packs
923
- + midx: support custom `--base` for incremental MIDX writes
924
- + midx: introduce `--no-write-chain-file` for incremental MIDX writes
925
- + midx: use `strvec` for `keep_hashes`
926
- + midx: build `keep_hashes` array in order
927
- + midx: use `strset` for retained MIDX files
928
- + midx-write: handle noop writes when converting incremental chains
929
-
930
- The repacking code has been refactored and compaction of MIDX layers
931
- have been implemented, and incremental strategy that does not require
932
- all-into-one repacking has been introduced.
933
-
934
- Will merge to 'master'.
935
- source: <cover.1779206239.git.me@ttaylorr.com>
936
-
937
-
887
* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
888
- unpack-trees: use repository from index instead of global
889
- unpack-trees: use repository from index instead of global
@@ -947,35 +896,6 @@ Release tarballs are available at:
896
source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>
897
898
950
-* ps/setup-wo-the-repository (2026-05-19) 18 commits
951
- (merged to 'next' on 2026-05-21 at d8fb5a7b3e)
952
- + setup: stop using `the_repository` in `init_db()`
953
- + setup: stop using `the_repository` in `create_reference_database()`
954
- + setup: stop using `the_repository` in `initialize_repository_version()`
955
- + setup: stop using `the_repository` in `check_repository_format()`
956
- + setup: stop using `the_repository` in `upgrade_repository_format()`
957
- + setup: stop using `the_repository` in `setup_git_directory()`
958
- + setup: stop using `the_repository` in `setup_git_directory_gently()`
959
- + setup: stop using `the_repository` in `setup_git_env()`
960
- + setup: stop using `the_repository` in `set_git_work_tree()`
961
- + setup: stop using `the_repository` in `setup_work_tree()`
962
- + setup: stop using `the_repository` in `enter_repo()`
963
- + setup: stop using `the_repository` in `verify_non_filename()`
964
- + setup: stop using `the_repository` in `verify_filename()`
965
- + setup: stop using `the_repository` in `path_inside_repo()`
966
- + setup: stop using `the_repository` in `prefix_path()`
967
- + setup: stop using `the_repository` in `is_inside_work_tree()`
968
- + setup: stop using `the_repository` in `is_inside_git_dir()`
969
- + setup: replace use of `the_repository` in static functions
970
- (this branch is used by ps/setup-centralize-odb-creation.)
971
-
972
- Many uses of the_repository has been updated to use a more
973
- appropriate struct repository instance in setup.c codepath.
974
-
975
- Will merge to 'master'.
976
- source: <20260519-pks-setup-wo-the-repository-v3-0-a00d8ea8b07f@pks.im>
977
-
978
-
899
* kh/doc-trailers (2026-04-13) 9 commits
900
- doc: interpret-trailers: document comment line treatment
901
- doc: interpret-trailers: commit to “trailer block” term