What's cooking (2026/04 #04)

Junio C Hamano committed Apr 13, 2026 at 15:25 UTC 5e61877677909619127c7de390b68f662058b647
1 file changed +306 -320
whats-cooking.txt
+306 -320
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 -Subject: What's cooking in git.git (Apr 2026, #03)
3 -X-master-at: 2b39a27d40682c09ac1c031f099ee602061597cd
4 -X-next-at: 66d5323bbc44eb35dc937110f5cd0e9539e24623
2 +Subject: What's cooking in git.git (Apr 2026, #04)
3 +X-master-at: 9e8f4e9c04e3efa494e78b710e0c5f6cc77a0a5e
4 +X-next-at: 96b250ada0479af53128b98c3cfefe452196b568
5 Bcc: lwn@lwn.net, gitster@pobox.com
6
7 -What's cooking in git.git (Apr 2026, #03)
7 +What's cooking in git.git (Apr 2026, #04)
8 -----------------------------------------
9
10 Here are the topics that have been cooking in my tree. Commits
@@ -17,8 +17,6 @@ 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 -Git 2.54-rc1 has been tagged. Let's see how solid this is ;-)
21 -
20 Copies of the source code to Git live in many repositories, and the
21 following is a list of the ones I push into or their mirrors. Some
22 repositories have only a subset of branches.
@@ -48,129 +46,163 @@ Release tarballs are available at:
46 https://www.kernel.org/pub/software/scm/git/
47
48 --------------------------------------------------
51 -[Graduated to 'master']
52 -
53 -* jc/whitespace-incomplete-line (2026-03-17) 1 commit
54 - (merged to 'next' on 2026-04-01 at 10a4d95236)
55 - + apply: fix new-style empty context line triggering incomplete-line check
56 -
57 - Fix whitespace correction for new-style empty context lines.
58 - source: <xmqqldfql4hp.fsf@gitster.g>
49 +[New Topics]
50
51 +* sp/refs-reduce-the-repository (2026-04-04) 3 commits
52 + (merged to 'next' on 2026-04-09 at bb1d626802)
53 + + refs/reftable-backend: drop uses of the_repository
54 + + refs: remove the_hash_algo global state
55 + + refs: add struct repository parameter in get_files_ref_lock_timeout_ms()
56 +
57 + Code clean-up to use the right instance of a repository instance in
58 + calls inside refs subsystem.
59 +
60 + Will cook in 'next'.
61 + source: <20260404135914.61195-1-shreyanshpaliwalcmsmn@gmail.com>
62 +
63 +
64 +* ps/odb-in-memory (2026-04-10) 18 commits
65 + - t/unit-tests: add tests for the in-memory object source
66 + - odb: generic in-memory source
67 + - odb/source-inmemory: stub out remaining functions
68 + - odb/source-inmemory: implement `freshen_object()` callback
69 + - odb/source-inmemory: implement `count_objects()` callback
70 + - odb/source-inmemory: implement `find_abbrev_len()` callback
71 + - odb/source-inmemory: implement `for_each_object()` callback
72 + - odb/source-inmemory: convert to use oidtree
73 + - oidtree: add ability to store data
74 + - cbtree: allow using arbitrary wrapper structures for nodes
75 + - odb/source-inmemory: implement `write_object_stream()` callback
76 + - odb/source-inmemory: implement `write_object()` callback
77 + - odb/source-inmemory: implement `read_object_stream()` callback
78 + - odb/source-inmemory: implement `read_object_info()` callback
79 + - odb: fix unnecessary call to `find_cached_object()`
80 + - odb/source-inmemory: implement `free()` callback
81 + - odb: introduce "in-memory" source
82 + - Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
83 + (this branch uses jt/odb-transaction-write.)
84 +
85 + Add a new odb "in-memory" source that is meant to only hold
86 + tentative objects (like the virtual blob object that represents the
87 + working tree file used by "git blame").
88
61 -* jd/read-cache-trace-wo-the-repository (2026-03-30) 1 commit
62 - (merged to 'next' on 2026-04-01 at 7047e45a6d)
63 - + read-cache: use istate->repo for trace2 logging
89 + Comments?
90 + source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>
91
65 - A handful of inappropriate uses of the_repository have been
66 - rewritten to use the right repository structure instance in the
67 - read-cache.c codepath.
68 - source: <pull.2253.v4.git.git.1774895886678.gitgitgadget@gmail.com>
92
93 +* jc/doc-timestamps-in-stat (2026-04-10) 1 commit
94 + - CodingGuidelines: st_mtimespec vs st_mtim vs st_mtime
95
71 -* jt/fast-import-signed-modes (2026-03-26) 5 commits
72 - (merged to 'next' on 2026-04-01 at bec92be5e9)
73 - + fast-import: add 'abort-if-invalid' mode to '--signed-tags=<mode>'
74 - + fast-import: add 'sign-if-invalid' mode to '--signed-tags=<mode>'
75 - + fast-import: add 'strip-if-invalid' mode to '--signed-tags=<mode>'
76 - + fast-import: add 'abort-if-invalid' mode to '--signed-commits=<mode>'
77 - + fast-export: check for unsupported signing modes earlier
96 + Doc update.
97 + source: <xmqqzf3aofdj.fsf_-_@gitster.g>
98
79 - Handling of signed commits and tags in fast-import has been made more
80 - configurable.
81 - source: <20260326191414.3783974-1-jltobler@gmail.com>
99
100 +* ps/test-set-e-clean (2026-04-13) 12 commits
101 + . t: detect errors outside of test cases
102 + . t9902: fix use of `read` with `set -e`
103 + . t6002: fix use of `expr` with `set -e`
104 + . t1301: don't fail in case setfacl(1) doesn't exist or fails
105 + . t0008: silence error in subshell when using `grep -v`
106 + . t: prepare `test_when_finished ()`/`test_atexit()` for `set -e`
107 + . t: prepare execution of potentially failing commands for `set -e`
108 + . t: prepare conditional test execution for `set -e`
109 + . t: prepare `git config --unset` calls for `set -e`
110 + . t: prepare `stop_git_daemon ()` for `set -e`
111 + . t: prepare `test_must_fail ()` for `set -e`
112 + . t: prepare `test_match_signal ()` calls for `set -e`
113
84 -* mm/line-log-use-standard-diff-output (2026-03-16) 4 commits
85 - (merged to 'next' on 2026-04-01 at 724e6526dc)
86 - + doc: note that -L supports patch formatting and pickaxe options
87 - + t4211: add tests for -L with standard diff options
88 - + line-log: route -L output through the standard diff pipeline
89 - + line-log: fix crash when combined with pickaxe options
114 + The test suite harness and many individual test scripts have been
115 + updated to work correctly when 'set -e' is in effect, which helps
116 + detect misspelled test commands.
117
91 - The way the "git log -L<range>:<file>" feature is bolted onto the
92 - log/diff machinery is being reworked a bit to make the feature
93 - compatible with more diff options, like -S/G.
94 - cf. <xmqqbjg3y8i9.fsf@gitster.g>
95 - source: <pull.2065.v2.git.1773714095.gitgitgadget@gmail.com>
118 + Comments?
119 + source: <20260413-b4-pks-tests-with-set-e-v1-0-5b83763a0e84@pks.im>
120
121 +--------------------------------------------------
122 +[Graduated to 'master']
123
98 -* ps/commit-graph-overflow-fix (2026-03-23) 1 commit
99 - (merged to 'next' on 2026-04-01 at c502054354)
100 - + commit-graph: fix writing generations with dates exceeding 34 bits
124 +* bc/ref-storage-default-doc-update (2026-04-02) 1 commit
125 + (merged to 'next' on 2026-04-09 at 6b423ab8ba)
126 + + docs: correct information about reftable
127
102 - Fix a regression in writing the commit-graph where commits with dates
103 - exceeding 34 bits (beyond year 2514) could cause an underflow and
104 - crash Git during the generation data overflow chunk writing.
105 - source: <20260324-pks-commit-graph-overflow-v2-1-843568cf8780@pks.im>
128 + Doc update.
129 + source: <20260402224241.4104726-1-sandals@crustytoothpaste.net>
130
131
108 -* ps/fsck-wo-the-repository (2026-03-23) 12 commits
109 - (merged to 'next' on 2026-04-01 at 6ab7607f2d)
110 - + builtin/fsck: stop using `the_repository` in error reporting
111 - + builtin/fsck: stop using `the_repository` when marking objects
112 - + builtin/fsck: stop using `the_repository` when checking packed objects
113 - + builtin/fsck: stop using `the_repository` with loose objects
114 - + builtin/fsck: stop using `the_repository` when checking reflogs
115 - + builtin/fsck: stop using `the_repository` when checking refs
116 - + builtin/fsck: stop using `the_repository` when snapshotting refs
117 - + builtin/fsck: fix trivial dependence on `the_repository`
118 - + fsck: drop USE_THE_REPOSITORY
119 - + fsck: store repository in fsck options
120 - + fsck: initialize fsck options via a function
121 - + fetch-pack: move fsck options into function scope
132 +* ds/rev-list-maximal-only-optim (2026-04-06) 3 commits
133 + (merged to 'next' on 2026-04-07 at 7a70817efa)
134 + + rev-list: use reduce_heads() for --maximal-only
135 + + p6011: add perf test for rev-list --maximal-only
136 + + t6600: test --maximal-only and --independent
137
123 - Internals of "git fsck" have been refactored to not depend on the
124 - global `the_repository` variable.
125 - source: <20260323-b4-pks-fsck-without-the-repository-v2-0-e8dc79bca651@pks.im>
138 + "git rev-list --maximal-only" has been optimized by borrowing the
139 + logic used by "git show-branch --independent", which computes the
140 + same kind of information much more efficiently.
141 + source: <pull.2082.git.1775482048.gitgitgadget@gmail.com>
142
143
128 -* ps/receive-pack-updateinstead-in-worktree (2026-03-30) 3 commits
129 - (merged to 'next' on 2026-04-01 at df61eac37b)
130 - + receive-pack: use worktree HEAD for updateInstead
131 - + t5516: clean up cloned and new-wt in denyCurrentBranch and worktrees test
132 - + t5516: test updateInstead with worktree and unborn bare HEAD
144 +* jc/ci-github-actions-use-checkout-v5 (2026-04-13) 1 commit
145 + (merged to 'next' on 2026-04-13 at 9c883467ad)
146 + + CI: bump actions/checkout from 4 to 5 for rust-analysis job
147
134 - The check in "receive-pack" to prevent a checked out branch from
135 - getting updated via updateInstead mechanism has been corrected.
136 - source: <20260330111822.165188-1-pabloosabaterr@gmail.com>
148 + CI dependency updates.
149 + source: <xmqqfr4yhg5v.fsf@gitster.g>
150
151
139 -* rs/history-short-help-fix (2026-04-06) 1 commit
140 - (merged to 'next' on 2026-04-07 at d3d6ef5197)
141 - + history: fix short help for argument of --update-refs
152 +* jc/no-writev-does-not-work (2026-04-09) 5 commits
153 + (merged to 'next' on 2026-04-10 at 779546e6a3)
154 + + writev: retract the topic until we have a better emulation
155 + + Revert "compat/posix: introduce writev(3p) wrapper"
156 + + Revert "wrapper: introduce writev(3p) wrappers"
157 + + Revert "sideband: use writev(3p) to send pktlines"
158 + + Revert "cmake: use writev(3p) wrapper as needed"
159
143 - Glitches in "git history -h" have been corrected.
144 - source: <ff6a940c-39fc-4dbf-a164-7770c7f26a31@web.de>
160 + We used writev() in limited code paths and supplied emulation for
161 + platforms without working writev(), but the emulation was too
162 + faithful to the spec to make the result useless to send even 64kB;
163 + revert the topic and plan to restart the effort later.
164 + source: <xmqqmrzbreav.fsf_-_@gitster.g>
165
166
147 -* sp/add-patch-with-fewer-the-repository (2026-03-17) 1 commit
148 - (merged to 'next' on 2026-04-01 at b9edaddcff)
149 - + add-patch: use repository instance from add_i_state instead of the_repository
167 +* jd/cache-tree-trace-wo-the-repository (2026-03-31) 1 commit
168 + (merged to 'next' on 2026-04-02 at e36937bb5e)
169 + + cache-tree: use index state repository in trace2 calls
170
151 - Reduce dependency on `the_repository` in add-patch.c file.
152 - source: <20260317155230.619378-1-shreyanshpaliwalcmsmn@gmail.com>
171 + Code cleanup.
172 + source: <pull.2259.git.git.1774951373588.gitgitgadget@gmail.com>
173
174
155 -* th/backfill-auto-detect-sparseness-fix (2026-04-04) 1 commit
156 - (merged to 'next' on 2026-04-07 at c47ef7d0f1)
157 - + backfill: auto-detect sparse-checkout from config
175 +* jk/c23-const-preserving-fixes-more (2026-04-03) 13 commits
176 + (merged to 'next' on 2026-04-06 at 9eebe11338)
177 + + git-compat-util: fix CONST_OUTPARAM typo and indentation
178 + (merged to 'next' on 2026-04-02 at b060d988f4)
179 + + refs/files-backend: drop const to fix strchr() warning
180 + + http: drop const to fix strstr() warning
181 + + range-diff: drop const to fix strstr() warnings
182 + + pkt-line: make packet_reader.line non-const
183 + + skip_prefix(): check const match between in and out params
184 + + pseudo-merge: fix disk reads from find_pseudo_merge()
185 + + find_last_dir_sep(): convert inline function to macro
186 + + run-command: explicitly cast away constness when assigning to void
187 + + pager: explicitly cast away strchr() constness
188 + + transport-helper: drop const to fix strchr() warnings
189 + + http: add const to fix strchr() warnings
190 + + convert: add const to fix strchr() warnings
191
159 - "git backfill" is capable of auto-detecting a sparsely checked out
160 - working tree, which was broken.
161 - source: <20260404111557.17220-1-viking4@gmail.com>
192 + Further work to adjust the codebase for C23 that changes functions
193 + like strchr() that discarded constness when they return a pointer into
194 + a const string to preserve constness.
195 + source: <20260402041433.GA3501120@coredump.intra.peff.net>
196 + source: <20260404054211.GA1346444@coredump.intra.peff.net>
197
198
164 -* yc/path-walk-fix-error-reporting (2026-03-20) 1 commit
165 - (merged to 'next' on 2026-04-01 at ddcff8b9c6)
166 - + path-walk: fix NULL pointer dereference in error message
199 +* jk/doc-markup-sub-list-indentation (2026-04-11) 1 commit
200 + (merged to 'next' on 2026-04-13 at 738824c9ca)
201 + + gitglossary: fix indentation of sub-lists
202
168 - The value of a wrong pointer variable was referenced in an error
169 - message that reported that it shouldn't be NULL.
170 - source: <20260320114823.3151961-1-ysinghcin@gmail.com>
203 + Doc mark-up update for entries in the glossary with bulleted lists.
204 + source: <20260411215518.GA1651019@coredump.intra.peff.net>
205
172 ---------------------------------------------------
173 -[New Topics]
206
207 * jt/index-fd-wo-repo-regression-fix-maint (2026-04-07) 1 commit
208 + object-file: avoid ODB transaction when not writing objects
@@ -179,18 +211,92 @@ Release tarballs are available at:
211 During Git 2.52 timeframe, we broke streaming computation of object
212 hash outside a repository, which has been corrected.
213
182 - Will merge to 'master'.
214
215 +* kh/doc-am-xref (2026-04-11) 2 commits
216 + (merged to 'next' on 2026-04-13 at 400039b45c)
217 + + doc: am: correct to full --no-message-id
218 + + doc: am: revert Message-ID trailer claim
219
185 -* jt/index-fd-wo-repo-regression-fix (2026-04-07) 1 commit
186 - (merged to 'next' on 2026-04-07 at 7339897c7c)
187 - + Merge branch 'jt/index-fd-wo-repo-regression-fix-maint' into HEAD
188 - (this branch uses jt/index-fd-wo-repo-regression-fix-maint.)
220 + Doc update.
221 + source: <msg-id_is_not_trailer.570@msgid.xyz>
222 + source: <typo_--no-message-id.572@msgid.xyz>
223 +
224 +
225 +* kh/doc-config-list (2026-04-05) 2 commits
226 + (merged to 'next' on 2026-04-07 at fb95f091cc)
227 + + doc: gitcvs-migration: rephrase “man page”
228 + + doc: replace git config --list/-l with `list`
229 +
230 + "git config list" is the official way to spell "git config -l" and
231 + "git config --list". Use it to update the documentation.
232 + source: <V2_CV_doc_deprecation_config_--list.569@msgid.xyz>
233
190 - During Git 2.52 timeframe, we broke streaming computation of object
191 - hash outside a repository, which has been corrected.
234
193 - Will merge to 'master'.
235 +* ng/add-files-to-cache-wo-rename (2026-04-01) 1 commit
236 + (merged to 'next' on 2026-04-02 at 8723880fc0)
237 + + read-cache: disable renames in add_files_to_cache
238 +
239 + add_files_to_cache() used diff_files() to detect only the paths that
240 + are different between the index and the working tree and add them,
241 + which does not need rename detection, which interfered with unnecessary
242 + conflicts.
243 + source: <20260401190033.11325-1-blindmansion@gmail.com>
244 +
245 +
246 +* ps/archive-prefix-doc (2026-04-08) 1 commit
247 + (merged to 'next' on 2026-04-09 at ed6aa0e448)
248 + + archive: document --prefix handling of absolute and parent paths
249 +
250 + Doc update.
251 + source: <20260408160005.193621-2-pushkarkumarsingh1970@gmail.com>
252 +
253 +
254 +* ps/odb-cleanup (2026-03-31) 7 commits
255 + (merged to 'next' on 2026-04-02 at 1dd8236dfb)
256 + + odb: drop unneeded headers and forward decls
257 + + odb: rename `odb_has_object()` flags
258 + + odb: use enum for `odb_write_object` flags
259 + + odb: rename `odb_write_object()` flags
260 + + treewide: use enum for `odb_for_each_object()` flags
261 + + CodingGuidelines: document our style for flags
262 + + Merge branch 'ps/odb-generic-object-name-handling' into ps/odb-cleanup
263 + (this branch is used by ps/odb-in-memory)
264 +
265 + Various code clean-up around odb subsystem.
266 + source: <20260401-pks-odb-cleanups-v1-0-89adba9ada68@pks.im>
267 +
268 +
269 +* ps/reftable-portability (2026-04-02) 5 commits
270 + (merged to 'next' on 2026-04-02 at 04adce37b9)
271 + + reftable/system: add abstraction to mmap files
272 + + reftable/system: add abstraction to retrieve time in milliseconds
273 + + reftable/fsck: use REFTABLE_UNUSED instead of UNUSED
274 + + reftable/stack: provide fsync(3p) via system header
275 + + reftable: introduce "reftable-system.h" header
276 +
277 + Update reftable library part with what is used in libgit2 to improve
278 + portability to different target codebases and platforms.
279 + source: <20260402-pks-reftable-portability-fixes-v2-0-bc110cee0ae0@pks.im>
280 +
281 +
282 +* ss/t7004-unhide-git-failures (2026-03-31) 1 commit
283 + (merged to 'next' on 2026-04-02 at fec00b153f)
284 + + t7004: replace wc -l with modern test helpers
285 +
286 + Test clean-up.
287 + source: <20260401062029.54757-1-r.siddharth.shrimali@gmail.com>
288 +
289 +
290 +* tc/replay-ref (2026-04-01) 4 commits
291 + (merged to 'next' on 2026-04-03 at 196ecde80b)
292 + + replay: allow to specify a ref with option --ref
293 + + replay: use stuck form in documentation and help message
294 + + builtin/replay: mark options as not negatable
295 + + Merge branch 'sa/replay-revert' into tc/replay-ref
296 +
297 + The experimental `git replay` command learned the `--ref=<ref>` option
298 + to allow specifying which ref to update, overriding the default behavior.
299 + source: <20260401-toon-replay-arbitrary-ref-v3-0-a0b4fabb34b3@iotcl.com>
300
301 --------------------------------------------------
302 [Cooking]
@@ -249,17 +355,17 @@ Release tarballs are available at:
355 source: <20260403-includeif-worktree-v3-0-109ce5782b03@black-desk.cn>
356
357
252 -* bc/rust-by-default-in-2.54 (2026-04-02) 4 commits
358 +* bc/rust-by-default (2026-04-09) 4 commits
359 - Enable Rust by default
360 - Linux: link against libdl
361 - ci: install cargo on Alpine
362 - docs: update version with default Rust support
363
364 Rust support is enabled by default (but still allows opting out) in
259 - Git 2.54.
365 + some future version of Git.
366
261 - Will merge to 'next' after Git 2.53 final gets tagged.
262 - source: <20260403011249.4133372-1-sandals@crustytoothpaste.net>
367 + Will merge to 'next' after Git 2.54 final gets tagged.
368 + source: <20260409224434.1861422-1-sandals@crustytoothpaste.net>
369
370
371 * ps/shift-root-in-graph (2026-04-04) 1 commit
@@ -296,69 +402,46 @@ Release tarballs are available at:
402
403
404 * dl/cache-tree-fully-valid-fix (2026-04-06) 1 commit
299 - - cache-tree: fix inverted object existence check in cache_tree_fully_valid
405 + (merged to 'next' on 2026-04-13 at 68c82a9f37)
406 + + cache-tree: fix inverted object existence check in cache_tree_fully_valid
407
408 The check that implements the logic to see if an in-core cache-tree
409 is fully ready to write out a tree object was broken, which has
410 been corrected.
411
305 - Will merge to 'next'?
412 + Will cook in 'next'.
413 source: <20260406192711.68870-1-davidlin@stripe.com>
414
415
309 -* ds/rev-list-maximal-only-optim (2026-04-06) 3 commits
310 - (merged to 'next' on 2026-04-07 at 7a70817efa)
311 - + rev-list: use reduce_heads() for --maximal-only
312 - + p6011: add perf test for rev-list --maximal-only
313 - + t6600: test --maximal-only and --independent
314 -
315 - "git rev-list --maximal-only" has been optimized by borrowing the
316 - logic used by "git show-branch --independent", which computes the
317 - same kind of information much more efficiently.
318 -
319 - Will merge to 'master'.
320 - source: <pull.2082.git.1775482048.gitgitgadget@gmail.com>
321 -
322 -
416 * ja/doc-difftool-synopsis-style (2026-04-04) 4 commits
324 - - doc: convert git-describe manual page to synopsis style
325 - - doc: convert git-shortlog manual page to synopsis style
326 - - doc: convert git-range-diff manual page to synopsis style
327 - - doc: convert git-difftool manual page to synopsis style
417 + (merged to 'next' on 2026-04-13 at 0e6c98f313)
418 + + doc: convert git-describe manual page to synopsis style
419 + + doc: convert git-shortlog manual page to synopsis style
420 + + doc: convert git-range-diff manual page to synopsis style
421 + + doc: convert git-difftool manual page to synopsis style
422
423 Doc mark-up updates.
424
331 - Will merge to 'next'?
425 + Will cook in 'next'.
426 source: <pull.2077.git.1775322767.gitgitgadget@gmail.com>
427
428
335 -* kh/doc-config-list (2026-04-05) 2 commits
336 - (merged to 'next' on 2026-04-07 at fb95f091cc)
337 - + doc: gitcvs-migration: rephrase “man page”
338 - + doc: replace git config --list/-l with `list`
339 -
340 - "git config list" is the official way to spell "git config -l" and
341 - "git config --list". Use it to update the documentation.
342 -
343 - Will merge to 'master'.
344 - source: <V2_CV_doc_deprecation_config_--list.569@msgid.xyz>
345 -
346 -
347 -* lp/repack-propagate-promisor-debugging-info (2026-04-06) 6 commits
348 - . SQUASH???
349 - . t7703: test for promisor file content after geometric repack
350 - . t7700: test for promisor file content after repack
351 - . repack-promisor: preserve content of promisor files after repack
352 - . pack-write: add helper to fill promisor file after repack
353 - . pack-write: add explanation to promisor file content
429 +* lp/repack-propagate-promisor-debugging-info (2026-04-10) 7 commits
430 + - SQUASH???
431 + - repack-promisor: add missing headers
432 + - t7703: test for promisor file content after geometric repack
433 + - t7700: test for promisor file content after repack
434 + - repack-promisor: preserve content of promisor files after repack
435 + - repack-promisor add helper to fill promisor file after repack
436 + - pack-write: add explanation to promisor file content
437
438 When fetching objects into a lazily cloned repository, .promisor
439 files are created with information meant to help debugging. "git
440 repack" has been taught to carry this information forward to
441 packfiles that are newly created.
442
360 - Expecting a reroll.
361 - source: <cover.1775431990.git.lorenzo.pegorari2002@gmail.com>
443 + Waiting for a review response on use of parse_pack_index()
444 + source: <cover.1775861047.git.lorenzo.pegorari2002@gmail.com>
445
446
447 * th/promisor-quiet-per-repo (2026-04-06) 1 commit
@@ -376,6 +459,7 @@ Release tarballs are available at:
459 - odb: update `struct odb_write_stream` read() callback
460 - odb/transaction: use pluggable `begin_transaction()`
461 - odb: split `struct odb_transaction` into separate header
462 + (this branch is used by ps/odb-in-memory.)
463
464 ODB transaction interface is being reworked to explicitly handle
465 object writes.
@@ -384,97 +468,6 @@ Release tarballs are available at:
468 source: <20260402213220.2651523-1-jltobler@gmail.com>
469
470
387 -* jd/cache-tree-trace-wo-the-repository (2026-03-31) 1 commit
388 - (merged to 'next' on 2026-04-02 at e36937bb5e)
389 - + cache-tree: use index state repository in trace2 calls
390 -
391 - Code cleanup.
392 -
393 - Will merge to 'master'.
394 - source: <pull.2259.git.git.1774951373588.gitgitgadget@gmail.com>
395 -
396 -
397 -* ps/reftable-portability (2026-04-02) 5 commits
398 - (merged to 'next' on 2026-04-02 at 04adce37b9)
399 - + reftable/system: add abstraction to mmap files
400 - + reftable/system: add abstraction to retrieve time in milliseconds
401 - + reftable/fsck: use REFTABLE_UNUSED instead of UNUSED
402 - + reftable/stack: provide fsync(3p) via system header
403 - + reftable: introduce "reftable-system.h" header
404 -
405 - Update reftable library part with what is used in libgit2 to improve
406 - portability to different target codebases and platforms.
407 -
408 - Will merge to 'master'.
409 - source: <20260402-pks-reftable-portability-fixes-v2-0-bc110cee0ae0@pks.im>
410 -
411 -
412 -* jk/c23-const-preserving-fixes-more (2026-04-03) 13 commits
413 - (merged to 'next' on 2026-04-06 at 9eebe11338)
414 - + git-compat-util: fix CONST_OUTPARAM typo and indentation
415 - (merged to 'next' on 2026-04-02 at b060d988f4)
416 - + refs/files-backend: drop const to fix strchr() warning
417 - + http: drop const to fix strstr() warning
418 - + range-diff: drop const to fix strstr() warnings
419 - + pkt-line: make packet_reader.line non-const
420 - + skip_prefix(): check const match between in and out params
421 - + pseudo-merge: fix disk reads from find_pseudo_merge()
422 - + find_last_dir_sep(): convert inline function to macro
423 - + run-command: explicitly cast away constness when assigning to void
424 - + pager: explicitly cast away strchr() constness
425 - + transport-helper: drop const to fix strchr() warnings
426 - + http: add const to fix strchr() warnings
427 - + convert: add const to fix strchr() warnings
428 -
429 - Further work to adjust the codebase for C23 that changes functions
430 - like strchr() that discarded constness when they return a pointer into
431 - a const string to preserve constness.
432 -
433 - Will merge to 'master'.
434 - source: <20260402041433.GA3501120@coredump.intra.peff.net>
435 - source: <20260404054211.GA1346444@coredump.intra.peff.net>
436 -
437 -
438 -* ps/odb-cleanup (2026-03-31) 7 commits
439 - (merged to 'next' on 2026-04-02 at 1dd8236dfb)
440 - + odb: drop unneeded headers and forward decls
441 - + odb: rename `odb_has_object()` flags
442 - + odb: use enum for `odb_write_object` flags
443 - + odb: rename `odb_write_object()` flags
444 - + treewide: use enum for `odb_for_each_object()` flags
445 - + CodingGuidelines: document our style for flags
446 - + Merge branch 'ps/odb-generic-object-name-handling' into ps/odb-cleanup
447 - (this branch is used by ps/odb-in-core.)
448 -
449 - Various code clean-up around odb subsystem.
450 -
451 - Will merge to 'master'.
452 - source: <20260401-pks-odb-cleanups-v1-0-89adba9ada68@pks.im>
453 -
454 -
455 -* ss/t7004-unhide-git-failures (2026-03-31) 1 commit
456 - (merged to 'next' on 2026-04-02 at fec00b153f)
457 - + t7004: replace wc -l with modern test helpers
458 -
459 - Test clean-up.
460 -
461 - Will merge to 'master'.
462 - source: <20260401062029.54757-1-r.siddharth.shrimali@gmail.com>
463 -
464 -
465 -* ng/add-files-to-cache-wo-rename (2026-04-01) 1 commit
466 - (merged to 'next' on 2026-04-02 at 8723880fc0)
467 - + read-cache: disable renames in add_files_to_cache
468 -
469 - add_files_to_cache() used diff_files() to detect only the paths that
470 - are different between the index and the working tree and add them,
471 - which does not need rename detection, which interfered with unnecessary
472 - conflicts.
473 -
474 - Will merge to 'master'.
475 - source: <20260401190033.11325-1-blindmansion@gmail.com>
476 -
477 -
471 * sa/cat-file-batch-mailmap-switch (2026-03-31) 1 commit
472 - cat-file: add mailmap subcommand to --batch-command
473
@@ -552,29 +545,21 @@ Release tarballs are available at:
545 source: <20260330-pks-setup-wo-the-repository-v1-0-0d2e822837aa@pks.im>
546
547
555 -* kh/doc-trailers (2026-03-30) 2 commits
548 +* kh/doc-trailers (2026-04-13) 9 commits
549 + - doc: interpret-trailers: document comment line treatment
550 + - doc: interpret-trailers: commit to “trailer block” term
551 + - doc: interpret-trailers: add key format example
552 - doc: interpret-trailers: explain key format
553 + - doc: interpret-trailers: explain the format after the intro
554 + - doc: interpret-trailers: not just for commit messages
555 + - doc: interpret-trailers: use “metadata” in Name as well
556 + - doc: interpret-trailers: replace “lines” with “metadata”
557 - doc: interpret-trailers: stop fixating on RFC 822
558
559 Documentation updates.
560
561 - Expecting a reroll.
562 - cf. <5ba0bbcb-25a7-4ad0-ac1d-c86508eaffdd@app.fastmail.com>
563 - source: <CV_doc_int-tr_key_format.533@msgid.xyz>
564 -
565 -
566 -* tc/replay-ref (2026-04-01) 4 commits
567 - (merged to 'next' on 2026-04-03 at 196ecde80b)
568 - + replay: allow to specify a ref with option --ref
569 - + replay: use stuck form in documentation and help message
570 - + builtin/replay: mark options as not negatable
571 - + Merge branch 'sa/replay-revert' into tc/replay-ref
572 -
573 - The experimental `git replay` command learned the `--ref=<ref>` option
574 - to allow specifying which ref to update, overriding the default behavior.
575 -
576 - Will merge to 'master'.
577 - source: <20260401-toon-replay-arbitrary-ref-v3-0-a0b4fabb34b3@iotcl.com>
561 + Needs review.
562 + source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>
563
564
565 * ps/graph-lane-limit (2026-03-27) 3 commits
@@ -592,21 +577,22 @@ Release tarballs are available at:
577
578
579 * cc/promisor-auto-config-url (2026-04-07) 10 commits
595 - - t5710: use proper file:// URIs for absolute paths
596 - - promisor-remote: remove the 'accepted' strvec
597 - - promisor-remote: keep accepted promisor_info structs alive
598 - - promisor-remote: refactor accept_from_server()
599 - - promisor-remote: refactor has_control_char()
600 - - promisor-remote: refactor should_accept_remote() control flow
601 - - promisor-remote: reject empty name or URL in advertised remote
602 - - promisor-remote: clarify that a remote is ignored
603 - - promisor-remote: pass config entry to all_fields_match() directly
604 - - promisor-remote: try accepted remotes before others in get_direct()
580 + (merged to 'next' on 2026-04-13 at 289fcba081)
581 + + t5710: use proper file:// URIs for absolute paths
582 + + promisor-remote: remove the 'accepted' strvec
583 + + promisor-remote: keep accepted promisor_info structs alive
584 + + promisor-remote: refactor accept_from_server()
585 + + promisor-remote: refactor has_control_char()
586 + + promisor-remote: refactor should_accept_remote() control flow
587 + + promisor-remote: reject empty name or URL in advertised remote
588 + + promisor-remote: clarify that a remote is ignored
589 + + promisor-remote: pass config entry to all_fields_match() directly
590 + + promisor-remote: try accepted remotes before others in get_direct()
591
592 Promisor remote handling has been refactored and fixed in
593 preparation for auto-configuration of advertised remotes.
594
609 - Will merge to 'next'?
595 + Will cook in 'next'.
596 source: <20260407115243.358642-1-christian.couder@gmail.com>
597
598
@@ -635,19 +621,20 @@ Release tarballs are available at:
621 source: <20260325190906.1153080-1-usmanakinyemi202@gmail.com>
622
623
638 -* hn/git-checkout-m-with-stash (2026-03-17) 4 commits
639 - - checkout: -m (--merge) uses autostash when switching branches
640 - - sequencer: teach autostash apply to take optional conflict marker labels
641 - - sequencer: allow create_autostash to run silently
642 - - stash: add --ours-label, --theirs-label, --base-label for apply
624 +* hn/git-checkout-m-with-stash (2026-04-12) 4 commits
625 + (merged to 'next' on 2026-04-13 at b4e5a964fa)
626 + + checkout: -m (--merge) uses autostash when switching branches
627 + + sequencer: teach autostash apply to take optional conflict marker labels
628 + + sequencer: allow create_autostash to run silently
629 + + stash: add --label-ours, --label-theirs, --label-base for apply
630
631 "git checkout -m another-branch" was invented to deal with local
632 changes to paths that are different between the current and the new
633 branch, but it gave only one chance to resolve conflicts. The command
634 was taught to create a stash to save the local changes.
635
649 - Needs review.
650 - source: <pull.2234.v6.git.git.1773740139.gitgitgadget@gmail.com>
636 + Will cook in 'next'.
637 + source: <pull.2234.v10.git.git.1775994705.gitgitgadget@gmail.com>
638
639
640 * kh/name-rev-custom-format (2026-03-20) 2 commits
@@ -749,50 +736,50 @@ Release tarballs are available at:
736 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>
737
738
752 -* pt/fsmonitor-linux (2026-04-07) 14 commits
753 - - SQUASH???
754 - - fsmonitor: convert shown khash to strset in do_handle_client
755 - - fsmonitor: add tests for Linux
756 - - fsmonitor: add timeout to daemon stop command
757 - - fsmonitor: close inherited file descriptors and detach in daemon
758 - - run-command: add close_fd_above_stderr option
759 - - fsmonitor: implement filesystem change listener for Linux
760 - - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
761 - - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
762 - - fsmonitor: use pthread_cond_timedwait for cookie wait
763 - - compat/win32: add pthread_cond_timedwait
764 - - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
765 - - fsmonitor: fix khash memory leak in do_handle_client
766 - - t9210: disable GIT_TEST_SPLIT_INDEX for scalar clone tests
739 +* pt/fsmonitor-linux (2026-04-08) 13 commits
740 + (merged to 'next' on 2026-04-13 at 37fa47889d)
741 + + fsmonitor: convert shown khash to strset in do_handle_client
742 + + fsmonitor: add tests for Linux
743 + + fsmonitor: add timeout to daemon stop command
744 + + fsmonitor: close inherited file descriptors and detach in daemon
745 + + run-command: add close_fd_above_stderr option
746 + + fsmonitor: implement filesystem change listener for Linux
747 + + fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
748 + + fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
749 + + fsmonitor: use pthread_cond_timedwait for cookie wait
750 + + compat/win32: add pthread_cond_timedwait
751 + + fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
752 + + fsmonitor: fix khash memory leak in do_handle_client
753 + + t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests
754
755 The fsmonitor daemon has been implemented for Linux.
756
770 - Expecting a reroll.
771 - cf. <xmqqika24mj0.fsf@gitster.g>
772 - source: <pull.2147.v13.git.git.1775498098.gitgitgadget@gmail.com>
773 -
774 -
775 -* ar/parallel-hooks (2026-04-04) 13 commits
776 - - hook: allow hook.jobs=-1 to use all available CPU cores
777 - - hook: add hook.<event>.enabled switch
778 - - hook: move is_known_hook() to hook.c for wider use
779 - - hook: warn when hook.<friendly-name>.jobs is set
780 - - hook: add per-event jobs config
781 - - hook: add -j/--jobs option to git hook run
782 - - hook: mark non-parallelizable hooks
783 - - hook: allow pre-push parallel execution
784 - - hook: allow parallel hook execution
785 - - hook: parse the hook.jobs config
786 - - config: add a repo_config_get_uint() helper
787 - - repository: fix repo_init() memleak due to missing _clear()
788 - - Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks
757 + Will cook in 'next'.
758 + source: <pull.2147.v14.git.git.1775710775.gitgitgadget@gmail.com>
759
790 - Will merge to 'next'?
791 - source: <20260404082934.173788-1-adrian.ratiu@collabora.com>
760
761 +* ar/parallel-hooks (2026-04-10) 13 commits
762 + (merged to 'next' on 2026-04-13 at 0a6acf0d17)
763 + + t1800: test SIGPIPE with parallel hooks
764 + + hook: allow hook.jobs=-1 to use all available CPU cores
765 + + hook: add hook.<event>.enabled switch
766 + + hook: move is_known_hook() to hook.c for wider use
767 + + hook: warn when hook.<friendly-name>.jobs is set
768 + + hook: add per-event jobs config
769 + + hook: add -j/--jobs option to git hook run
770 + + hook: mark non-parallelizable hooks
771 + + hook: allow pre-push parallel execution
772 + + hook: allow parallel hook execution
773 + + hook: parse the hook.jobs config
774 + + config: add a repo_config_get_uint() helper
775 + + repository: fix repo_init() memleak due to missing _clear()
776
794 -* en/xdiff-cleanup-3 (2026-03-30) 6 commits
795 - - xdiff/xdl_cleanup_records: simplify INVESTIGATE handling for clarity
777 + Will cook in 'next'.
778 + source: <20260410090608.75283-1-adrian.ratiu@collabora.com>
779 +
780 +
781 +* en/xdiff-cleanup-3 (2026-04-08) 6 commits
782 + - xdiff/xdl_cleanup_records: put braces around the else clause
783 - xdiff/xdl_cleanup_records: make setting action easier to follow
784 - xdiff/xdl_cleanup_records: make limits more clear
785 - xdiff/xdl_cleanup_records: use unambiguous types
@@ -802,6 +789,5 @@ Release tarballs are available at:
789
790 Preparation of the xdiff/ codebase to work with Rust.
791
805 - Changes the behaviour without meaning to, which needs fixing.
806 - cf. <87a54698-396d-4de8-bd9d-cd72f8d1e8df@gmail.com>
807 - source: <pull.2156.v4.git.git.1774890003.gitgitgadget@gmail.com>
792 + Will merge to 'next'?
793 + source: <pull.2156.v5.git.git.1775679988.gitgitgadget@gmail.com>