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