What's cooking (2026/07 #04)

Junio C Hamano committed Jul 9, 2026 at 14:17 UTC 6b62845cf6037df15fcaf685496834b9214cddf6
1 file changed +467 -586
whats-cooking.txt
+467 -586
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 -Subject: What's cooking in git.git (Jul 2026, #03)
3 -X-master-at: f85a7e662054a7b0d9070e432508831afa214b47
4 -X-next-at: 00534a21ce949ef80a5b8b9d7fc20b7d381038e9
2 +Subject: What's cooking in git.git (Jul 2026, #04)
3 +X-master-at: f60db8d575adb79761d363e026fb49bddf330c73
4 +X-next-at: 6434b31f5699143ab55cdfd0d7f1cdbbd37d82c1
5 Bcc: lwn@lwn.net, gitster@pobox.com
6
7 -What's cooking in git.git (Jul 2026, #03)
7 +What's cooking in git.git (Jul 2026, #04)
8 -----------------------------------------
9
10 Here are the topics that have been cooking in my tree. Commits
@@ -48,385 +48,297 @@ Release tarballs are available at:
48 https://www.kernel.org/pub/software/scm/git/
49
50 --------------------------------------------------
51 -[Graduated to 'master']
51 +[New Topics]
52 +
53 +* dm/submodule-update-i-shorthand (2026-07-07) 1 commit
54 + - submodule--helper: accept '-i' shorthand for update --init
55
53 -* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
54 - (merged to 'next' on 2026-06-15 at d1c99e75cc)
55 - + doc: promisor: improve acceptFromServer entry
56 - + promisor-remote: auto-configure unknown remotes
57 - + promisor-remote: trust known remotes matching acceptFromServerUrl
58 - + promisor-remote: introduce promisor.acceptFromServerUrl
59 - + promisor-remote: add 'local_name' to 'struct promisor_info'
60 - + urlmatch: add url_normalize_pattern() helper
61 - + urlmatch: change 'allow_globs' arg to bool
62 - + t5710: simplify 'mkdir X' followed by 'git -C X init'
56 + The '-i' shorthand for the '--init' option, which was accepted by the
57 + 'git submodule update' command until it was broken in a modernization
58 + of the option-parsing code, has been restored.
59 +
60 + Will merge to 'next'?
61 + source: <20260708-submodule-init-v1-1-719456077262@atmark-techno.com>
62
64 - The handling of promisor-remote protocol capability has been updated
65 - to allow the other side to add to the list of promisor remotes via the
66 - 'promisor.acceptFromServerURL' configuration variable.
63
68 - Graduated to 'master'.
69 - cf. <877bo7294j.fsf@emacs.iotcl.com>
70 - cf. <xmqqh5naxwfc.fsf@gitster.g>
71 - source: <20260527140820.1438165-1-christian.couder@gmail.com>
64 +* hf/unpack-trees-quadratic-scan (2026-07-08) 1 commit
65 + - unpack-trees: avoid quadratic index scan in next_cache_entry()
66
67 + The cache-scanning loop in 'next_cache_entry()' has been optimized
68 + to avoid rescanning already-unpacked index entries, preventing a
69 + quadratic performance slow-down when diffing the working tree
70 + against a commit with a pathspec matching early index entries.
71
74 -* en/ort-harden-against-corrupt-trees (2026-06-13) 5 commits
75 - (merged to 'next' on 2026-06-18 at e51bee59ca)
76 - + cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
77 - + merge-ort: abort merge when trees have duplicate entries
78 - + merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
79 - + merge-ort: drop unnecessary show_all_errors from collect_merge_info()
80 - + merge-ort: propagate callback errors from traverse_trees_wrapper()
72 + Will merge to 'next'?
73 + cf. <xmqqpl0xqh3n.fsf@gitster.g>
74 + source: <pull.2353.v2.git.git.1783546933992.gitgitgadget@gmail.com>
75
82 - The 'ort' merge backend has been hardened against corrupt trees by
83 - ensuring it aborts under appropriate error conditions.
76
85 - Graduated to 'master'.
86 - cf. <xmqq5x3ldu4h.fsf@gitster.g>
87 - source: <pull.2096.v2.git.1781419047.gitgitgadget@gmail.com>
77 +* jc/relnotes-2.55-rust-fix (2026-07-07) 1 commit
78 + - Rust: fix description in Release Notes to 2.55
79
80 + A description in the release notes for Git 2.55.0 has been
81 + retroactively updated to clarify that Rust support is enabled by
82 + default, but still optional, and will become mandatory in Git 3.0.
83
90 -* hn/status-pull-advice-qualified (2026-05-21) 1 commit
91 - (merged to 'next' on 2026-06-15 at 898a4df940)
92 - + remote: qualify "git pull" advice for non-upstream compareBranches
84 + Will merge to 'next'?
85 + source: <xmqqpl0y4rpg.fsf@gitster.g>
86
94 - Advice shown by 'git status' when the local branch is behind or has
95 - diverged from its push branch has been updated to suggest 'git pull
96 - <remote> <branch>'.
87
98 - Graduated to 'master'.
99 - cf. <xmqq7bo6xuok.fsf@gitster.g>
100 - source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>
88 +* jc/submitting-patches-abandoning (2026-07-08) 1 commit
89 + - SubmittingPatches: document how to retract a topic
90
91 + The 'SubmittingPatches' document has been updated to explicitly
92 + describe the expectation for contributors to retract or abandon their
93 + patch series when they are no longer pursuing it.
94
103 -* jc/submittingpatches-design-critiques (2026-06-20) 1 commit
104 - (merged to 'next' on 2026-06-22 at 7495b5f9d6)
105 - + SubmittingPatches: address design critiques
95 + Will merge to 'next'?
96 + cf. <ak6U07K1dQPlXxIp@nixos>
97 + source: <xmqqpl0xv25e.fsf@gitster.g>
98 +
99 +
100 +* jk/git-hash-cleanups (2026-07-07) 8 commits
101 + (merged to 'next' on 2026-07-09 at 12a4856545)
102 + + hash: check ctx->active flag in all wrapper functions
103 + + http: use idempotent git_hash_discard()
104 + + csum-file: use idempotent git_hash_discard()
105 + + hash: make git_hash_discard() idempotent
106 + + hash: document function pointers and wrappers
107 + + hash: convert remaining direct function calls
108 + + hash: use git_hash_init() consistently
109 + + Merge branch 'jk/hash-algo-leak-fixes' into jk/git-hash-cleanups
110 + (this branch uses jk/hash-algo-leak-fixes.)
111 +
112 + The 'git_hash_*()' wrappers have been updated to be used consistently
113 + across the codebase instead of direct calls to members of 'struct
114 + git_hash_algo', and 'git_hash_discard()' has been made idempotent to
115 + simplify cleanups.
116
107 - The documentation in SubmittingPatches has been updated to clarify how
108 - patch contributors should respond to design and viability critiques,
109 - and how the resolution of such critiques should be recorded in the
110 - final commit messages.
117 + Will merge to 'master'.
118 + cf. <ak4E4-jmgYFSI75O@pks.im>
119 + source: <20260708035235.GA41491@coredump.intra.peff.net>
120
112 - Graduated to 'master'.
113 - cf. <ajjwYGWZ6hQWr600@pks.im>
114 - source: <xmqqeci0g4mz.fsf@gitster.g>
121
122 +* mm/lib-httpd-cgi-safe (2026-07-07) 3 commits
123 + - t/README: document writing concurrency-safe helpers
124 + - t/lib-httpd: make http-429 first-request check atomic
125 + - t/lib-httpd: fix apply-one-time-script race under concurrent requests
126
117 -* jk/repo-info-path-keys (2026-06-23) 3 commits
118 - (merged to 'next' on 2026-06-29 at fbf9652169)
119 - + repo: add path.gitdir with absolute and relative suffix formatting
120 - + repo: add path.commondir with absolute and relative suffix formatting
121 - + path: extract format_path() and use in rev-parse
122 - (this branch is used by ps/setup-split-discovery-and-setup.)
123 -
124 - The 'git repo info' command has been taught new keys to output both
125 - absolute and relative paths for 'gitdir' and 'commondir', supported by
126 - a new path-formatting helper extracted from 'git rev-parse'.
127 -
128 - Graduated to 'master'.
129 - cf. <xmqqy0g3iz38.fsf@gitster.g>
130 - source: <20260624033748.108281-1-jayatheerthkulkarni2005@gmail.com>
127 + CGI helper scripts used by HTTP-related test scripts have been updated
128 + to use atomic filesystem operations, preventing race conditions when
129 + Apache handles concurrent requests.
130 +
131 + Expecting a reroll.
132 + cf. <CAC2QwmKuHUP6_287T9SOLdjLdb=b4EqV4qJ_NnYCkGP0-d6qHA@mail.gmail.com>
133 + source: <pull.2171.git.1783479584.gitgitgadget@gmail.com>
134 +
135 +
136 +* mm/sideband-ansi-sgr-colon-fix (2026-05-13) 1 commit
137 + (merged to 'next' on 2026-07-09 at fd2b979b73)
138 + + sideband: allow ANSI SGR with colon-separated subfields
139 +
140 + The sideband demultiplexer has been updated to recognize ANSI SGR
141 + escape sequences that use colon-separated subfields (e.g., for
142 + 256-color or true-color codes).
143 +
144 + Will merge to 'master'.
145 + cf. <8addf7c0-ae39-f1c0-20ab-52114702aaf6@gmx.de>
146 + source: <20260513070803.163546-1-grawity@nullroute.lt>
147 +
148 +
149 +* ps/odb-pluggable-housekeeping (2026-07-07) 11 commits
150 + - odb: make optimizations pluggable
151 + - builtin/gc: fix signedness issues in ODB-related functionality
152 + - builtin/gc: refactor ODB optimizations to operate on "files" source
153 + - builtin/gc: introduce `odb_optimize_required()`
154 + - builtin/gc: move geometric repacking into `odb_optimize()`
155 + - builtin/gc: introduce object database optimization options
156 + - builtin/gc: inline config values specific to the "files" backend
157 + - builtin/gc: make repack arguments self-contained
158 + - builtin/gc: extract object database optimizations into separate function
159 + - builtin/gc: move worktree and rerere tasks before object optimizations
160 + - odb: run "pre-auto-gc" hook for all maintenance tasks
161 +
162 + Object database housekeeping in 'git gc' and 'git maintenance' has
163 + been refactored to be pluggable. The files-backend specific logic,
164 + including incremental and geometric repacking as well as object
165 + pruning, has been moved out of the command implementation and into the
166 + files object database source, enabling future alternative object
167 + database backends to implement their own housekeeping services.
168
169 + Expecting a reroll.
170 + cf. <ak4CHGpIhVIT9sd2@pks.im>
171 + source: <20260707-b4-pks-odb-optimize-v1-0-aae607667be4@pks.im>
172
133 -* jk/setup-gitfile-diag-fix (2026-06-16) 1 commit
134 - (merged to 'next' on 2026-06-18 at b63b3d1f25)
135 - + read_gitfile(): simplify NOT_A_REPO error message
173
137 - A regression in the error diagnosis code for invalid '.git' files has
138 - been fixed, avoiding a potential 'NULL'-pointer crash when reporting
139 - that a '.git' file does not point to a valid repository.
174 +* tc/bundle-uri-empty-fix (2026-07-08) 2 commits
175 + - bundle-uri: stop sending invalid bundle configuration
176 + - bundle-uri: drain remaining response on invalid bundle-uri lines
177
141 - Graduated to 'master'.
142 - cf. <xmqqjyry4hax.fsf@gitster.g>
143 - source: <20260616123516.GA2301231@coredump.intra.peff.net>
178 + The client-side parser of server-advertised bundle-URI list has been
179 + updated to drain the remaining response in order to avoid protocol
180 + desynchronization when the server sends a misconfigured list. Also,
181 + the server-side has been taught to omit empty configuration values
182 + instead of sending invalid key-value lines.
183
184 + Will merge to 'next'?
185 + cf. <xmqqtsq9qj5k.fsf@gitster.g>
186 + source: <20260708-toon-bundle-uri-no-uri-v2-0-09a03d8db556@iotcl.com>
187
146 -* kh/submittingpatches-trailers (2026-06-18) 5 commits
147 - (merged to 'next' on 2026-06-22 at 2cd4a152c9)
148 - + SubmittingPatches: note that trailer order matters
149 - + SubmittingPatches: be consistent with trailer markup
150 - + SubmittingPatches: document Based-on-patch-by trailer
151 - + SubmittingPatches: discourage common Linux trailers
152 - + SubmittingPatches: encourage trailer use for substantial help
153 -
154 - The trailer sections in SubmittingPatches have been updated to
155 - encourage use of standard trailers.
156 -
157 - Graduated to 'master'.
158 - cf. <xmqq4ij0vo8f.fsf@gitster.g>
159 - source: <V3_CV_SubPatches_trailers.9ec@msgid.xyz>
160 -
161 -
162 -* mh/fetch-follow-remote-head-config (2026-06-19) 8 commits
163 - (merged to 'next' on 2026-06-22 at 423079e1c8)
164 - + fetch: fixup a misaligned comment
165 - + fetch: add configuration variable fetch.followRemoteHEAD
166 - + fetch: refactor do_fetch handling of followRemoteHEAD
167 - + fetch: return 0 on known git_fetch_config
168 - + fetch: rename function report_set_head
169 - + t5510: cleanup remote in followRemoteHEAD dangling ref test
170 - + doc: explain fetchRemoteHEADWarn advice
171 - + fetch: fixup set_head advice for warn-if-not-branch
172 -
173 - The 'fetch.followRemoteHEAD' configuration variable has been added to
174 - provide a default for the per-remote 'remote.<name>.followRemoteHEAD'
175 - setting.
176 -
177 - Graduated to 'master'.
178 - cf. <xmqqcxxp1j2t.fsf@gitster.g>
179 - source: <20260619094751.2996804-1-m@lfurio.us>
180 -
181 -
182 -* mv/log-follow-mergy (2026-06-21) 1 commit
183 - (merged to 'next' on 2026-06-22 at f7e984a003)
184 - + log: improve --follow following renames for non-linear history
185 -
186 - 'git log --follow' has been updated to better handle non-linear
187 - history, in which the path being tracked gets renamed differently in
188 - multiple history lines.
189 -
190 - Graduated to 'master'.
191 - source: <ajjU4w2B0NlZffw1@collabora.com>
192 -
193 -
194 -* po/hash-object-size-t (2026-06-16) 6 commits
195 - (merged to 'next' on 2026-06-21 at b780a276b9)
196 - + hash-object: add a >4GB/LLP64 test case using filtered input
197 - + hash-object: add another >4GB/LLP64 test case
198 - + hash-object --stdin: verify that it works with >4GB/LLP64
199 - + hash algorithms: use size_t for section lengths
200 - + object-file.c: use size_t for header lengths
201 - + hash-object: demonstrate a >4GB/LLP64 problem
202 -
203 - Support for hashing loose or packed objects larger than 4GB on Windows
204 - and other LLP64 platforms has been improved by converting object header
205 - buffers and data-handling functions from 'unsigned long' to 'size_t'.
206 -
207 - Graduated to 'master'.
208 - cf. <ajOQthRjhD3hRM9w@pks.im>
209 - source: <pull.2138.v2.git.1781621398.gitgitgadget@gmail.com>
210 -
211 -
212 -* ps/connected-generic-promisor-checks (2026-06-25) 5 commits
213 - (merged to 'next' on 2026-06-29 at 10eef65b98)
214 - + connected: search promisor objects generically
215 - + connected: split out promisor-based connectivity check
216 - + odb/source-packed: support flags when iterating an object prefix
217 - + odb/source-packed: extract logic to skip certain packs
218 - + Merge branch 'ps/odb-source-packed' into ps/connected-generic-promisor-checks
219 - (this branch uses ps/odb-source-packed.)
220 -
221 - The connectivity check has been refactored to search for promisor
222 - objects in a generic way using the object database interface,
223 - rather than iterating packfiles directly. This allows connectivity
224 - checks to work properly in repositories that do not use packfiles.
225 -
226 - Graduated to 'master'.
227 - cf. <CAP8UFD07AzNtP3rRj4btYfFfakX0kkLXKpO9T=a3Mds3YWEsXw@mail.gmail.com>
228 - source: <20260625-pks-connected-generic-promisor-checks-v3-0-7308f3b9dc44@pks.im>
229 -
230 -
231 -* ps/doc-recommend-b4 (2026-06-15) 3 commits
232 - (merged to 'next' on 2026-06-17 at dd9a463369)
233 - + b4: introduce configuration for the Git project
234 - + MyFirstContribution: recommend the use of b4
235 - + MyFirstContribution: recommend shallow threading of cover letters
236 -
237 - Project-specific configuration for b4 has been introduced, and the
238 - documentation has been updated to recommend using it as a
239 - streamlined method for submitting patches.
240 -
241 - Graduated to 'master'.
242 - cf. <87eci7yomp.fsf@emacs.iotcl.com>
243 - source: <20260615-pks-b4-v4-0-22cfca8f19c5@pks.im>
244 -
245 -
246 -* ps/odb-source-packed (2026-06-16) 18 commits
247 - (merged to 'next' on 2026-06-19 at dcf0c084e4)
248 - + odb/source-packed: drop pointer to "files" parent source
249 - + midx: refactor interfaces to work on "packed" source
250 - + odb/source-packed: stub out remaining functions
251 - + odb/source-packed: wire up `freshen_object()` callback
252 - + odb/source-packed: wire up `find_abbrev_len()` callback
253 - + odb/source-packed: wire up `count_objects()` callback
254 - + odb/source-packed: wire up `for_each_object()` callback
255 - + odb/source-packed: wire up `read_object_stream()` callback
256 - + odb/source-packed: wire up `read_object_info()` callback
257 - + packfile: use higher-level interface to implement `has_object_pack()`
258 - + odb/source-packed: wire up `reprepare()` callback
259 - + odb/source-packed: wire up `close()` callback
260 - + odb/source-packed: start converting to a proper `struct odb_source`
261 - + odb/source-packed: store pointer to "files" instead of generic source
262 - + packfile: move packed source into "odb/" subsystem
263 - + packfile: split out packfile list logic
264 - + packfile: rename `struct packfile_store` to `odb_source_packed`
265 - + Merge branch 'ps/odb-source-loose' into ps/odb-source-packed
266 - (this branch is used by ps/connected-generic-promisor-checks, ps/libgit-in-subdir, ps/odb-drop-whence and ps/odb-generalize-prepare.)
267 -
268 - The packed object source has been refactored into a proper 'struct
269 - odb_source'.
270 -
271 - Graduated to 'master'.
272 - cf. <ajK2QKdW-TdflfR0@denethor>
273 - source: <20260617-pks-odb-source-packed-v3-0-b5c7583cd795@pks.im>
274 -
275 -
276 -* ps/refs-onbranch-fixes (2026-06-25) 12 commits
277 - (merged to 'next' on 2026-06-29 at 7b4929e311)
278 - + refs: protect against chicken-and-egg recursion
279 - + refs/reftable: lazy-load configuration to fix chicken-and-egg
280 - + reftable: split up write options
281 - + refs/files: lazy-load configuration to fix chicken-and-egg
282 - + refs: move parsing of "core.logAllRefUpdates" back into ref stores
283 - + repository: free main reference database
284 - + chdir-notify: drop unused `chdir_notify_reparent()`
285 - + refs: unregister reference stores from "chdir_notify"
286 - + setup: don't apply "GIT_REFERENCE_BACKEND" without a repository
287 - + setup: stop applying repository format twice
288 - + setup: inline `check_and_apply_repository_format()`
289 - + Merge branch 'ps/setup-centralize-odb-creation' into ps/refs-onbranch-fixes
290 - (this branch is used by ps/setup-split-discovery-and-setup.)
291 -
292 - Reference backend configuration has been updated to load lazily to
293 - avoid recursive calls during repository initialization when 'onbranch'
294 - configuration conditions are evaluated. This has also fixed a memory
295 - leak and allowed the unused 'chdir_notify_reparent()' machinery to be
296 - dropped.
297 -
298 - Graduated to 'master'.
299 - cf. <xmqqse6ae45i.fsf@gitster.g>
300 - source: <20260625-b4-pks-refs-avoid-chdir-notify-reparent-v6-0-41fbca3cf5e3@pks.im>
301 -
302 -
303 -* ps/setup-drop-global-state (2026-06-10) 8 commits
304 - (merged to 'next' on 2026-06-15 at d9a8b88d47)
305 - + treewide: drop USE_THE_REPOSITORY_VARIABLE
306 - + environment: stop using `the_repository` in `is_bare_repository()`
307 - + environment: split up concerns of `is_bare_repository_cfg`
308 - + builtin/init: stop modifying `is_bare_repository_cfg`
309 - + setup: remove global `git_work_tree_cfg` variable
310 - + builtin/init: simplify logic to configure worktree
311 - + builtin/init: stop modifying global `git_work_tree_cfg` variable
312 - + Merge branch 'ps/setup-centralize-odb-creation' into ps/setup-drop-global-state
313 - (this branch is used by ps/setup-split-discovery-and-setup.)
314 -
315 - The refactoring of 'setup.c' has been continued to drop remaining
316 - global state ('git_work_tree_cfg', 'is_bare_repository_cfg'), updating
317 - 'is_bare_repository()' to no longer implicitly rely on
318 - 'the_repository'.
319 -
320 - Graduated to 'master'.
321 - cf. <airVOrTboNDDGBak@denethor>
322 - cf. <87ldckyygk.fsf@emacs.iotcl.com>
323 - source: <20260611-b4-pks-setup-drop-global-state-v2-0-a6f7269c841d@pks.im>
324 -
325 -
326 -* pw/status-rebase-todo (2026-06-23) 2 commits
327 - (merged to 'next' on 2026-06-23 at a0fcde09dc)
328 - + status: improve rebase todo list parsing
329 - + sequencer: factor out parsing of todo commands
330 -
331 - The display of the rebase todo list in 'git status' has been improved
332 - to correctly abbreviate object IDs for more commands and avoid
333 - misinterpreting refs as object IDs.
334 -
335 - Graduated to 'master'.
336 - source: <cover.1782230024.git.phillip.wood@dunelm.org.uk>
337 -
338 -
339 -* rs/cat-file-default-format-optim (2026-06-14) 1 commit
340 - (merged to 'next' on 2026-06-17 at 43ed8b3969)
341 - + cat-file: speed up default format
342 -
343 - The default format path of 'git cat-file --batch' has been optimized
344 - to use 'strbuf_add_oid_hex()' and 'strbuf_add_uint()' instead of
345 - 'strbuf_addf()', yielding a noticeable speedup.
346 -
347 - Graduated to 'master'.
348 - cf. <20260615165326.GA91269@coredump.intra.peff.net>
349 - source: <5a7ed929-6fe0-496c-83bd-65dee57c2241@web.de>
350 -
351 -
352 -* sg/t3420-do-not-grep-in-missing-file (2021-10-10) 1 commit
353 - (merged to 'next' on 2026-06-29 at 2bf33c6a40)
354 - + t3420-rebase-autostash: don't try to grep non-existing files
355 -
356 - A test checking interactions between 'git rebase --quit' and autostash
357 - in 't3420-rebase-autostash.sh' has been corrected to use
358 - 'test_path_is_missing' instead of '! grep' on a file that shouldn't
359 - exist in the conflicted state.
360 -
361 - Graduated to 'master'.
362 - source: <20211010172809.1472914-1-szeder.dev@gmail.com>
363 -
364 -
365 -* tb/pack-path-walk-bitmap-delta-islands (2026-06-21) 5 commits
366 - (merged to 'next' on 2026-06-22 at 59cf1663e7)
367 - + pack-objects: support `--delta-islands` with `--path-walk`
368 - + pack-objects: extract `record_tree_depth()` helper
369 - + pack-objects: support reachability bitmaps with `--path-walk`
370 - + t/perf: drop p5311's lookup-table permutation
371 - + Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands
372 -
373 - The 'git pack-objects' command has been updated to support
374 - reachability bitmaps and delta-islands concurrently with the '--path-
375 - walk' option, allowing faster packaging by falling back to path-walk
376 - when bitmaps cannot fully satisfy the request.
377 -
378 - Graduated to 'master'.
379 - cf. <xmqqwlvq1qyy.fsf@gitster.g>
380 - source: <cover.1782082975.git.me@ttaylorr.com>
381 -
382 -
383 -* td/ref-filter-restore-prefix-iteration (2026-06-12) 1 commit
384 - (merged to 'next' on 2026-06-19 at a19dbb4193)
385 - + ref-filter: restore prefix-scoped iteration
188
387 - Commands that list branches and tags (like 'git branch' and 'git tag')
388 - have been optimized to pass the namespace prefix when initializing
389 - their ref iterator, avoiding a loose-ref scaling regression in
390 - repositories with many unrelated loose references.
189 +* gr/t1410-reflog-exit-code (2026-07-08) 1 commit
190 + - t1410-reflog.sh: avoid suppressing git's exit code in pipelines
191
392 - Graduated to 'master'.
393 - cf. <xmqqik7fsv2m.fsf@gitster.g>
394 - source: <20260612-fix-git-branch-regression-v4-1-f150038c02f4@gmail.com>
192 + The pipelines in 't1410-reflog.sh' have been replaced with the
193 + 'test_stdout_line_count' helper to avoid suppressing the exit code of
194 + 'git' commands, ensuring failures are not hidden from the test suite.
195
196 + Will merge to 'next'?
197 + cf. <xmqqtsq8p18x.fsf@gitster.g>
198 + source: <20260709051229.40363-1-gatlavishweshwarreddy26@gmail.com>
199 +
200 +
201 +* js/coverity-fixes-null-safety (2026-07-09) 11 commits
202 + - shallow: fix NULL dereference
203 + - bisect: ensure non-NULL `head` before using it
204 + - pack-bitmap: handle missing bitmap for base MIDX
205 + - revision: avoid dereferencing NULL in `add_parents_only()`
206 + - replay: die when --onto does not peel to a commit
207 + - bisect: handle NULL commit in `bisect_successful()`
208 + - mailsplit: move NULL check before first use of file handle
209 + - reftable/stack: guard against NULL list_file in stack_destroy
210 + - remote: guard `remote_tracking()` against NULL remote
211 + - diff: handle NULL return from repo_get_commit_tree()
212 + - diffcore-break: guard against NULLed queue entries in merge loop
213 +
214 + Various code paths have been hardened against potential NULL-pointer
215 + dereferences and invalid file descriptor accesses flagged by
216 + Coverity.
217
397 -* ty/move-protect-hfs-ntfs (2026-06-20) 2 commits
398 - (merged to 'next' on 2026-06-20 at d8ca0d5180)
399 - + environment: use 'repo->initialized' for repo_protect_hfs() and repo_protect_ntfs()
400 - (merged to 'next' on 2026-06-15 at c2a30ca954)
401 - + environment: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values'
218 + Needs review.
219 + source: <pull.2174.git.1783590159.gitgitgadget@gmail.com>
220 +
221 +
222 +* ps/odb-for-each-object-filter (2026-07-09) 8 commits
223 + - builtin/cat-file: filter objects via object database
224 + - odb: introduce object filters to `odb_for_each_object()`
225 + - pack-bitmap: introduce function to open bitmap for a single source
226 + - pack-bitmap: iterate object sources when opening bitmaps
227 + - pack-bitmap: allow aborting iteration of bitmapped objects
228 + - pack-bitmap: mark object filter as `const`
229 + - odb/source-packed: improve lookup when enumerating objects
230 + - Merge branch 'ps/odb-drop-whence' into ps/odb-for-each-object-filter
231 + (this branch uses ps/odb-drop-whence.)
232 +
233 + The object database enumeration interface 'odb_for_each_object()'
234 + has learned to accept object filters, allowing the underlying
235 + backends to optimize the traversal by using reachability bitmaps
236 + when available. 'git cat-file --batch-all-objects' has been updated
237 + to use this generic interface, simplifying its code and avoiding
238 + direct access to ODB backend internals.
239
403 - The global configuration variables 'protect_hfs' and 'protect_ntfs'
404 - have been migrated into 'struct repo_config_values' to tie them to
405 - per-repository configuration state.
240 + Needs review.
241 + source: <20260709-pks-odb-for-each-object-filter-v1-0-82fe014b12b3@pks.im>
242 +
243 +
244 +* ps/refs-wo-the-repository (2026-07-09) 8 commits
245 + . refs: remove remaining uses of `the_repository`
246 + . worktree: pass repository to public functions
247 + . worktree: pass repository to file-local functions
248 + . worktree: refactor code to use available repositories
249 + . refs/files: drop `USE_THE_REPOSITORY_VARIABLE`
250 + . refs/packed: drop `USE_THE_REPOSITORY_VARIABLE`
251 + . refs/packed: de-globalize handling of "core.packedRefsTimeout"
252 + . Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository
253 + (this branch uses ps/refs-writing-subcommands.)
254 +
255 + The ref subsystem and the worktree API have been refactored to pass
256 + a repository pointer down the call chain, allowing them to drop
257 + references to the global 'the_repository' variable. As part of this,
258 + the handling of the 'core.packedRefsTimeout' configuration has been
259 + moved into the per-repository ref store structure.
260
407 - Graduated to 'master'.
408 - cf. <CAP8UFD35Tiy1_fqpjq8P-z=ZhzR3MTiThqfCs977652umRoSEQ@mail.gmail.com>
409 - cf. <xmqqse6uwdnz.fsf@gitster.g>
410 - source: <20260610124353.149874-2-cat@malon.dev>
411 - source: <20260620140957.667820-1-cat@malon.dev>
261 + Needs review.
262 + source: <20260709-pks-refs-wo-the-repository-v1-0-1ad6f27529c9@pks.im>
263
264
414 -* wy/doc-clarify-review-replies (2026-06-21) 2 commits
415 - (merged to 'next' on 2026-06-29 at 21ae0599dc)
416 - + doc: advise batching patch rerolls
417 - + doc: encourage review replies before rerolling
265 +* kk/commit-graph-topo-levels-fix (2026-07-09) 2 commits
266 + - commit-graph: propagate topo_levels slab to all chain layers
267 + - commit-graph: add trace2 instrumentation for generation DFS
268
419 - Documentation on community contribution guidelines has been updated to
420 - encourage replying to review comments before rerolling, and to advise
421 - a default limit of at most one reroll per day to give reviewers across
422 - different time zones enough time to participate.
269 + The 'topo_levels' slab was only propagated to the topmost layer of a
270 + split commit-graph chain, causing incremental writes to recompute
271 + topological levels for commits in base layers. This has been
272 + corrected.
273
424 - Graduated to 'master'.
425 - cf. <ajvDuUiDsmyf5LnX@pks.im>
426 - source: <cover.1782028813.git.wy@wyuan.org>
274 + Will merge to 'next'?
275 + cf. <ak-ljlV33GLigFf6@pks.im>
276 + source: <pull.2170.v2.git.1783609382.gitgitgadget@gmail.com>
277
278 --------------------------------------------------
429 -[New Topics]
279 +[Stalled]
280 +
281 +* kh/doc-trailers (2026-06-10) 10 commits
282 + - doc: interpret-trailers: document comment line treatment
283 + - doc: interpret-trailers: commit to “trailer block” term
284 + - doc: interpret-trailers: join new-trailers again
285 + - doc: interpret-trailers: add key format example
286 + - doc: interpret-trailers: explain key format
287 + - doc: interpret-trailers: explain the format after the intro
288 + - doc: interpret-trailers: not just for commit messages
289 + - doc: interpret-trailers: use “metadata” in Name as well
290 + - doc: interpret-trailers: replace “lines” with “metadata”
291 + - doc: interpret-trailers: stop fixating on RFC 822
292 +
293 + Documentation for 'git interpret-trailers' has been updated to explain
294 + the format of trailer keys (alphanumeric characters and hyphens),
295 + replace outdated terminology, define key terms upfront, and document
296 + how comment lines in the input are treated.
297 +
298 + Expecting a reroll for too long. stalled.
299 + cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
300 + source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>
301 +
302 +
303 +* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
304 + - rebase: skip branch symref aliases
305 +
306 + 'git rebase --update-refs' has been taught to resolve local branch
307 + symrefs to their referents before queuing updates, ensuring aliases of
308 + the current branch are skipped and duplicate updates are avoided to
309 + prevent failures when branch aliases are present.
310 +
311 + Waiting for response(s) to review comment(s) for too long, stalled.
312 + cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
313 + source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>
314 +
315 +
316 +* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
317 + - http: preserve wwwauth_headers across redirects
318 +
319 + When 'cURL' follows a redirect, the 'WWW-Authenticate' headers from
320 + the redirect target were lost because 'credential_from_url()' cleared
321 + the credential state. This has been fixed by preserving the collected
322 + headers across the redirect update.
323 +
324 + Will discard.
325 + cf. <xmqqmrw2zavx.fsf@gitster.g>
326 + source: <20260602161150.1527493-1-aplattner@nvidia.com>
327 +
328 +
329 +* jt/config-lock-timeout (2026-05-17) 1 commit
330 + - config: retry acquiring config.lock, configurable via core.configLockTimeout
331 +
332 + Configuration file locking has been updated to retry for a short
333 + period, avoiding failures when multiple processes attempt to update
334 + the configuration simultaneously.
335 +
336 + Waiting for response(s) to review comment(s) for too long, stalled.
337 + cf. <agrIrGwSMFlKTx9x@pks.im>
338 + source: <20260517132111.1014901-1-joerg@thalheim.io>
339 +
340 +--------------------------------------------------
341 +[Cooking]
342
343 * ds/sparse-index-ita-crash (2026-07-06) 1 commit
344 - sparse-index: avoid crash on intent-to-add entry outside the cone
@@ -449,13 +361,13 @@ Release tarballs are available at:
361 script on repositories already managed by the new tool.
362
363 Expecting a reroll.
452 - cf. <27211.50096.133710.528147@chiark.greenend.org.uk>
364 + cf. <27215.27575.968985.583226@chiark.greenend.org.uk>
365 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>
366
367
456 -* kk/reftable-tombstone-quadratic-fix (2026-07-06) 2 commits
457 - - reftable: fix quadratic behavior when re-creating deleted refs
458 - - t: add tests for ref tombstone scenarios
368 +* kk/reftable-tombstone-quadratic-fix (2026-07-09) 2 commits
369 + - reftable: fix quadratic behavior in the presence of tombstones
370 + - t/perf: add perf test for ref tombstone scenarios
371
372 The performance of ref updates and reads using the reftable backend in
373 the presence of many deletion tombstone records has been optimized by
@@ -463,18 +375,20 @@ Release tarballs are available at:
375 instead skipping tombstones at higher-level call sites where iteration
376 bounds are known.
377
466 - Needs review.
467 - source: <pull.2166.git.1783344957.gitgitgadget@gmail.com>
378 + Expecting a reroll.
379 + cf. <CAL71e4PrtZwB8TMg3eBj=LzC7ik+C8yxLYEEEP7SDgMPiWSs0Q@mail.gmail.com>
380 + source: <pull.2166.v2.git.1783598912.gitgitgadget@gmail.com>
381
382
383 * rs/blame-abbrev-marks (2026-07-06) 1 commit
471 - - blame: reserve mark column only if necessary
384 + (merged to 'next' on 2026-07-08 at e4962bd3d5)
385 + + blame: reserve mark column only if necessary
386
387 The alignment of commit object name abbreviations in 'git blame'
388 output has been optimized to reserve a column for marks (caret,
389 question mark, or asterisk) only when such marks are actually shown.
390
477 - Will merge to 'next'?
391 + Will merge to 'master'.
392 cf. <xmqqzf0397u1.fsf@gitster.g>
393 source: <92991b5e-0667-4315-89d5-1514a5499297@web.de>
394
@@ -483,67 +397,39 @@ Release tarballs are available at:
397 - t0213: skip ancestry tests under user-mode emulation
398
399 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
486 - refined to avoid failures under user-mode emulation. It now verifies
487 - that the ancestry collector reports the expected process names rather
488 - than the emulator binary name.
400 + refined to avoid failures under user-mode emulation, by verifying that
401 + the ancestry collector reports the expected process names rather than
402 + the emulator binary name.
403
404 Needs review.
405 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>
406
493 ---------------------------------------------------
494 -[Stalled]
495 -
496 -* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
497 - - http: preserve wwwauth_headers across redirects
498 -
499 - When 'cURL' follows a redirect, the 'WWW-Authenticate' headers from
500 - the redirect target were lost because 'credential_from_url()' cleared
501 - the credential state. This has been fixed by preserving the collected
502 - headers across the redirect update.
503 -
504 - Waiting for response(s) to review comment(s) for too long, stalled.
505 - cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
506 - source: <20260602161150.1527493-1-aplattner@nvidia.com>
507 -
508 -
509 -* jt/config-lock-timeout (2026-05-17) 1 commit
510 - - config: retry acquiring config.lock, configurable via core.configLockTimeout
511 -
512 - Configuration file locking has been updated to retry for a short
513 - period, avoiding failures when multiple processes attempt to update
514 - the configuration simultaneously.
515 -
516 - Waiting for response(s) to review comment(s) for too long, stalled.
517 - cf. <agrIrGwSMFlKTx9x@pks.im>
518 - source: <20260517132111.1014901-1-joerg@thalheim.io>
407
520 ---------------------------------------------------
521 -[Cooking]
522 -
523 -* bc/parse-options-exit-0-on-help (2026-07-01) 4 commits
408 +* bc/parse-options-exit-0-on-help (2026-07-07) 4 commits
409 - parse-options: exit 0 on -h
410 - rev-parse: have --parseopt callers exit 0 on --help
411 - parse-options: add a separate case for help output on error
412 - t1517: skip svn tests if svn is not installed
413
529 - Option parsing with 'git rev-parse --parseopt' and most git
414 + Option parsing with 'git rev-parse --parseopt' and most 'git'
415 subcommands has been updated to exit with 0 (instead of 129) when the
416 help option ('-h' or '--help') is requested directly by the user,
417 aligning with standard Unix convention.
418
534 - Expecting a reroll.
535 - cf. <akZ6H84Tzzgu8L5W@fruit.crustytoothpaste.net>
536 - source: <20260701212442.1430084-1-sandals@crustytoothpaste.net>
419 + Will merge to 'next'.
420 + cf. <20260708035930.GB41684@coredump.intra.peff.net>
421 + source: <20260708001557.3581080-1-sandals@crustytoothpaste.net>
422
423
424 * mg/meson-hook-list-buildfix (2026-07-01) 1 commit
540 - - meson: restore hook-list.h to builtin_sources
425 + (merged to 'next' on 2026-07-08 at 10763a0ebc)
426 + + meson: restore hook-list.h to builtin_sources
427
428 A racy build failure under Meson has been corrected by ensuring that
543 - the generated header file hook-list.h is built before compiling files
544 - in builtin_sources that depend on it.
429 + the generated header file 'hook-list.h' is built before compiling
430 + files in 'builtin_sources' that depend on it.
431
546 - Will merge to 'next'.
432 + Will merge to 'master'.
433 cf. <akZGJP1kVtjBFN_e@pks.im>
434 source: <20260701193928.358825-1-floppym@gentoo.org>
435
@@ -551,8 +437,8 @@ Release tarballs are available at:
437 * zy/apply-abandoned-header-fix (2026-07-01) 1 commit
438 - apply: avoid leaking abandoned git-header state
439
554 - A candidate git diff header parsed by 'git apply' has been isolated in
555 - a temporary structure, preventing any partially parsed state from
440 + A candidate 'git diff' header parsed by 'git apply' has been isolated
441 + in a temporary structure, preventing any partially parsed state from
442 polluting the main patch structure and causing assertions to trip if
443 the header is ultimately rejected.
444
@@ -561,15 +447,17 @@ Release tarballs are available at:
447
448
449 * jk/hash-algo-leak-fixes (2026-07-02) 9 commits
564 - - hash: add platform-specific discard functions
565 - - hash: fix memory leak copying sha256 gcrypt handles
566 - - http: discard hash in dumb-http http_object_request
567 - - check_stream_oid(): discard hash on read error
568 - - patch-id: discard hash when done
569 - - csum-file: provide a function to release checkpoints
570 - - csum-file: always finalize or discard hash
571 - - hash: add discard primitive
572 - - csum-file: drop discard_hashfile()
450 + (merged to 'next' on 2026-07-09 at 7db7b74972)
451 + + hash: add platform-specific discard functions
452 + + hash: fix memory leak copying sha256 gcrypt handles
453 + + http: discard hash in dumb-http http_object_request
454 + + check_stream_oid(): discard hash on read error
455 + + patch-id: discard hash when done
456 + + csum-file: provide a function to release checkpoints
457 + + csum-file: always finalize or discard hash
458 + + hash: add discard primitive
459 + + csum-file: drop discard_hashfile()
460 + (this branch is used by jk/git-hash-cleanups.)
461
462 Various code paths that initialize a cryptographic hash context but
463 bail out or finish without calling 'git_hash_final()' have been taught
@@ -577,7 +465,7 @@ Release tarballs are available at:
465 memory leaks when Git is built with non-default backends like
466 'OpenSSL' or 'libgcrypt'.
467
580 - Will merge to 'next'?
468 + Will merge to 'master'.
469 cf. <aktIIKuReMxJmDsi@pks.im>
470 source: <20260702075234.GA1548258@coredump.intra.peff.net>
471
@@ -596,15 +484,16 @@ Release tarballs are available at:
484
485
486 * ps/t-fixes-for-git-test-long (2026-07-05) 9 commits
599 - - gitlab-ci: enable "GIT_TEST_LONG"
600 - - gitlab-ci: disable RAM disk on macOS jobs
601 - - t: use `test_bool_env` to parse GIT_TEST_LONG
602 - - t7900: clean up large EXPENSIVE repository
603 - - t7508: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
604 - - t5608: reduce maximum disk usage
605 - - t4141: fix inefficient use of dd(1)
606 - - t0021: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
607 - - README: add GitLab CI badge to make it more discoverable
487 + (merged to 'next' on 2026-07-09 at c5b13248c8)
488 + + gitlab-ci: enable "GIT_TEST_LONG"
489 + + gitlab-ci: disable RAM disk on macOS jobs
490 + + t: use `test_bool_env` to parse GIT_TEST_LONG
491 + + t7900: clean up large EXPENSIVE repository
492 + + t7508: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
493 + + t5608: reduce maximum disk usage
494 + + t4141: fix inefficient use of dd(1)
495 + + t0021: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
496 + + README: add GitLab CI badge to make it more discoverable
497
498 Various test scripts have been updated to clean up large temporary
499 files and repositories, reducing peak disk usage during testing.
@@ -612,25 +501,26 @@ Release tarballs are available at:
501 sufficient resources (like 32-bit platforms and Windows CI
502 runners), and the long test suite has been enabled in GitLab CI.
503
615 - Will merge to 'next'?
504 + Will merge to 'master'.
505 cf. <20260707043026.GB677056@coredump.intra.peff.net>
506 source: <20260706-b4-pks-t-fixes-for-GIT-TEST-LONG-v3-0-4f6c5a37fd1f@pks.im>
507
508
509 * ih/precompose-flex-array (2026-07-04) 1 commit
621 - - precompose_utf8: use a flex array for d_name
510 + (merged to 'next' on 2026-07-09 at 737a87f65e)
511 + + precompose_utf8: use a flex array for d_name
512
513 The UTF-8 precomposition wrapper on macOS has been updated to use a
514 flexible array member to represent the name of a directory entry,
625 - preventing fortified libc checks from failing when name is
626 - reallocated to be larger than NAME_MAX bytes.
515 + preventing fortified libc checks from failing when the name is
516 + reallocated to be larger than 'NAME_MAX' bytes.
517
628 - Will merge to 'next'.
518 + Will merge to 'master'.
519 cf. <20260703050800.GA29216@tb-raspi4>
520 source: <20260704233724.16928-1-ihar.hrachyshka@gmail.com>
521
522
633 -* sn/osxkeychain-rust-universal (2026-07-06) 3 commits
523 +* sn/osxkeychain-rust-universal (2026-07-07) 3 commits
524 - contrib: wire up osxkeychain in contrib/Makefile on macOS
525 - Makefile: support universal macOS builds via RUST_TARGETS
526 - Makefile: add $(RUST_LIB) prerequisite to osxkeychain
@@ -638,26 +528,27 @@ Release tarballs are available at:
528 The build system has been updated to support building universal macOS
529 binaries when 'Rust' is enabled, by compiling separate static archives
530 for each target triple listed in 'RUST_TARGETS' and combining them
641 - using the macOS 'lipo' tool. Additionally, the 'git-credential-
642 - osxkeychain' helper has been updated to link against '$(RUST_LIB)'
643 - when 'Rust' is enabled.
531 + using the macOS 'lipo' tool. The 'git-credential-osxkeychain' helper
532 + has been updated to link against '$(RUST_LIB)' when 'Rust' is enabled.
533
645 - Needs review.
646 - source: <pull.2288.v6.git.git.1783378333.gitgitgadget@gmail.com>
534 + Will merge to 'next'?
535 + cf. <xmqq4ii9teym.fsf@gitster.g>
536 + source: <pull.2288.v8.git.git.1783480879.gitgitgadget@gmail.com>
537
538
649 -* cl/conditional-config-on-worktree-path (2026-07-02) 2 commits
650 - - config: add "worktree" and "worktree/i" includeIf conditions
651 - - config: refactor include_by_gitdir() into include_by_path()
539 +* cl/conditional-config-on-worktree-path (2026-07-08) 3 commits
540 + . config: add "worktree" and "worktree/i" includeIf conditions
541 + . repository: keep a symlink-preserving copy of the worktree path
542 + . config: refactor include_by_gitdir() into include_by_path()
543
544 The '[includeIf "condition"]' conditional inclusion facility for
545 configuration files has been taught to use the location of the
546 worktree in its condition.
547
657 - Waiting for response(s) to review comment(s).
658 - cf. <akeW4yFC8uuu2o8a@pks.im>
659 - cf. <CAC1kPDNBecLbmZwjfR5-CsNheF3rcbZ5=SQ+cwjzpFMjFr9KGQ@mail.gmail.com>
660 - source: <20260703-includeif-worktree-v6-0-a13893ad9a7f@black-desk.cn>
548 + Needs review.
549 + cf. <ak9zWopOWpRVHmmS@pks.im>
550 + cf. <xmqqzezzkibu.fsf@gitster.g>
551 + source: <20260709-includeif-worktree-v7-0-e87e705e8df6@black-desk.cn>
552
553
554 * kk/commit-reach-find-all-fix (2026-06-29) 2 commits
@@ -665,12 +556,12 @@ Release tarballs are available at:
556 - t6600: add test for merge-base early exit with clock skew
557
558 The early-exit optimization in 'paint_down_to_common()' has been gated
668 - on the queue being generation-ordered, fixing a bug where 'git merge-
669 - base' (without '--all') could return incorrect results on repositories
670 - with v1 commit graphs and clock skew.
559 + on the queue being generation-ordered. This fixes a bug where 'git
560 + merge-base' (without '--all') could return incorrect results on
561 + repositories with v1 commit graphs and clock skew.
562
672 - Comments?
673 - cf. <xmqqa4sdw55v.fsf@gitster.g>
563 + Will merge to 'next'.
564 + cf. <xmqqjyr5v1gu.fsf@gitster.g>
565 source: <pull.2162.git.1782739162.gitgitgadget@gmail.com>
566
567
@@ -701,7 +592,7 @@ Release tarballs are available at:
592 source: <20260630063944.GA3733670@coredump.intra.peff.net>
593
594
704 -* ps/setup-split-discovery-and-setup (2026-06-30) 16 commits
595 +* ps/setup-split-discovery-and-setup (2026-07-07) 16 commits
596 - setup: mark `set_git_work_tree()` as file-local
597 - setup: pass worktree to `init_db()`
598 - setup: drop redundant configuration of `startup_info->have_repository`
@@ -726,9 +617,9 @@ Release tarballs are available at:
617 repository configuration to initialize the repository, paving the way
618 for clean unification of repository configuration.
619
729 - Needs review.
730 - (a newer iteration v2 exists as <20260707-pks-setup-split-discovery-and-setup-v2-0-aab372cd227c@pks.im>)
731 - source: <20260630-pks-setup-split-discovery-and-setup-v1-0-13864eb5a032@pks.im>
620 + Will merge to 'next'.
621 + cf. <87h5m9om0j.fsf@emacs.iotcl.com>
622 + source: <20260707-pks-setup-split-discovery-and-setup-v2-0-aab372cd227c@pks.im>
623
624
625 * pw/rebase-drop-notes-with-commit (2026-06-30) 15 commits
@@ -759,50 +650,54 @@ Release tarballs are available at:
650
651
652 * jk/bloom-leak-fixes (2026-06-30) 3 commits
762 - - line-log: drop extra copy of range with bloom filters
763 - - revision: avoid leaking bloom keyvecs with multiple traversals
764 - - bloom: make bloom-filter slab initialization idempotent
653 + (merged to 'next' on 2026-07-08 at 3b9a1cda3f)
654 + + line-log: drop extra copy of range with bloom filters
655 + + revision: avoid leaking bloom keyvecs with multiple traversals
656 + + bloom: make bloom-filter slab initialization idempotent
657
658 Various memory leaks in the Bloom-filter code paths that are exposed
659 when running tests with the 'GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1'
660 environment variable have been plugged.
661
770 - Will merge to 'next'.
662 + Will merge to 'master'.
663 cf. <b641aed4-ad52-477b-b1d8-9d8e470be46f@gmail.com>
664 cf. <xmqqo6gqobrt.fsf@gitster.g>
665 source: <20260701063538.GA2579765@coredump.intra.peff.net>
666
667
668 * js/ci-dockerized-pid-limit (2026-07-04) 1 commit
777 - - ci(dockerized): raise the PID limit for private repositories
669 + (merged to 'next' on 2026-07-09 at cd80e673a5)
670 + + ci(dockerized): raise the PID limit for private repositories
671
672 Dockerized CI jobs running in private GitHub repositories have been
673 adjusted to use explicit process and file limits, preventing resource
674 exhaustion errors on private runners.
675
783 - Will merge to 'next'.
676 + Will merge to 'master'.
677 cf. <xmqqh5medmzh.fsf@gitster.g>
678 source: <pull.2164.v2.git.1783155124926.gitgitgadget@gmail.com>
679
680
681 * js/coverity-fixes (2026-07-05) 12 commits
789 - - mingw: make `exit_process()` own the process handle on all paths
790 - - fsmonitor: plug token-data leak on early daemon-startup failures
791 - - reftable/table: release filter on error path
792 - - imap-send: avoid leaking the IMAP upload buffer
793 - - worktree: fix resource leaks when branch creation fails
794 - - submodule: fix cwd leak in `get_superproject_working_tree()`
795 - - dir: free allocations on parse-error paths in `read_one_dir()`
796 - - line-log: avoid redundant copy that leaks in process_ranges
797 - - run-command: avoid `close(-1)` in `start_command()` error paths
798 - - download_https_uri_to_file(): do not leak fd upon failure
799 - - loose: avoid closing invalid fd on error path
800 - - load_one_loose_object_map(): fix resource leak
682 + (merged to 'next' on 2026-07-09 at 1823fe297c)
683 + + mingw: make `exit_process()` own the process handle on all paths
684 + + fsmonitor: plug token-data leak on early daemon-startup failures
685 + + reftable/table: release filter on error path
686 + + imap-send: avoid leaking the IMAP upload buffer
687 + + worktree: fix resource leaks when branch creation fails
688 + + submodule: fix cwd leak in `get_superproject_working_tree()`
689 + + dir: free allocations on parse-error paths in `read_one_dir()`
690 + + line-log: avoid redundant copy that leaks in process_ranges
691 + + run-command: avoid `close(-1)` in `start_command()` error paths
692 + + download_https_uri_to_file(): do not leak fd upon failure
693 + + loose: avoid closing invalid fd on error path
694 + + load_one_loose_object_map(): fix resource leak
695
696 Various resource leaks, invalid file descriptor closures, and process
697 handle ownership issues flagged by Coverity have been fixed.
698
805 - Needs review.
699 + Will merge to 'master'.
700 + cf. <xmqqa4s238lg.fsf@gitster.g>
701 source: <pull.2163.v2.git.1783239870.gitgitgadget@gmail.com>
702
703
@@ -824,7 +719,7 @@ Release tarballs are available at:
719 packs as usual, while a separate cruft pack is written to collect
720 unreachable objects.
721
827 - Expecting a reroll.
722 + Waiting for response(s) to review comment(s).
723 cf. <aj8cOhH6hGVZIFft@nand.local>
724 source: <cover.1782500507.git.me@ttaylorr.com>
725
@@ -854,12 +749,17 @@ Release tarballs are available at:
749 source: <20260624093618.17456-1-antonio.destefani08@gmail.com>
750
751
857 -* jt/receive-pack-use-odb-transactions (2026-06-23) 6 commits
752 +* jt/receive-pack-use-odb-transactions (2026-07-08) 11 commits
753 - builtin/receive-pack: stage incoming objects via ODB transactions
754 + - builtin/receive-pack: drop redundant tmpdir env
755 + - odb/transaction: introduce ODB transaction flags
756 - odb/transaction: add transaction env interface
757 - odb/transaction: propagate commit errors
758 - odb/transaction: propagate begin errors
759 - object-file: propagate files transaction errors
760 + - object-file: drop check for inflight transactions
761 + - object-file: embed transaction flush logic in commit function
762 + - object-file: rename files transaction fsync function
763 - object-file: rename files transaction prepare function
764
765 'git receive-pack' has been refactored to use ODB transaction
@@ -867,26 +767,26 @@ Release tarballs are available at:
767 incoming objects, bringing it closer to being ODB backend agnostic.
768
769 Expecting a reroll.
870 - cf. <aju_AmlKVi5UZaiQ@pks.im>
871 - cf. <akK05yZ6843K8Vdd@denethor>
872 - cf. <akLLB_J-pvJ7iR7c@denethor>
873 - source: <20260624041920.2601961-1-jltobler@gmail.com>
770 + cf. <ak-ntVKQ8XqMr6zv@denethor>
771 + source: <20260708235925.3992097-1-jltobler@gmail.com>
772
773
774 * ps/odb-drop-whence (2026-07-02) 7 commits
877 - - odb: document object info fields
878 - - odb: drop `whence` field from object info
879 - - treewide: convert users of `whence` to the new source field
880 - - odb: add `source` field to struct object_info_source
881 - - odb: make backend-specific fields optional
882 - - packfile: thread odb_source_packed through packed_object_info()
883 - - Merge branch 'ps/odb-source-packed' into ps/odb-drop-whence
884 -
885 - The 'whence' field in 'struct object_info' has been removed,
886 - refactoring backend-specific object information retrieval into an opt-
887 - in 'struct object_info_source' structure.
775 + (merged to 'next' on 2026-07-08 at f43ee51cc3)
776 + + odb: document object info fields
777 + + odb: drop `whence` field from object info
778 + + treewide: convert users of `whence` to the new source field
779 + + odb: add `source` field to struct object_info_source
780 + + odb: make backend-specific fields optional
781 + + packfile: thread odb_source_packed through packed_object_info()
782 + + Merge branch 'ps/odb-source-packed' into ps/odb-drop-whence
783 + (this branch is used by ps/odb-for-each-object-filter.)
784 +
785 + The 'whence' field in 'struct object_info' has been removed. The
786 + backend-specific object information retrieval has been refactored into
787 + an opt-in 'struct object_info_source' structure.
788
889 - Will merge to 'next'.
789 + Will merge to 'master'.
790 cf. <xmqqv7b0rmt6.fsf@gitster.g>
791 source: <20260702-b4-pks-odb-drop-whence-v2-0-b0af7468ad95@pks.im>
792
@@ -909,7 +809,8 @@ Release tarballs are available at:
809 fixing out-of-bounds writes, out-of-bounds reads, and abort calls
810 during parsing.
811
912 - Needs review.
812 + Will merge to 'next'?
813 + cf. <877bn5obz9.fsf@emacs.iotcl.com>
814 source: <20260703-pks-reftable-hardening-v3-0-b87c555b9920@pks.im>
815
816
@@ -939,38 +840,23 @@ Release tarballs are available at:
840 source: <xmqqmrwdxrat.fsf@gitster.g>
841
842
942 -* ty/migrate-excludes-file (2026-07-01) 1 commit
843 +* ty/migrate-excludes-file (2026-07-09) 9 commits
844 + - environment: move object_creation_mode into repo_config_values
845 + - environment: move autorebase into repo_config_values
846 + - environment: move push_default into repo_config_values
847 + - environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
848 + - environment: move askpass_program into repo_config_values
849 + - environment: move pager_program into repo_config_values
850 + - environment: move editor_program into repo_config_values
851 - environment: move excludes_file into repo_config_values
852 + - repository: introduce repo_config_values_clear()
853
854 The 'excludes_file' and various other global configuration variables
855 (including 'editor_program', 'pager_program', 'askpass_program', and
856 'push_default') have been migrated into the per-repository structure.
857
949 - Waiting for response(s) to review comment(s).
950 - (a newer iteration v7 exists as <20260706142530.3681520-1-cat@malon.dev>)
951 - cf. <xmqqpl10auhw.fsf@gitster.g>
952 - source: <20260701180813.776173-2-cat@malon.dev>
953 -
954 -
955 -* kk/merge-base-exhaustion (2026-07-01) 10 commits
956 - . commit-reach: remove commit-date ordering fallback
957 - . commit-reach: move min_generation check into paint_queue_get()
958 - . commit-reach: terminate merge-base walk when one paint side is exhausted
959 - . commit-reach: introduce struct paint_state with per-side counters
960 - . t6600: add clock-skew topologies and step counts for edge cases
961 - . commit-reach: add trace2 instrumentation to paint_down_to_common()
962 - . t6099, t6600: add side-exhaustion regression tests
963 - . t6600: add test cases for side-exhaustion edge cases
964 - . test-lib-functions: improve diagnostic output for trace2 data assertions
965 - . Documentation/technical: add paint-down-to-common doc
966 -
967 - The merge-base computation has been optimized by stopping the walk
968 - early when one side's exclusive commits in the queue are exhausted,
969 - yielding significant speedups for queries with one-sided histories.
970 -
971 - Expecting a reroll.
972 - cf. <CAL71e4PgcZDK-gJziJa_yjEqX9TE+PFMwZn0xbjAUzuUDDDBYA@mail.gmail.com>
973 - source: <pull.2149.v5.git.1782923832.gitgitgadget@gmail.com>
858 + Needs review.
859 + source: <20260709161145.13349-1-cat@malon.dev>
860
861
862 * dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
@@ -995,7 +881,7 @@ Release tarballs are available at:
881 directory to clean up the top-level directory and clearly separate
882 library code.
883
998 - Comments?
884 + Needs review.
885 cf. <akX1TMoRr87Id8Ss@pks.im>
886 source: <20260701-pks-libgit-in-subdir-v3-0-5e4860056094@pks.im>
887
@@ -1063,17 +949,19 @@ Release tarballs are available at:
949
950
951 * ps/refs-writing-subcommands (2026-07-06) 5 commits
1066 - - builtin/refs: add "rename" subcommand
1067 - - builtin/refs: add "create" subcommand
1068 - - builtin/refs: add "update" subcommand
1069 - - builtin/refs: add "delete" subcommand
1070 - - builtin/refs: drop `the_repository`
952 + (merged to 'next' on 2026-07-08 at f001147283)
953 + + builtin/refs: add "rename" subcommand
954 + + builtin/refs: add "create" subcommand
955 + + builtin/refs: add "update" subcommand
956 + + builtin/refs: add "delete" subcommand
957 + + builtin/refs: drop `the_repository`
958 + (this branch is used by ps/refs-wo-the-repository.)
959
960 The 'git refs' toolbox has been extended with new 'create', 'delete',
961 'update', and 'rename' subcommands to create, delete, update, and
962 rename references, respectively.
963
1076 - Will merge to 'next'.
964 + Will merge to 'master'.
965 source: <20260706-pks-refs-writing-subcommands-v4-0-d51f6ce7f830@pks.im>
966
967
@@ -1084,7 +972,7 @@ Release tarballs are available at:
972 trim irrelevant quoted text when replying to review comments, matching
973 the existing advice given to reviewers.
974
1087 - Comments?
975 + Will merge to 'next'?
976 cf. <xmqqcxxwljue.fsf@gitster.g>
977 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>
978
@@ -1100,7 +988,7 @@ Release tarballs are available at:
988 exclusion logic incorrectly skipped packs from layers above the
989 selected base, breaking reachability closure for bitmaps.
990
1103 - Comments?
991 + Needs review.
992 source: <cover.1781294771.git.me@ttaylorr.com>
993
994
@@ -1118,7 +1006,8 @@ Release tarballs are available at:
1006 been introduced to detect and prevent new bare 'grep' assertions from
1007 being added to the test suite.
1008
1121 - Needs review.
1009 + Will merge to 'next'.
1010 + cf. <xmqqtsqedxmt.fsf@gitster.g>
1011 source: <pull.2135.v4.git.1783314119.gitgitgadget@gmail.com>
1012
1013
@@ -1126,6 +1015,7 @@ Release tarballs are available at:
1015 (merged to 'next' on 2026-07-06 at aa748c4564)
1016 + prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
1017 + prio-queue: rename .nr to .nr_ and add accessor helpers
1018 + (this branch is used by kk/prio-queue-cascade-sift.)
1019
1020 The lazy priority queue optimization pattern (deferring actual removal
1021 in 'prio_queue_get()' to allow get+put fusion) has been folded
@@ -1148,23 +1038,24 @@ Release tarballs are available at:
1038 connectivity checks across many candidate refs with shared
1039 history.
1040
1151 - Comments?
1041 + Needs review.
1042 cf. <xmqqqzlpulkp.fsf@gitster.g>
1043 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>
1044
1045
1156 -* tc/replay-linearize (2026-07-02) 3 commits
1157 - - replay: offer an option to linearize the commit topology
1158 - - replay: resolve the replay base outside pick_regular_commit()
1159 - - replay: add helper to put entry into replayed_commits
1046 +* tc/replay-linearize (2026-07-07) 3 commits
1047 + (merged to 'next' on 2026-07-09 at 371c2e9c3b)
1048 + + replay: offer an option to linearize the commit topology
1049 + + replay: resolve the replay base outside pick_regular_commit()
1050 + + replay: add helper to put entry into replayed_commits
1051
1052 The 'git replay' command has been taught the '--linearize' option to
1053 drop merge commits and linearize the replayed history, mimicking 'git
1054 rebase --no-rebase-merges'.
1055
1165 - Waiting for response(s) to review comment(s).
1166 - cf. <xmqqbjcnhjvk.fsf@gitster.g>
1167 - source: <20260702-toon-git-replay-drop-merges-v6-0-78a07cdd0382@iotcl.com>
1056 + Will merge to 'master'.
1057 + cf. <xmqq5x2qz42z.fsf@gitster.g>
1058 + source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com>
1059
1060
1061 * ps/cat-file-remote-object-info (2026-07-01) 13 commits
@@ -1190,23 +1081,10 @@ Release tarballs are available at:
1081 returning empty strings for inapplicable or unsupported fields.
1082
1083 Expecting a reroll.
1193 - cf. <CAN5EUNTYeDrQMor29eYMhJD0jcdRQq36ZA6BgupV8gG9xs9rFQ@mail.gmail.com>
1084 + cf. <CAN5EUNQ=2qtKXSJvxQiNLYqx0N0m6sfyBGLLXm4FB1kwtOsdbQ@mail.gmail.com>
1085 source: <20260701-ps-eric-work-rebase-v15-0-c88a43b63917@gmail.com>
1086
1087
1197 -* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
1198 - - rebase: skip branch symref aliases
1199 -
1200 - 'git rebase --update-refs' has been taught to resolve local branch
1201 - symrefs to their referents before queuing updates, ensuring aliases of
1202 - the current branch are skipped and duplicate updates are avoided to
1203 - prevent failures when branch aliases are present.
1204 -
1205 - Waiting for response(s) to review comment(s) for too long, stalled.
1206 - cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
1207 - source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>
1208 -
1209 -
1088 * mm/diff-process-hunks (2026-06-14) 6 commits
1089 - blame: consult diff process for no-hunk detection
1090 - diff: bypass diff process with --no-ext-diff and in format-patch
@@ -1235,69 +1113,50 @@ Release tarballs are available at:
1113 configuration) has been migrated into 'repo_config_values' to tie it
1114 to a specific repository instance.
1115
1238 - Comments?
1116 + Needs review.
1117 cf. <xmqqcxx9ukvw.fsf@gitster.g>
1118 source: <20260619162105.648495-1-cat@malon.dev>
1119
1120
1243 -* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
1244 - - prio-queue: use cascade-down for faster extract-min
1121 +* kk/prio-queue-cascade-sift (2026-07-08) 3 commits
1122 + - prio-queue: use cascade for unfused gets
1123 + - prio-queue: extract sift_up() from prio_queue_put()
1124 + - Merge branch 'kk/prio-queue-get-put-fusion' into kk/prio-queue-cascade-sift
1125 + (this branch uses kk/prio-queue-get-put-fusion.)
1126
1127 'prio_queue_get()' has been optimized by using a cascade-down approach
1128 (promoting the smaller child at each level and sifting up the last
1129 element from the leaf vacancy), which halves the number of comparisons
1130 per extract-min operation in the common case.
1131
1251 - On hold, waiting for kk/prio-queue-get-put-fusion to land first.
1252 - cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
1253 - source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>
1132 + Needs review.
1133 + source: <pull.2132.v3.git.1783532989.gitgitgadget@gmail.com>
1134
1135
1136 * ps/history-drop (2026-07-01) 11 commits
1257 - - builtin/history: implement "drop" subcommand
1258 - - builtin/history: split handling of ref updates into two phases
1259 - - replay: expose `replay_result_queue_update()`
1260 - - reset: stop assuming that the caller passes in a clean index
1261 - - reset: allow the caller to specify the current HEAD object
1262 - - reset: introduce ability to skip updating HEAD
1263 - - reset: introduce dry-run mode
1264 - - reset: modernize flags passed to `reset_working_tree()`
1265 - - reset: rename `reset_head()`
1266 - - reset: drop `USE_THE_REPOSITORY_VARIABLE`
1267 - - read-cache: split out function to drop unmerged entries to stage 0
1137 + (merged to 'next' on 2026-07-08 at 6fb84708a4)
1138 + + builtin/history: implement "drop" subcommand
1139 + + builtin/history: split handling of ref updates into two phases
1140 + + replay: expose `replay_result_queue_update()`
1141 + + reset: stop assuming that the caller passes in a clean index
1142 + + reset: allow the caller to specify the current HEAD object
1143 + + reset: introduce ability to skip updating HEAD
1144 + + reset: introduce dry-run mode
1145 + + reset: modernize flags passed to `reset_working_tree()`
1146 + + reset: rename `reset_head()`
1147 + + reset: drop `USE_THE_REPOSITORY_VARIABLE`
1148 + + read-cache: split out function to drop unmerged entries to stage 0
1149
1150 The experimental 'git history' command has been taught a new 'drop'
1151 subcommand to remove a commit and replay its descendants onto its
1152 parent.
1153
1273 - Will merge to 'next'.
1154 + Will merge to 'master'.
1155 cf. <xmqq1pdmprbk.fsf@gitster.g>
1156 cf. <CAP8UFD3OAktVQsLuqBNFH2uhEO31PH8ZF3ZT1ZW8k++XE8YLPw@mail.gmail.com>
1157 source: <20260701-b4-pks-history-drop-v8-0-19b5cdf1facd@pks.im>
1158
1159
1279 -* kh/doc-trailers (2026-06-10) 10 commits
1280 - - doc: interpret-trailers: document comment line treatment
1281 - - doc: interpret-trailers: commit to “trailer block” term
1282 - - doc: interpret-trailers: join new-trailers again
1283 - - doc: interpret-trailers: add key format example
1284 - - doc: interpret-trailers: explain key format
1285 - - doc: interpret-trailers: explain the format after the intro
1286 - - doc: interpret-trailers: not just for commit messages
1287 - - doc: interpret-trailers: use “metadata” in Name as well
1288 - - doc: interpret-trailers: replace “lines” with “metadata”
1289 - - doc: interpret-trailers: stop fixating on RFC 822
1290 -
1291 - Documentation for 'git interpret-trailers' has been updated to explain
1292 - the format of trailer keys (alphanumeric characters and hyphens),
1293 - replace outdated terminology, define key terms upfront, and document
1294 - how comment lines in the input are treated.
1295 -
1296 - Expecting a reroll.
1297 - cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
1298 - source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>
1299 -
1300 -
1160 * za/completion-hide-dotfiles (2026-06-20) 2 commits
1161 - completion: hide dotfiles by default for path completion
1162 - completion: hide dotfiles for selected path completion
@@ -1319,7 +1178,7 @@ Release tarballs are available at:
1178 message from outside the editor has been added for all 'git commit
1179 --fixup' variations.
1180
1322 - Comments?
1181 + Needs review.
1182 source: <cover.1779792311.git.erik@cervined.in>
1183
1184
@@ -1332,7 +1191,8 @@ Release tarballs are available at:
1191 Documentation for 'git replay' has been updated to refer to its
1192 configuration variables.
1193
1335 - Comments?
1194 + Waiting for response(s) to review comment(s).
1195 + cf. <87cxwxofgv.fsf@emacs.iotcl.com>
1196 source: <V3_CV_doc_replay_config.780@msgid.xyz>
1197
1198
@@ -1346,8 +1206,8 @@ Release tarballs are available at:
1206 - branch: add --forked filter for --list mode
1207
1208 The 'git branch' command has been taught the '--delete-merged' option
1349 - to remove local branches that have already been merged to the remote-
1350 - tracking branches they track.
1209 + to remove local branches that are already merged to their tracked
1210 + remote-tracking branches.
1211
1212 Needs review.
1213 source: <pull.2285.v18.git.git.1782338106.gitgitgadget@gmail.com>
@@ -1360,7 +1220,7 @@ Release tarballs are available at:
1220 The 'git checkout --track=...' command has been taught to optionally
1221 fetch the branch from the remote the new branch will work with.
1222
1363 - Comments?
1223 + Waiting for response(s) to review comment(s).
1224 cf. <xmqq5x37h6fj.fsf@gitster.g>
1225 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>
1226
@@ -1378,3 +1238,24 @@ Release tarballs are available at:
1238 Expecting a reroll.
1239 cf. <CAN5EUNQoLtJ9cGwe8RNJTTdngM=qoak2=5F+yc7TH94TmQn7uw@mail.gmail.com>
1240 source: <20260704-ps-pre-commit-indent-v7-0-a94706cc8376@gmail.com>
1241 +
1242 +
1243 +* kk/merge-base-exhaustion (2026-07-01) 10 commits
1244 + . commit-reach: remove commit-date ordering fallback
1245 + . commit-reach: move min_generation check into paint_queue_get()
1246 + . commit-reach: terminate merge-base walk when one paint side is exhausted
1247 + . commit-reach: introduce struct paint_state with per-side counters
1248 + . t6600: add clock-skew topologies and step counts for edge cases
1249 + . commit-reach: add trace2 instrumentation to paint_down_to_common()
1250 + . t6099, t6600: add side-exhaustion regression tests
1251 + . t6600: add test cases for side-exhaustion edge cases
1252 + . test-lib-functions: improve diagnostic output for trace2 data assertions
1253 + . Documentation/technical: add paint-down-to-common doc
1254 +
1255 + The merge-base computation has been optimized by stopping the walk
1256 + early when one side's exclusive commits in the queue are exhausted,
1257 + yielding significant speedups for queries with one-sided histories.
1258 +
1259 + Expecting a reroll.
1260 + cf. <CAL71e4PgcZDK-gJziJa_yjEqX9TE+PFMwZn0xbjAUzuUDDDBYA@mail.gmail.com>
1261 + source: <pull.2149.v5.git.1782923832.gitgitgadget@gmail.com>