What's cooking (2026/06 #04)

Junio C Hamano committed Jun 11, 2026 at 06:27 UTC ec29228757424d51159f579f794720a737765a50
1 file changed +474 -419
whats-cooking.txt
+474 -419
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 -Subject: What's cooking in git.git (Jun 2026, #03)
3 -X-master-at: 600fe743028cbfb640855f659e9851522214bc0b
4 -X-next-at: 3af1d1dc617ff77b2d2d43d1d742f19887db26f5
2 +Subject: What's cooking in git.git (Jun 2026, #04)
3 +X-master-at: 3e65291872de10c3f0bf05ea8c24187e7a71ebf0
4 +X-next-at: 7b1980befcad838a440dd908397520459faf403d
5 Bcc: lwn@lwn.net, gitster@pobox.com
6
7 -What's cooking in git.git (Jun 2026, #03)
7 +What's cooking in git.git (Jun 2026, #04)
8 -----------------------------------------
9
10 Here are the topics that have been cooking in my tree. Commits
@@ -17,6 +17,11 @@ A topic without enough support may be discarded after a long period
17 of no activity (of course they can be resubmitted when new interests
18 arise).
19
20 +A preview release Git 2.55-rc0 has been tagged and pushed out. There
21 +may be a few more topics in 'next' and possibly outside 'next' that
22 +we may want to include in the release that I didn't manage or I
23 +forgot (please let me know).
24 +
25 Copies of the source code to Git live in many repositories, and the
26 following is a list of the ones I push into or their mirrors. Some
27 repositories have only a subset of branches.
@@ -48,80 +53,353 @@ Release tarballs are available at:
53 --------------------------------------------------
54 [Graduated to 'master']
55
51 -* aj/stash-patch-optimize-temporary-index (2026-05-22) 1 commit
52 - (merged to 'next' on 2026-05-31 at d1b1dd94f5)
53 - + stash: reuse cached index entries in --patch temporary index
56 +* gh/jump-auto-mode (2026-05-21) 1 commit
57 + (merged to 'next' on 2026-06-02 at f70dd05c9c)
58 + + git-jump: pick a mode automatically when invoked without arguments
59 +
60 + The 'git-jump' command (in contrib/) has been taught to automatically
61 + pick a mode (merge, diff, or ws) when invoked without arguments.
62 + cf. <20260522052821.GC861761@coredump.intra.peff.net>
63 + source: <pull.2108.v3.git.1779371110195.gitgitgadget@gmail.com>
64 +
65 +
66 +* hn/macos-linker-warning (2026-06-02) 1 commit
67 + (merged to 'next' on 2026-06-04 at db2ca164c4)
68 + + config.mak.uname: avoid macOS linker warning on Xcode 16.3+
69 +
70 + A linker warning on macOS when building with Xcode 16.3 or newer has
71 + been avoided by passing -fno-common to the compiler when a
72 + sufficiently new linker is detected.
73 + source: <pull.2313.v3.git.git.1780385878555.gitgitgadget@gmail.com>
74 +
75 +
76 +* ib/doc-push-default-simple (2026-05-25) 1 commit
77 + (merged to 'next' on 2026-06-02 at 5c1ff2a769)
78 + + doc: clarify push.default=simple behavior
79 +
80 + The documentation for `push.default = simple` has been clarified to
81 + better explain its behavior, making it clear that it pushes the
82 + current branch to a same-named branch on the remote, and detailing
83 + the upstream requirements for centralized workflows.
84 + cf. <pull.2115.v2.git.1779767888508.gitgitgadget@gmail.com>
85 + source: <pull.2115.v2.git.1779767888508.gitgitgadget@gmail.com>
86 +
87 +
88 +* jc/doc-monitor-ghci (2026-05-24) 1 commit
89 + (merged to 'next' on 2026-06-02 at 46fb5fe1c2)
90 + + SubmittingPatches: proactively monitor GHCI pages
91 +
92 + Encourage original authors to monitor the CI status.
93 + source: <xmqq1pf0gpp3.fsf@gitster.g>
94
55 - "git stash -p" has been optimized by reusing cached index
56 - entries in its temporary index, avoiding unnecessary lstat()
57 - calls on unchanged files.
58 - cf. <xmqqse7m6deh.fsf@gitster.g>
59 - source: <pull.2306.v2.git.git.1779491545531.gitgitgadget@gmail.com>
95
96 +* kk/wildmatch-windows-ls-files-prereq (2026-05-28) 1 commit
97 + (merged to 'next' on 2026-06-04 at 6dc748aa63)
98 + + t3070: skip ls-files tests with backslash patterns on Windows
99
62 -* ar/receive-pack-worktree-env (2026-05-25) 1 commit
63 - (merged to 'next' on 2026-05-27 at 9c246d1969)
64 - + receive-pack: fix updateInstead with core.worktree
100 + In t3070-wildmatch, "via ls-files" test variants with patterns
101 + containing backslash escapes are now skipped on Windows, avoiding 36
102 + test failures caused by pathspec separator conversion.
103 + cf. <xmqqecivjn7k.fsf@gitster.g>
104 + source: <pull.2128.git.1779958849319.gitgitgadget@gmail.com>
105
66 - The GIT_WORK_TREE variable prepared to invoke the push-to-checkout
67 - hook was leaking into the environment even when there was no hook
68 - used and broke the default push-to-deploy (i.e., let "git checkout"
69 - update the working tree only when the working tree is clean).
70 - source: <20260525162311.66240-2-hi@alyssa.is>
106
107 +* lp/http-fetch-pack-index-leak-fix (2026-06-01) 2 commits
108 + (merged to 'next' on 2026-06-04 at f4090b5068)
109 + + http: fix memory leak in fetch_and_setup_pack_index()
110 + + http: cleanup function fetch_and_setup_pack_index()
111
73 -* ds/restore-sparse-index (2026-05-26) 2 commits
74 - (merged to 'next' on 2026-05-31 at e85a961bc7)
75 - + restore: avoid sparse index expansion
76 - + t1092: test 'git restore' with sparse index
112 + A memory leak in `fetch_and_setup_pack_index()` when verification of
113 + the downloaded pack index fails has been plugged. Also an obsolete
114 + `unlink()` call on parse failure has been cleaned up.
115 + cf. <20260529053659.GC1099450@coredump.intra.peff.net>
116 + source: <cover.1780321770.git.lorenzo.pegorari2002@gmail.com>
117
78 - 'git restore --staged' has been optimized to avoid unnecessarily expanding
79 - the sparse index when operating on paths within the sparse checkout
80 - definition, by handling sparse directory entries at the tree level.
81 - source: <pull.2121.v2.git.1779827195.gitgitgadget@gmail.com>
118
119 +* mm/doc-word-diff (2026-05-28) 1 commit
120 + (merged to 'next' on 2026-06-04 at 9fa723ec63)
121 + + doc: clarify that --word-diff operates on line-level hunks
122 +
123 + The documentation for "--word-diff" has been extended with a bit of
124 + implementation detail of where these different words come from.
125 + source: <pull.2113.v2.git.1779996106005.gitgitgadget@gmail.com>
126 +
127 +
128 +* mm/line-log-cleanup (2026-05-28) 3 commits
129 + (merged to 'next' on 2026-06-04 at 02f8bea278)
130 + + line-log: allow non-patch diff formats with -L
131 + + line-log: integrate -L output with the standard log-tree pipeline
132 + + revision: move -L setup before output_format-to-diff derivation
133
84 -* ja/doc-synopsis-style-again (2026-05-25) 6 commits
85 - (merged to 'next' on 2026-05-31 at cc4fe82d87)
86 - + doc: convert git-imap-send synopsis and options to new style
87 - + doc: convert git-apply synopsis and options to new style
88 - + doc: convert git-am synopsis and options to new style
89 - + doc: convert git-grep synopsis and options to new style
90 - + doc: git bisect: clarify the usage of the synopsis vs actual command
91 - + doc: convert git-bisect to synopsis style
134 + The `git log -L` implementation has been refactored to use the
135 + standard diff output pipeline, enabling pickaxe and diff-filter to
136 + work as expected. Additionally, metadata-only diff formats like
137 + --raw and --name-only are now supported with -L.
138 + cf. <B59BA5B1-184D-48A8-8BAD-11EB6F8EB50C@gmail.com>
139 + source: <pull.2094.v3.git.1780001267.gitgitgadget@gmail.com>
140 +
141 +
142 +* ps/odb-source-loose (2026-06-01) 19 commits
143 + (merged to 'next' on 2026-06-04 at 660909ad66)
144 + + odb/source-loose: drop pointer to the "files" source
145 + + odb/source-loose: stub out remaining callbacks
146 + + odb/source-loose: wire up `write_object_stream()` callback
147 + + object-file: refactor writing objects to use loose source
148 + + odb/source-loose: wire up `write_object()` callback
149 + + loose: refactor object map to operate on `struct odb_source_loose`
150 + + odb/source-loose: wire up `freshen_object()` callback
151 + + odb/source-loose: drop `odb_source_loose_has_object()`
152 + + odb/source-loose: wire up `count_objects()` callback
153 + + odb/source-loose: wire up `find_abbrev_len()` callback
154 + + odb/source-loose: wire up `for_each_object()` callback
155 + + odb/source-loose: wire up `read_object_stream()` callback
156 + + odb/source-loose: wire up `read_object_info()` callback
157 + + odb/source-loose: wire up `close()` callback
158 + + odb/source-loose: wire up `reprepare()` callback
159 + + odb/source-loose: start converting to a proper `struct odb_source`
160 + + odb/source-loose: store pointer to "files" instead of generic source
161 + + odb/source-loose: move loose source into "odb/" subsystem
162 + + Merge branch 'ps/odb-in-memory' into ps/odb-source-loose
163 + (this branch is used by ps/odb-source-packed.)
164 +
165 + The loose object source has been refactored into a proper `struct
166 + odb_source`.
167 + source: <20260601-b4-pks-odb-source-loose-v2-0-90ff159430af@pks.im>
168 +
169 +
170 +* rs/strbuf-add-oid-hex (2026-05-13) 1 commit
171 + (merged to 'next' on 2026-06-02 at 4876f95de0)
172 + + hex: add and use strbuf_add_oid_hex()
173 +
174 + Formatting object name in full hexadecimal form has been optimized
175 + by using a new strbuf_add_oid_hex() helper function.
176 + cf. <20260513160155.GA103037@coredump.intra.peff.net>
177 + source: <183aa0fd-d455-4ec9-9c42-d511fac8b3e4@web.de>
178 +
179 +
180 +* rs/strbuf-add-uint (2026-05-12) 4 commits
181 + (merged to 'next' on 2026-06-02 at f5be02d8ec)
182 + + ls-tree: use strbuf_add_uint()
183 + + ls-files: use strbuf_add_uint()
184 + + cat-file: use strbuf_add_uint()
185 + + strbuf: add strbuf_add_uint()
186 +
187 + Adding a decimal integer with strbuf_addf("%u") appears commonly;
188 + they have been optimized by using a custom formatter.
189 + cf. <20260512184619.GD70851@coredump.intra.peff.net>
190 + source: <20260512115603.80780-1-l.s.r@web.de>
191 +
192 +
193 +* st/daemon-sockaddr-fixes (2026-05-27) 3 commits
194 + (merged to 'next' on 2026-06-04 at 17684e6158)
195 + + daemon: guard NULL REMOTE_PORT in execute() logging
196 + + daemon: fix IPv6 address truncation in ip2str()
197 + + daemon: fix IPv6 address corruption in lookup_hostname()
198 +
199 + Correct use of sockaddr API in "git daemon".
200 + source: <pull.2300.v3.git.git.1779937016.gitgitgadget@gmail.com>
201 +
202 +
203 +* tb/bitmap-build-performance (2026-05-27) 9 commits
204 + (merged to 'next' on 2026-06-02 at d1a84a996a)
205 + + pack-bitmap: build pseudo-merge bitmaps after regular bitmaps
206 + + pack-bitmap: remember pseudo-merge parents
207 + + pack-bitmap: sort bitmaps before XORing
208 + + pack-bitmap: cache object positions during fill
209 + + pack-bitmap: consolidate `find_object_pos()` success path
210 + + pack-bitmap: reuse stored selected bitmaps
211 + + pack-bitmap: check subtree bits before recursing
212 + + pack-bitmap: pass object position to `fill_bitmap_tree()`
213 + + Merge branch 'tb/pseudo-merge-bugfixes' into tb/bitmap-build-performance
214
93 - A batch of documentation pages has been updated to use the modern
94 - synopsis style.
95 - cf. <pull.2117.v2.git.1779704908.gitgitgadget@gmail.com>
96 - source: <pull.2117.v2.git.1779704908.gitgitgadget@gmail.com>
215 + Reachability bitmap generation has been significantly optimized. By
216 + reordering tree traversal, caching object positions, and refining how
217 + pseudo-merge bitmaps are constructed, the performance of "git repack
218 + --write-midx-bitmaps" is improved, especially for large repositories
219 + and when using pseudo-merges.
220 + cf. <20260529083439.GD1106035@coredump.intra.peff.net>
221 + source: <cover.1779911733.git.me@ttaylorr.com>
222
223
99 -* kh/free-commit-list (2026-05-28) 2 commits
100 - (merged to 'next' on 2026-05-31 at 154f83b192)
101 - + commit: remove deprecated functions
102 - + *: replace deprecated free_commit_list
224 +* th/promisor-quiet-per-repo (2026-04-06) 1 commit
225 + (merged to 'next' on 2026-06-02 at 02a749d7fe)
226 + + promisor-remote: fix promisor.quiet to use the correct repository
227
104 - Code clean-up.
105 - source: <V2_CV_commit.h_remove_deprecated.732@msgid.xyz>
228 + The "promisor.quiet" configuration variable was not used from
229 + relevant submodules when commands like "grep --recurse-submodules"
230 + triggered a lazy fetch, which has been corrected.
231 + cf. <c87f1f12-d0cc-4150-8f43-4dc9cc1fe24f@malon.dev>
232 + source: <20260406183041.783800-1-vikingtc4@gmail.com>
233
234
108 -* kk/commit-reach-optim (2026-05-25) 3 commits
109 - (merged to 'next' on 2026-05-31 at eeb8d0c207)
110 - + commit-reach: replace queue_has_nonstale() scan with O(1) tracking
111 - + commit-reach: deduplicate queue entries in paint_down_to_common
112 - + object.h: fix stale entries in object flag allocation table
235 +* ua/push-remote-group (2026-05-03) 3 commits
236 + (merged to 'next' on 2026-06-02 at ba5d6aebaa)
237 + + push: support pushing to a remote group
238 + + remote: move remote group resolution to remote.c
239 + + remote: fix sign-compare warnings in push_cas_option
240
114 - The check for non-stale commits in the priority queue used by
115 - `paint_down_to_common` and `ahead_behind` has been optimized by
116 - replacing an O(N) scan with an O(1) counter, yielding performance
117 - improvements in repositories with wide histories.
118 - cf. <xmqqzf1ncded.fsf@gitster.g>
119 - source: <pull.2124.v2.git.1779719286.gitgitgadget@gmail.com>
241 + "git push" learned to take a "remote group" name to push to, which
242 + causes pushes to multiple places, just like "git fetch" would do.
243 + cf. <20260518182721.155070-1-usmanakinyemi202@gmail.com>
244 + source: <20260503153402.1333220-1-usmanakinyemi202@gmail.com>
245
246 --------------------------------------------------
247 [New Topics]
248
124 -* ps/odb-source-packed (2026-06-04) 17 commits
249 +* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
250 + - prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
251 + - prio-queue: rename .nr to .nr_ and add accessor helpers
252 +
253 + The lazy priority queue optimization pattern (deferring actual removal
254 + in prio_queue_get() to allow get+put fusion) has been folded directly
255 + into prio_queue itself, speeding up commit traversal workflows and
256 + simplifying callers.
257 +
258 + Comments?
259 + source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>
260 +
261 +
262 +* kk/remove-get-reachable-subset (2026-06-11) 1 commit
263 + - commit-reach: remove get_reachable_subset()
264 +
265 + API clean-up.
266 +
267 + Needs review.
268 + source: <pull.2144.v2.git.1781178567862.gitgitgadget@gmail.com>
269 +
270 +
271 +* td/ref-filter-memoize-contains (2026-06-08) 2 commits
272 + - ref-filter: memoize --contains with generations
273 + - commit-reach: handle cycles in contains walk
274 +
275 + 'git branch --contains' and 'git for-each-ref --contains' have
276 + been optimized to use the memoized commit traversal previously
277 + used only by 'git tag --contains', significantly speeding up
278 + connectivity checks across many candidate refs with shared
279 + history.
280 +
281 + Waiting for response(s) to review comment(s).
282 + cf. <CAOLa=ZRFSuGrqFXhTuQ7Dk5GCQQGHom++78xwONoiNdt1h_gWQ@mail.gmail.com>
283 + source: <20260608-ref-filter-memoized-contains-v2-0-e72720344a7c@gmail.com>
284 +
285 +
286 +* tc/replay-linearize (2026-06-10) 3 commits
287 + - replay: offer an option to linearize the commit topology
288 + - replay: add helper to put entry into mapped_commits
289 + - replay: refactor enum replay_mode into a bool
290 +
291 + git replay learns --linearize option to drop merge commits and
292 + linearize the replayed history, mimicking git rebase
293 + --no-rebase-merges.
294 +
295 + Waiting for response(s) to review comment(s).
296 + cf. <xmqqjys6wcpo.fsf@gitster.g>
297 + source: <20260610-toon-git-replay-drop-merges-v2-0-5714a71c6d83@iotcl.com>
298 +
299 +
300 +* td/describe-tag-iteration (2026-06-10) 1 commit
301 + - describe: limit default ref iteration to tags
302 +
303 + 'git describe' has been taught to pass the 'refs/tags/' prefix down to
304 + the ref iterator when '--all' is not requested, avoiding unnecessary
305 + iteration over non-tag refs.
306 +
307 + Needs review.
308 + source: <20260610-describe-tag-ref-scope-v3-1-5aa63ab279f7@gmail.com>
309 +
310 +
311 +* ta/doc-config-adoc-fixes (2026-06-10) 3 commits
312 + - doc: git-config: escape erroneous highlight markup
313 + - doc: config/sideband: fix description list delimiter
314 + - doc: config: terminate runaway lists
315 +
316 + Various AsciiDoc markup fixes in 'git config' documentation and
317 + related files to ensure lists and formatting are rendered correctly.
318 +
319 + Comments?
320 + cf. <20260611083139.GA2237523@coredump.intra.peff.net>
321 + source: <20260610225513.6269-1-taahol@utu.fi>
322 +
323 +
324 +* ps/setup-drop-global-state (2026-06-10) 8 commits
325 + - treewide: drop USE_THE_REPOSITORY_VARIABLE
326 + - environment: stop using `the_repository` in `is_bare_repository()`
327 + - environment: split up concerns of `is_bare_repository_cfg`
328 + - builtin/init: stop modifying `is_bare_repository_cfg`
329 + - setup: remove global `git_work_tree_cfg` variable
330 + - builtin/init: simplify logic to configure worktree
331 + - builtin/init: stop modifying global `git_work_tree_cfg` variable
332 + - Merge branch 'ps/setup-centralize-odb-creation' into ps/setup-drop-global-state
333 + (this branch uses ps/setup-centralize-odb-creation.)
334 +
335 + Continuation of "setup.c" refactoring to drop remaining global state
336 + (`git_work_tree_cfg`, `is_bare_repository_cfg`). The most notable
337 + outcome is that `is_bare_repository()` has been updated to no longer
338 + implicitly rely on `the_repository`.
339 +
340 + Comments?
341 + source: <20260611-b4-pks-setup-drop-global-state-v2-0-a6f7269c841d@pks.im>
342 +
343 +
344 +* ps/refs-avoid-chdir-notify-reparent (2026-06-10) 10 commits
345 + - refs: always use absolute paths for reference stores
346 + - refs: drop local buffer in `refs_compute_filesystem_location()`
347 + - refs: fix recursing `get_main_ref_store()` with "onbranch" config
348 + - repository: free main reference database
349 + - chdir-notify: drop unused `chdir_notify_reparent()`
350 + - refs: unregister reference stores from "chdir_notify"
351 + - setup: don't apply "GIT_REFERENCE_BACKEND" without a repository
352 + - setup: stop applying repository format twice
353 + - setup: inline `check_and_apply_repository_format()`
354 + - Merge branch 'ps/setup-centralize-odb-creation' into ps/refs-avoid-chdir-notify-reparent
355 + (this branch uses ps/setup-centralize-odb-creation.)
356 +
357 + The reference backends have been converted to always use absolute
358 + paths internally. This allows dropping the calls to
359 + `chdir_notify_reparent()` and fixes a memory leak in how the
360 + reference database is constructed with an "onbranch" condition.
361 +
362 + Waiting for response(s) to review comment(s).
363 + cf. <20260611065346.GD2191159@coredump.intra.peff.net>
364 + source: <20260610-b4-pks-refs-avoid-chdir-notify-reparent-v1-0-56c864b01c43@pks.im>
365 +
366 +
367 +* jc/t1400-fifo-cleanup (2026-06-10) 1 commit
368 + - t1400: have fifo test clean after itself
369 +
370 + source: <xmqqo6hit6rn.fsf@gitster.g>
371 +
372 +--------------------------------------------------
373 +[Stalled]
374 +
375 +* cs/subtree-split-recursion (2026-03-05) 3 commits
376 + - contrib/subtree: reduce recursion during split
377 + - contrib/subtree: functionalize split traversal
378 + - contrib/subtree: reduce function side-effects
379 +
380 + When processing large history graphs on Debian or Ubuntu, "git
381 + subtree" can die with a "recursion depth reached" error.
382 +
383 + Waiting for response(s) to review comment(s) for too long, consider discarding.
384 + cf. <xmqqv7c13o5l.fsf@gitster.g>
385 + source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>
386 +
387 +--------------------------------------------------
388 +[Cooking]
389 +
390 +* jd/unpack-trees-wo-the-repository (2026-03-31) 1 commit
391 + - unpack-trees: use repository from index instead of global
392 +
393 + A handful of inappropriate uses of the_repository have been
394 + rewritten to use the right repository structure instance in the
395 + unpack-trees.c codepath.
396 +
397 + Will merge to 'next'.
398 + cf. <xmqqqzmfz91r.fsf@gitster.g>
399 + source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>
400 +
401 +
402 +* ps/odb-source-packed (2026-06-09) 18 commits
403 - odb/source-packed: drop pointer to "files" parent source
404 - midx: refactor interfaces to work on "packed" source
405 - odb/source-packed: stub out remaining functions
@@ -137,18 +415,18 @@ Release tarballs are available at:
415 - odb/source-packed: start converting to a proper `struct odb_source`
416 - odb/source-packed: store pointer to "files" instead of generic source
417 - packfile: move packed source into "odb/" subsystem
418 + - packfile: split out packfile list logic
419 - packfile: rename `struct packfile_store` to `odb_source_packed`
420 - Merge branch 'ps/odb-source-loose' into ps/odb-source-packed
142 - (this branch uses ps/odb-source-loose.)
421
422 The packed object source has been refactored into a proper struct
423 odb_source.
424
147 - Comments?
148 - source: <20260604-pks-odb-source-packed-v1-0-2e7ab31b4b5c@pks.im>
425 + Needs review.
426 + source: <20260609-pks-odb-source-packed-v2-0-839089132c8b@pks.im>
427
428
151 -* ps/transport-helper-tsan-fix (2026-06-04) 1 commit
429 +* ps/transport-helper-tsan-fix (2026-06-09) 1 commit
430 - transport-helper: fix TSAN race in transfer_debug()
431
432 The TSAN race in transfer_debug() within transport-helper.c has been
@@ -156,8 +434,10 @@ Release tarballs are available at:
434 bidirectional_transfer_loop() before spawning worker threads, allowing
435 the removal of a TSAN suppression.
436
159 - Comments?
160 - source: <20260604132327.277693-3-pushkarkumarsingh1970@gmail.com>
437 + Will merge to 'next'?
438 + cf. <20260609002833.GE358144@coredump.intra.peff.net>
439 + cf. <20260611083320.GI2191159@coredump.intra.peff.net>
440 + source: <20260609134741.4727-2-pushkarkumarsingh1970@gmail.com>
441
442
443 * ta/typofixes (2026-06-04) 1 commit
@@ -165,19 +445,21 @@ Release tarballs are available at:
445
446 Typofixes
447
168 - Comments?
448 + Will merge to 'next'.
449 + cf. <xmqqh5ncvfsu.fsf@gitster.g>
450 source: <20260604131457.19215-1-taahol@utu.fi>
451
452
453 * js/win-kill-child-more-gently (2026-06-04) 2 commits
173 - - mingw: really handle SIGINT
174 - - mingw: kill child processes in a gentler way
454 + (merged to 'next' on 2026-06-11 at b4a2299e7e)
455 + + mingw: really handle SIGINT
456 + + mingw: kill child processes in a gentler way
457
458 Advanced emulation of kill() used on Windows in GfW has been
459 upstreamed to improve the symptoms like left-behind .lock files and
460 that fails to let the child clean-up itself when it gets killed.
461
180 - Comments?
462 + Will merge to 'master'.
463 source: <pull.2130.git.1780590261.gitgitgadget@gmail.com>
464
465
@@ -190,31 +472,33 @@ Release tarballs are available at:
472 checks, and the existing GIT_GNUC_PREREQ macro has been modernized
473 to use explicit major/minor comparisons rather than bit-shifting.
474
193 - Comments?
475 + Needs review.
476 source: <20260608124419.38905-1-dominik.loidolt@univie.ac.at>
477
478
479 * lo/doc-format-patch-subject-prefix (2026-06-04) 1 commit
198 - - Documentation: remove redundant 'instead' in --subject-prefix
480 + (merged to 'next' on 2026-06-09 at 58b2a20f6d)
481 + + Documentation: remove redundant 'instead' in --subject-prefix
482
483 Wording used in "format-patch --subject-prefix" documentation
484 has been improved.
485
203 - Will merge to 'next'.
486 + Will merge to 'master'.
487 source: <20260604163510.36687-2-lucasseikioshiro@gmail.com>
488
489
490 * am/doc-tech-hash-typofix (2026-06-05) 1 commit
208 - - doc: fix typo in GIT_ALTERNATE_OBJECT_DIRECTORIES
491 + (merged to 'next' on 2026-06-09 at aeaf2363f8)
492 + + doc: fix typo in GIT_ALTERNATE_OBJECT_DIRECTORIES
493
494 Typofix.
495
212 - Will merge to 'next'.
496 + Will merge to 'master'.
497 cf. <aiZo9FqsdKrhz0gA@pks.im>
498 source: <20260605172643.8796-1-amonakov@ispras.ru>
499
500
217 -* td/ref-filter-restore-prefix-iteration (2026-06-05) 1 commit
501 +* td/ref-filter-restore-prefix-iteration (2026-06-10) 1 commit
502 - ref-filter: restore prefix-scoped iteration
503
504 Commands that list branches and tags (like git branch and git tag)
@@ -222,19 +506,21 @@ Release tarballs are available at:
506 their ref iterator, avoiding a loose-ref scaling regression in
507 repositories with many unrelated loose references.
508
225 - Comments?
226 - source: <20260605-fix-git-branch-regression-v1-1-02f40ad40929@gmail.com>
509 + Needs review.
510 + source: <20260610-fix-git-branch-regression-v3-1-6fd48fad7a53@gmail.com>
511
512
229 -* ty/move-protect-hfs-ntfs (2026-06-06) 1 commit
513 +* ty/move-protect-hfs-ntfs (2026-06-10) 1 commit
514 - environment.c: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values'
515
516 The global configuration variables protect_hfs and protect_ntfs have
517 been migrated into struct repo_config_values to tie them to
518 per-repository configuration state.
519
236 - Comments?
237 - source: <20260606143412.15443-1-cat@malon.dev>
520 + Will merge to 'next'?
521 + cf. <CAP8UFD35Tiy1_fqpjq8P-z=ZhzR3MTiThqfCs977652umRoSEQ@mail.gmail.com>
522 + cf. <xmqqse6uwdnz.fsf@gitster.g>
523 + source: <20260610124353.149874-2-cat@malon.dev>
524
525
526 * ds/config-no-includes (2026-06-08) 3 commits
@@ -247,6 +533,7 @@ Release tarballs are available at:
533 to ignore configuration include directives.
534
535 Comments?
536 + cf. <20260608225149.GB340696@coredump.intra.peff.net>
537 source: <pull.2139.git.1780927027.gitgitgadget@gmail.com>
538
539
@@ -274,38 +561,9 @@ Release tarballs are available at:
561 inapplicable or unsupported fields.
562
563 Comments?
564 + cf. <CA+J6zkQ22en2HgH03EedKOfC+jLcHH2UbwpH0h_bDEAHR6B2pg@mail.gmail.com>
565 source: <20260608-ps-eric-work-rebase-v12-0-5338b766e658@gmail.com>
566
279 ---------------------------------------------------
280 -[Stalled]
281 -
282 -* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
283 - - unpack-trees: use repository from index instead of global
284 - - unpack-trees: use repository from index instead of global
285 -
286 - A handful of inappropriate uses of the_repository have been
287 - rewritten to use the right repository structure instance in the
288 - unpack-trees.c codepath.
289 -
290 - Waiting for response(s) to review comment(s) for too long, consider discarding.
291 - cf. <xmqqldf7y95a.fsf@gitster.g>
292 - source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>
293 -
294 -
295 -* cs/subtree-split-recursion (2026-03-05) 3 commits
296 - - contrib/subtree: reduce recursion during split
297 - - contrib/subtree: functionalize split traversal
298 - - contrib/subtree: reduce function side-effects
299 -
300 - When processing large history graphs on Debian or Ubuntu, "git
301 - subtree" can die with a "recursion depth reached" error.
302 -
303 - Waiting for response(s) to review comment(s) for too long, consider discarding.
304 - cf. <xmqqv7c13o5l.fsf@gitster.g>
305 - source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>
306 -
307 ---------------------------------------------------
308 -[Cooking]
567
568 * ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
569 - http: preserve wwwauth_headers across redirects
@@ -330,33 +588,22 @@ Release tarballs are available at:
588 streamlined method for submitting patches.
589
590 Comments?
591 + cf. <87a4t32a4g.fsf@emacs.iotcl.com>
592 source: <20260608-pks-b4-v3-0-f5e497d10c56@pks.im>
593
335 -
336 -* kk/streaming-walk-pqueue (2026-05-27) 3 commits
337 - - revision: use priority queue for non-limited streaming walks
338 - - revision: introduce rev_walk_mode to clarify get_revision_1()
339 - - pack-objects: call release_revisions() after cruft traversal
340 -
341 - Streaming revision walks have been optimized by using a priority queue
342 - for date-sorting commits, speeding up walks repositories with many
343 - merges.
344 -
345 - Will merge to 'next'?
346 - source: <pull.2127.git.1779897003.gitgitgadget@gmail.com>
347 -
348 -
349 -* kk/wildmatch-windows-ls-files-prereq (2026-05-28) 1 commit
350 - (merged to 'next' on 2026-06-04 at 6dc748aa63)
351 - + t3070: skip ls-files tests with backslash patterns on Windows
352 -
353 - In t3070-wildmatch, "via ls-files" test variants with patterns
354 - containing backslash escapes are now skipped on Windows, avoiding 36
355 - test failures caused by pathspec separator conversion.
594 +
595 +* kk/streaming-walk-pqueue (2026-05-27) 3 commits
596 + (merged to 'next' on 2026-06-11 at 1466219fc9)
597 + + revision: use priority queue for non-limited streaming walks
598 + + revision: introduce rev_walk_mode to clarify get_revision_1()
599 + + pack-objects: call release_revisions() after cruft traversal
600 +
601 + Streaming revision walks have been optimized by using a priority queue
602 + for date-sorting commits, speeding up walks repositories with many
603 + merges.
604
605 Will merge to 'master'.
358 - cf. <xmqqecivjn7k.fsf@gitster.g>
359 - source: <pull.2128.git.1779958849319.gitgitgadget@gmail.com>
606 + source: <pull.2127.git.1779897003.gitgitgadget@gmail.com>
607
608
609 * sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
@@ -373,29 +620,16 @@ Release tarballs are available at:
620 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>
621
622
376 -* lp/http-fetch-pack-index-leak-fix (2026-06-01) 2 commits
377 - (merged to 'next' on 2026-06-04 at f4090b5068)
378 - + http: fix memory leak in fetch_and_setup_pack_index()
379 - + http: cleanup function fetch_and_setup_pack_index()
380 -
381 - A memory leak in `fetch_and_setup_pack_index()` when verification of
382 - the downloaded pack index fails has been plugged. Also an obsolete
383 - `unlink()` call on parse failure has been cleaned up.
384 -
385 - Will merge to 'master'.
386 - cf. <20260529053659.GC1099450@coredump.intra.peff.net>
387 - source: <cover.1780321770.git.lorenzo.pegorari2002@gmail.com>
388 -
389 -
623 * jk/describe-contains-all-match-fix (2026-06-01) 1 commit
391 - - describe: fix --exclude, --match with --contains and --all
624 + (merged to 'next' on 2026-06-11 at a95871538b)
625 + + describe: fix --exclude, --match with --contains and --all
626
627 The 'git describe --contains --all' command has been fixed to
628 properly honor the '--match' and '--exclude' options by passing
629 them down to 'git name-rev' with the appropriate reference
630 prefixes.
631
398 - Will merge to 'next'?
632 + Will merge to 'master'.
633 source: <20260601233727.43558-1-jacob.e.keller@intel.com>
634
635
@@ -405,8 +639,7 @@ Release tarballs are available at:
639 Various typos, grammatical errors, and duplicated words in both
640 documentation and code comments have been corrected.
641
408 - Waiting for response(s) to review comment(s).
409 - cf. <xmqq8q8x3nox.fsf@gitster.g>
642 + Will merge to 'next'.
643 source: <7b502e20e9495cd4720496bd6738a1fbeb453410.1780041658.git.wy@wyuan.org>
644
645
@@ -417,23 +650,11 @@ Release tarballs are available at:
650 delta cache instead of immediately freeing them, letting the existing
651 cache limit policy decide eviction.
652
420 - Waiting for response(s) to review comment(s).
421 - cf. <c4a32a6f-70bf-4ff4-abbf-d6e301246b5b@gmail.com>
653 + Will replace with [v2] and then merge to 'next'.
654 + cf. <20260611065748.GF2191159@coredump.intra.peff.net>
655 source: <pull.2131.v3.git.1780445118653.gitgitgadget@gmail.com>
656
657
425 -* hn/macos-linker-warning (2026-06-02) 1 commit
426 - (merged to 'next' on 2026-06-04 at db2ca164c4)
427 - + config.mak.uname: avoid macOS linker warning on Xcode 16.3+
428 -
429 - A linker warning on macOS when building with Xcode 16.3 or newer has
430 - been avoided by passing -fno-common to the compiler when a
431 - sufficiently new linker is detected.
432 -
433 - Will merge to 'master'.
434 - source: <pull.2313.v3.git.git.1780385878555.gitgitgadget@gmail.com>
435 -
436 -
658 * mm/diff-process-hunks (2026-05-29) 6 commits
659 . blame: consult diff process for no-hunk detection
660 . diff: bypass diff process with --no-ext-diff and in format-patch
@@ -465,13 +686,12 @@ Release tarballs are available at:
686 faster packaging by falling back to path-walk when bitmaps cannot
687 fully satisfy the request.
688
468 - Comments?
689 + Needs review.
690 source: <cover.1780438896.git.me@ttaylorr.com>
691
692
472 -* ty/migrate-trust-executable-bit (2026-05-30) 4 commits
473 - - read-cache: pass 'istate' to stat/mode helper functions
474 - - environment: move 'trust_executable_bit' into repo_config_values
693 +* ty/migrate-trust-executable-bit (2026-06-10) 3 commits
694 + - environment: move trust_executable_bit into repo_config_values
695 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
696 - read-cache: remove redundant extern declarations
697
@@ -479,18 +699,19 @@ Release tarballs are available at:
699 configuration) has been migrated into 'repo_config_values' to tie it
700 to a specific repository instance.
701
482 - Waiting for response(s) to review comment(s).
702 + Needs review.
703 cf. <CAP8UFD1GJ=caPh-M97KLCfB1ZKtpomzosYN0uYBOnay+G23GcA@mail.gmail.com>
704 cf. <CAP8UFD20yij=1ZEYnR74DoCJ3g=b39yOsUxZecYuuf7nFGaKyA@mail.gmail.com>
485 - source: <20260530160520.77859-1-cat@malon.dev>
705 + source: <20260610093635.139719-1-cat@malon.dev>
706
707
708 * ak/typofixes (2026-05-31) 1 commit
489 - - doc: fix typos via codespell
709 + (merged to 'next' on 2026-06-09 at 40de2e7b90)
710 + + doc: fix typos via codespell
711
712 Typofixes.
713
493 - Will merge to 'next'.
714 + Will merge to 'master'.
715 cf. <3398ef40-1547-4324-2cfc-97b9e2b24854@gmx.de>
716 cf. <xmqq8q8p1ese.fsf@gitster.g>
717 source: <20260531184428.55905-1-algonell@gmail.com>
@@ -508,6 +729,7 @@ Release tarballs are available at:
729
730 Expecting a reroll.
731 cf. <CAL71e4Ob-B5MJ5DPY+_tzpj6nyrbQ5WutxED2T93SWJV6kJGPA@mail.gmail.com>
732 + cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
733 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>
734
735
@@ -519,7 +741,7 @@ Release tarballs are available at:
741 parent Git process from dying abruptly when a configured subprocess
742 (e.g., a clean/smudge filter) fails to start.
743
522 - Will merge to 'next'?
744 + Will merge to 'next'.
745 source: <pull.2133.v2.git.1780348848489.gitgitgadget@gmail.com>
746
747
@@ -533,18 +755,20 @@ Release tarballs are available at:
755 absolute and relative paths for "gitdir" and "commondir", supported by
756 a new path-formatting helper extracted from "git rev-parse".
757
536 - Comments?
758 + Expecting a reroll.
759 + cf. <CA+rGoLf39iQH9X-xKW7HeTS3sMv-N-QzGiqm0Y=RYGOAqDcaoA@mail.gmail.com>
760 source: <20260605163012.181089-1-jayatheerthkulkarni2005@gmail.com>
761
762
540 -* ps/history-drop (2026-06-08) 9 commits
763 +* ps/history-drop (2026-06-10) 10 commits
764 - builtin/history: implement "drop" subcommand
765 - builtin/history: split handling of ref updates into two phases
766 - reset: stop assuming that the caller passes in a clean index
767 - reset: allow the caller to specify the current HEAD object
545 - - reset: introduce ability to skip reference updates
768 + - reset: introduce ability to skip updating HEAD
769 - reset: introduce dry-run mode
547 - - reset: modernize flags passed to `reset_head()`
770 + - reset: modernize flags passed to `reset_working_tree()`
771 + - reset: rename `reset_head()`
772 - reset: drop `USE_THE_REPOSITORY_VARIABLE`
773 - read-cache: split out function to drop unmerged entries to stage 0
774
@@ -552,18 +776,19 @@ Release tarballs are available at:
776 subcommand to remove a commit and replay its descendants onto its
777 parent.
778
555 - Comments?
556 - source: <20260608-b4-pks-history-drop-v3-0-84ca8e43e937@pks.im>
779 + Needs review.
780 + source: <20260610-b4-pks-history-drop-v4-0-70d5f0ae8c25@pks.im>
781
782
783 * ls/doc-raw-timestamp-prefix (2026-06-02) 1 commit
560 - - doc: document and test `@` prefix for raw timestamps
784 + (merged to 'next' on 2026-06-09 at 7198b6bb9d)
785 + + doc: document and test `@` prefix for raw timestamps
786
787 Documentation and tests have been added to clarify that Git's internal
788 raw timestamp format requires a `@` prefix for values less than
789 100,000,000 to prevent ambiguity with other formats like YYYYMMDD.
790
566 - Will merge to 'next'.
791 + Will merge to 'master'.
792 cf. xmqqmrxdxq1r.fsf@gitster.g>
793 source: <20260602081924.673763-2-dev@luna.gl>
794
@@ -581,59 +806,63 @@ Release tarballs are available at:
806
807
808 * jc/submitting-patches-cover-letter (2026-06-02) 2 commits
584 - - SubmittingPatches: describe cover letter
585 - - SubmittingPatches: separate typofixes section
809 + (merged to 'next' on 2026-06-09 at 42b2538a2a)
810 + + SubmittingPatches: describe cover letter
811 + + SubmittingPatches: separate typofixes section
812
813 Guidelines on how to write a cover letter for a multi-patch series
814 have been added to SubmittingPatches, which also got a new marker
815 to separate the section for typofixes.
816
591 - Will merge to 'next'.
817 + Will merge to 'master'.
818 cf. <c54f3571-ff7b-4caa-b75d-a739ed87ec9d@gmail.com>
819 cf. <aiEgUdnL8dkszKFn@pks.im>
820 source: <20260602144304.3341000-1-gitster@pobox.com>
821
822
823 * ps/t7527-fix-tap-output (2026-06-04) 8 commits
598 - - t: let prove fail when parsing invalid TAP output
599 - - t/lib-git-p4: silence output when killing p4d and its watchdog
600 - - t/test-lib: silence EBUSY errors on Windows during test cleanup
601 - - t7810: turn MB_REGEX check into a lazy prereq
602 - - t7527: fix broken TAP output
603 - - ci: unify Linux images across GitLab and GitHub
604 - - gitlab-ci: add missing Linux jobs
605 - - gitlab-ci: rearrange Linux jobs to match GitHub's order
824 + (merged to 'next' on 2026-06-11 at b5a4cd26ee)
825 + + t: let prove fail when parsing invalid TAP output
826 + + t/lib-git-p4: silence output when killing p4d and its watchdog
827 + + t/test-lib: silence EBUSY errors on Windows during test cleanup
828 + + t7810: turn MB_REGEX check into a lazy prereq
829 + + t7527: fix broken TAP output
830 + + ci: unify Linux images across GitLab and GitHub
831 + + gitlab-ci: add missing Linux jobs
832 + + gitlab-ci: rearrange Linux jobs to match GitHub's order
833
834 A recent regression in t7527 that broke TAP output has been fixed,
835 some other test noise that also broke TAP output has been silenced,
836 and 'prove' is now configured to fail on invalid TAP output to
837 prevent future regressions.
838
612 - Comments?
839 + Will merge to 'master'.
840 source: <20260604-pks-t7527-fix-tap-output-v3-0-7d766ed481e4@pks.im>
841
842
843 * ob/more-repo-config-values (2026-06-02) 8 commits
617 - - environment: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
618 - - environment: move "sparse_expect_files_outside_of_patterns" into `struct repo_config_values`
619 - - environment: move "core_sparse_checkout_cone" into `struct repo_config_values`
620 - - environment: move "precomposed_unicode" into `struct repo_config_values`
621 - - environment: move "pack_compression_level" into `struct repo_config_values`
622 - - environment: move `zlib_compression_level` into `struct repo_config_values`
623 - - environment: move "check_stat" into `struct repo_config_values`
624 - - environment: move "trust_ctime" into `struct repo_config_values`
844 + (merged to 'next' on 2026-06-09 at 3d0b057aee)
845 + + environment: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
846 + + environment: move "sparse_expect_files_outside_of_patterns" into `struct repo_config_values`
847 + + environment: move "core_sparse_checkout_cone" into `struct repo_config_values`
848 + + environment: move "precomposed_unicode" into `struct repo_config_values`
849 + + environment: move "pack_compression_level" into `struct repo_config_values`
850 + + environment: move `zlib_compression_level` into `struct repo_config_values`
851 + + environment: move "check_stat" into `struct repo_config_values`
852 + + environment: move "trust_ctime" into `struct repo_config_values`
853
854 Many core configuration variables have been migrated from global
855 variables into 'repo_config_values' to tie them to a specific
856 repository instance, avoiding cross-repository state leakage.
857
630 - Will merge to 'next'.
858 + Will merge to 'master'.
859 source: <20260602170921.35869-1-belkid98@gmail.com>
860
861
634 -* kh/doc-trailers (2026-04-13) 9 commits
862 +* kh/doc-trailers (2026-06-10) 10 commits
863 - doc: interpret-trailers: document comment line treatment
864 - doc: interpret-trailers: commit to “trailer block” term
865 + - doc: interpret-trailers: join new-trailers again
866 - doc: interpret-trailers: add key format example
867 - doc: interpret-trailers: explain key format
868 - doc: interpret-trailers: explain the format after the intro
@@ -644,9 +873,8 @@ Release tarballs are available at:
873
874 Documentation updates.
875
647 - Expecting a reroll.
648 - cf. <5508ee49-2f78-4c3a-accf-a2350666bfb8@app.fastmail.com>
649 - source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>
876 + Needs review.
877 + source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>
878
879
880 * za/completion-hide-dotfiles (2026-05-26) 1 commit
@@ -656,35 +884,11 @@ Release tarballs are available at:
884 updated to hide dotfiles by default, unless the user explicitly starts
885 the path with a dot, matching standard shell-completion behavior.
886
659 - Comments?
887 + Waiting for response(s) to review comment(s).
888 cf. <xmqqqzmxlep3.fsf@gitster.g>
889 source: <pull.2311.v2.git.git.1779808987825.gitgitgadget@gmail.com>
890
891
664 -* ib/doc-push-default-simple (2026-05-25) 1 commit
665 - (merged to 'next' on 2026-06-02 at 5c1ff2a769)
666 - + doc: clarify push.default=simple behavior
667 -
668 - The documentation for `push.default = simple` has been clarified to
669 - better explain its behavior, making it clear that it pushes the
670 - current branch to a same-named branch on the remote, and detailing
671 - the upstream requirements for centralized workflows.
672 -
673 - Will merge to 'master'.
674 - cf. <pull.2115.v2.git.1779767888508.gitgitgadget@gmail.com>
675 - source: <pull.2115.v2.git.1779767888508.gitgitgadget@gmail.com>
676 -
677 -
678 -* jc/doc-monitor-ghci (2026-05-24) 1 commit
679 - (merged to 'next' on 2026-06-02 at 46fb5fe1c2)
680 - + SubmittingPatches: proactively monitor GHCI pages
681 -
682 - Encourage original authors to monitor the CI status.
683 -
684 - Will merge to 'master'.
685 - source: <xmqq1pf0gpp3.fsf@gitster.g>
686 -
687 -
892 * ec/commit-fixup-options (2026-05-26) 2 commits
893 - commit: allow -c/-C for all kinds of --fixup
894 - commit: allow -m/-F for all kinds of --fixup
@@ -692,68 +896,28 @@ Release tarballs are available at:
896 The -m/-F/-c/-C options to supply commit log message from outside the
897 editor are now supported for all "git commit --fixup" variations.
898
695 - Comments?
899 + Needs review.
900 source: <cover.1779792311.git.erik@cervined.in>
901
902
699 -* gh/jump-auto-mode (2026-05-21) 1 commit
700 - (merged to 'next' on 2026-06-02 at f70dd05c9c)
701 - + git-jump: pick a mode automatically when invoked without arguments
702 -
703 - The 'git-jump' command (in contrib/) has been taught to automatically
704 - pick a mode (merge, diff, or ws) when invoked without arguments.
705 -
706 - Will merge to 'master'.
707 - cf. <20260522052821.GC861761@coredump.intra.peff.net>
708 - source: <pull.2108.v3.git.1779371110195.gitgitgadget@gmail.com>
709 -
710 -
711 -* ps/odb-source-loose (2026-06-01) 19 commits
712 - (merged to 'next' on 2026-06-04 at 660909ad66)
713 - + odb/source-loose: drop pointer to the "files" source
714 - + odb/source-loose: stub out remaining callbacks
715 - + odb/source-loose: wire up `write_object_stream()` callback
716 - + object-file: refactor writing objects to use loose source
717 - + odb/source-loose: wire up `write_object()` callback
718 - + loose: refactor object map to operate on `struct odb_source_loose`
719 - + odb/source-loose: wire up `freshen_object()` callback
720 - + odb/source-loose: drop `odb_source_loose_has_object()`
721 - + odb/source-loose: wire up `count_objects()` callback
722 - + odb/source-loose: wire up `find_abbrev_len()` callback
723 - + odb/source-loose: wire up `for_each_object()` callback
724 - + odb/source-loose: wire up `read_object_stream()` callback
725 - + odb/source-loose: wire up `read_object_info()` callback
726 - + odb/source-loose: wire up `close()` callback
727 - + odb/source-loose: wire up `reprepare()` callback
728 - + odb/source-loose: start converting to a proper `struct odb_source`
729 - + odb/source-loose: store pointer to "files" instead of generic source
730 - + odb/source-loose: move loose source into "odb/" subsystem
731 - + Merge branch 'ps/odb-in-memory' into ps/odb-source-loose
732 - (this branch is used by ps/odb-source-packed.)
733 -
734 - The loose object source has been refactored into a proper `struct
735 - odb_source`.
736 -
737 - Will merge to 'master'.
738 - source: <20260601-b4-pks-odb-source-loose-v2-0-90ff159430af@pks.im>
739 -
740 -
903 * ps/setup-centralize-odb-creation (2026-06-04) 9 commits
742 - - setup: construct object database in `apply_repository_format()`
743 - - repository: stop reading loose object map twice on repo init
744 - - setup: stop initializing object database without repository
745 - - setup: stop creating the object database in `setup_git_env()`
746 - - repository: stop initializing the object database in `repo_set_gitdir()`
747 - - setup: deduplicate logic to apply repository format
748 - - setup: drop `setup_git_env()`
749 - - t0001: plug test gaps for git-init(1) with GIT_OBJECT_DIRECTORY
750 - - Merge branch 'ps/setup-wo-the-repository' into ps/setup-centralize-odb-creation
904 + (merged to 'next' on 2026-06-09 at a1f23cb38c)
905 + + setup: construct object database in `apply_repository_format()`
906 + + repository: stop reading loose object map twice on repo init
907 + + setup: stop initializing object database without repository
908 + + setup: stop creating the object database in `setup_git_env()`
909 + + repository: stop initializing the object database in `repo_set_gitdir()`
910 + + setup: deduplicate logic to apply repository format
911 + + setup: drop `setup_git_env()`
912 + + t0001: plug test gaps for git-init(1) with GIT_OBJECT_DIRECTORY
913 + + Merge branch 'ps/setup-wo-the-repository' into ps/setup-centralize-odb-creation
914 + (this branch is used by ps/refs-avoid-chdir-notify-reparent and ps/setup-drop-global-state.)
915
916 The setup logic to discover and configure repositories has been
917 refactored, and the initialization of the object database has been
918 centralized.
919
756 - Will merge to 'next'.
920 + Will merge to 'master'.
921 cf. <CAOLa=ZQwVbLsOcajaxQwtkTPm=4St7EiGEEyL6_B0o3Tt1v1pw@mail.gmail.com>
922 source: <20260604-b4-pks-setup-centralize-odb-creation-v3-0-0691834f318a@pks.im>
923
@@ -767,33 +931,10 @@ Release tarballs are available at:
931 Doc update for "git replay" to actually refer to its configuration
932 variables.
933
770 - Comments?
934 + Needs review.
935 source: <V3_CV_doc_replay_config.780@msgid.xyz>
936
937
774 -* tb/bitmap-build-performance (2026-05-27) 9 commits
775 - (merged to 'next' on 2026-06-02 at d1a84a996a)
776 - + pack-bitmap: build pseudo-merge bitmaps after regular bitmaps
777 - + pack-bitmap: remember pseudo-merge parents
778 - + pack-bitmap: sort bitmaps before XORing
779 - + pack-bitmap: cache object positions during fill
780 - + pack-bitmap: consolidate `find_object_pos()` success path
781 - + pack-bitmap: reuse stored selected bitmaps
782 - + pack-bitmap: check subtree bits before recursing
783 - + pack-bitmap: pass object position to `fill_bitmap_tree()`
784 - + Merge branch 'tb/pseudo-merge-bugfixes' into tb/bitmap-build-performance
785 -
786 - Reachability bitmap generation has been significantly optimized. By
787 - reordering tree traversal, caching object positions, and refining how
788 - pseudo-merge bitmaps are constructed, the performance of "git repack
789 - --write-midx-bitmaps" is improved, especially for large repositories
790 - and when using pseudo-merges.
791 -
792 - Will merge to 'master'.
793 - cf. <20260529083439.GD1106035@coredump.intra.peff.net>
794 - source: <cover.1779911733.git.me@ttaylorr.com>
795 -
796 -
938 * hn/status-pull-advice-qualified (2026-05-21) 1 commit
939 - remote: qualify "git pull" advice for non-upstream compareBranches
940
@@ -801,58 +942,22 @@ Release tarballs are available at:
942 diverged from its push branch has been updated to suggest "git pull
943 <remote> <branch>".
944
804 - Comments?
945 + Will merge to 'next'?
946 + cf. <xmqq7bo6xuok.fsf@gitster.g>
947 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>
948
949
808 -* rs/strbuf-add-uint (2026-05-12) 4 commits
809 - (merged to 'next' on 2026-06-02 at f5be02d8ec)
810 - + ls-tree: use strbuf_add_uint()
811 - + ls-files: use strbuf_add_uint()
812 - + cat-file: use strbuf_add_uint()
813 - + strbuf: add strbuf_add_uint()
814 -
815 - Adding a decimal integer with strbuf_addf("%u") appears commonly;
816 - they have been optimized by using a custom formatter.
817 -
818 - Will merge to 'master'.
819 - cf. <20260512184619.GD70851@coredump.intra.peff.net>
820 - source: <20260512115603.80780-1-l.s.r@web.de>
821 -
822 -
823 -* mm/doc-word-diff (2026-05-28) 1 commit
824 - (merged to 'next' on 2026-06-04 at 9fa723ec63)
825 - + doc: clarify that --word-diff operates on line-level hunks
826 -
827 - The documentation for "--word-diff" has been extended with a bit of
828 - implementation detail of where these different words come from.
829 -
830 - Will merge to 'master'.
831 - source: <pull.2113.v2.git.1779996106005.gitgitgadget@gmail.com>
832 -
833 -
834 -* rs/strbuf-add-oid-hex (2026-05-13) 1 commit
835 - (merged to 'next' on 2026-06-02 at 4876f95de0)
836 - + hex: add and use strbuf_add_oid_hex()
837 -
838 - Formatting object name in full hexadecimal form has been optimized
839 - by using a new strbuf_add_oid_hex() helper function.
840 -
841 - Will merge to 'master'.
842 - cf. <20260513160155.GA103037@coredump.intra.peff.net>
843 - source: <183aa0fd-d455-4ec9-9c42-d511fac8b3e4@web.de>
844 -
845 -
950 * hn/config-typo-advice (2026-06-02) 2 commits
847 - - config: improve diagnostic for "set" with missing value
848 - - config: add git_config_key_is_valid() for quiet validation
951 + (merged to 'next' on 2026-06-09 at 5149e69e3e)
952 + + config: improve diagnostic for "set" with missing value
953 + + config: add git_config_key_is_valid() for quiet validation
954
955 "git config foo.bar=baz" is not likely to be a request to read the
956 value of such a variable with '=' in its name; rather it is plausible
957 that the user meant "git config set foo.bar baz". Give advice when
958 giving an error message.
959
855 - Will merge to 'next'.
960 + Will merge to 'master'.
961 cf. <xmqq1penqfg2.fsf@gitster.g>
962 source: <pull.2302.v6.git.git.1780425808.gitgitgadget@gmail.com>
963
@@ -869,32 +974,21 @@ Release tarballs are available at:
974 source: <20260517132111.1014901-1-joerg@thalheim.io>
975
976
872 -* hn/branch-prune-merged (2026-06-05) 6 commits
873 - . branch: add --dry-run for --prune-merged
874 - . branch: add branch.<name>.pruneMerged opt-out
875 - . branch: add --prune-merged <branch>
876 - . branch: prepare delete_branches for a bulk caller
877 - . branch: let delete_branches warn instead of error on bulk refusal
878 - . branch: add --forked filter for --list mode
977 +* hn/branch-prune-merged (2026-06-09) 6 commits
978 + - branch: add --dry-run for --prune-merged
979 + - branch: add branch.<name>.pruneMerged opt-out
980 + - branch: add --prune-merged <branch>
981 + - branch: prepare delete_branches for a bulk caller
982 + - branch: let delete_branches warn instead of error on bulk refusal
983 + - branch: add --forked filter for --list mode
984
985 "git branch" command learned "--prune-merged" option to remove
986 local branches that have already been merged to the remote-tracking
987 branches they track.
988
884 - Breaks tests.
885 - source: <pull.2285.v13.git.git.1780684553.gitgitgadget@gmail.com>
886 -
887 -
888 -* st/daemon-sockaddr-fixes (2026-05-27) 3 commits
889 - (merged to 'next' on 2026-06-04 at 17684e6158)
890 - + daemon: guard NULL REMOTE_PORT in execute() logging
891 - + daemon: fix IPv6 address truncation in ip2str()
892 - + daemon: fix IPv6 address corruption in lookup_hostname()
893 -
894 - Correct use of sockaddr API in "git daemon".
895 -
896 - Will merge to 'master'.
897 - source: <pull.2300.v3.git.git.1779937016.gitgitgadget@gmail.com>
989 + Needs review.
990 + cf. <1c56bf9c-8273-4499-87c8-16ddf0112dca@gmail.com>
991 + source: <pull.2285.v14.git.git.1780999917.gitgitgadget@gmail.com>
992
993
994 * cc/promisor-auto-config-url-more (2026-05-27) 8 commits
@@ -912,7 +1006,9 @@ Release tarballs are available at:
1006 remotes via the promisor.acceptFromServerURL configuration
1007 variable.
1008
915 - Comments?
1009 + Will merge to 'next'?
1010 + cf. <877bo7294j.fsf@emacs.iotcl.com>
1011 + cf. <xmqqh5naxwfc.fsf@gitster.g>
1012 source: <20260527140820.1438165-1-christian.couder@gmail.com>
1013
1014
@@ -923,34 +1019,19 @@ Release tarballs are available at:
1019 "git checkout --track=..." learned to optionally fetch the branch
1020 from the remote the new branch will work with.
1021
926 - Comments?
1022 + Needs review.
1023 source: <pull.2281.v13.git.git.1779565714.gitgitgadget@gmail.com>
1024
1025
1026 * mf/revision-max-count-oldest (2026-05-18) 1 commit
931 - - revision.c: implement --max-count-oldest
1027 + (merged to 'next' on 2026-06-09 at 076600fa21)
1028 + + revision.c: implement --max-count-oldest
1029
1030 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
1031 that picks oldest N commits in the range instead of the usual newest.
1032
936 - Will merge to 'next'.
937 - source: <8210d60832b9a58aa4d71fc3790e44d8989564ce.1779152064.git.mroik@delayed.space>
938 -
939 -
940 -* mm/line-log-cleanup (2026-05-28) 3 commits
941 - (merged to 'next' on 2026-06-04 at 02f8bea278)
942 - + line-log: allow non-patch diff formats with -L
943 - + line-log: integrate -L output with the standard log-tree pipeline
944 - + revision: move -L setup before output_format-to-diff derivation
945 -
946 - The `git log -L` implementation has been refactored to use the
947 - standard diff output pipeline, enabling pickaxe and diff-filter to
948 - work as expected. Additionally, metadata-only diff formats like
949 - --raw and --name-only are now supported with -L.
950 -
1033 Will merge to 'master'.
952 - cf. <B59BA5B1-184D-48A8-8BAD-11EB6F8EB50C@gmail.com>
953 - source: <pull.2094.v3.git.1780001267.gitgitgadget@gmail.com>
1034 + source: <xmqq4ijm3p2x.fsf@gitster.g>
1035
1036
1037 * en/ort-harden-against-corrupt-trees (2026-04-20) 5 commits
@@ -1004,36 +1085,10 @@ Release tarballs are available at:
1085
1086 Expecting a reroll.
1087 cf. <CAN5EUNQoKRqt3FGLmzRGpPU1nO5jCAogP8Wm9gBZXuPbMNbQAw@mail.gmail.com>
1088 + cf. <CAN5EUNSFBC0+aoW1ceGjEiKWBRjzuzUEUjg8Xys5O9rDsJdkjg@mail.gmail.com>
1089 source: <20260427102838.44867-2-pabloosabaterr@gmail.com>
1090
1091
1010 -* th/promisor-quiet-per-repo (2026-04-06) 1 commit
1011 - (merged to 'next' on 2026-06-02 at 02a749d7fe)
1012 - + promisor-remote: fix promisor.quiet to use the correct repository
1013 -
1014 - The "promisor.quiet" configuration variable was not used from
1015 - relevant submodules when commands like "grep --recurse-submodules"
1016 - triggered a lazy fetch, which has been corrected.
1017 -
1018 - Will merge to 'master'.
1019 - cf. <c87f1f12-d0cc-4150-8f43-4dc9cc1fe24f@malon.dev>
1020 - source: <20260406183041.783800-1-vikingtc4@gmail.com>
1021 -
1022 -
1023 -* ua/push-remote-group (2026-05-03) 3 commits
1024 - (merged to 'next' on 2026-06-02 at ba5d6aebaa)
1025 - + push: support pushing to a remote group
1026 - + remote: move remote group resolution to remote.c
1027 - + remote: fix sign-compare warnings in push_cas_option
1028 -
1029 - "git push" learned to take a "remote group" name to push to, which
1030 - causes pushes to multiple places, just like "git fetch" would do.
1031 -
1032 - Will merge to 'master'.
1033 - cf. <20260518182721.155070-1-usmanakinyemi202@gmail.com>
1034 - source: <20260503153402.1333220-1-usmanakinyemi202@gmail.com>
1035 -
1036 -
1092 * js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
1093 - SQUASH???
1094 - doc: document autocorrect API
@@ -1062,7 +1117,7 @@ Release tarballs are available at:
1117 The final step, split from earlier attempt by Dscho, to loosen the
1118 sideband restriction for now and tighten later at Git v3.0 boundary.
1119
1065 - On hold to help the base topic with wider exposure.
1120 + Will retract.
1121 (this branch uses jc/neuter-sideband-fixup.)
1122 source: <20260305233452.3727126-8-gitster@pobox.com>
1123