What's cooking (2026/04 #02)
Junio C Hamano committed
Apr 6, 2026 at 17:49 UTC
bf7c1c0dbbcd94d5ae1507462a60979090ff2fc9
1 file changed
+524
-451
whats-cooking.txt
+524
-451
@@ -1,10 +1,10 @@
1
To: git@vger.kernel.org
2
-Subject: What's cooking in git.git (Apr 2026, #01)
3
-X-master-at: cf2139f8e1680b076e115bc0b349e369b4b0ecc4
4
-X-next-at: 189a785ab595218b95d2e09937b96fbd752f5d80
2
+Subject: What's cooking in git.git (Apr 2026, #02)
3
+X-master-at: 1adf5bca8c3cf778103548b9355777cf2d12efdd
4
+X-next-at: 8a42c5b2bca6c482cc906cf4309d6dfe334e569e
5
Bcc: lwn@lwn.net, gitster@pobox.com
6
7
-What's cooking in git.git (Apr 2026, #01)
7
+What's cooking in git.git (Apr 2026, #02)
8
-----------------------------------------
9
10
Here are the topics that have been cooking in my tree. Commits
@@ -48,96 +48,445 @@ Release tarballs are available at:
48
--------------------------------------------------
49
[Graduated to 'master']
50
51
-* bk/t5315-test-path-is-helpers (2026-03-19) 1 commit
52
- (merged to 'next' on 2026-03-24 at f7374e8e70)
53
- + t5315: use test_path_is_file for loose-object check
51
+* aa/reap-transport-child-processes (2026-03-12) 1 commit
52
+ (merged to 'next' on 2026-03-31 at fb77f8ba9e)
53
+ + transport-helper, connect: use clean_on_exit to reap children on abnormal exit
54
55
- Test clean-up.
56
- source: <20260319180803.164335-1-elkhatabibilal@gmail.com>
55
+ A few code paths that spawned child processes for network
56
+ connection weren't wait(2)ing for their children and letting "init"
57
+ reap them instead; they have been tightened.
58
+ cf. <20260325061357.GA3772970@coredump.intra.peff.net>
59
+ source: <20260312214945.4050010-1-cshung@gmail.com>
60
+
61
+
62
+* ar/config-hook-cleanups (2026-03-25) 13 commits
63
+ (merged to 'next' on 2026-03-30 at c128948b16)
64
+ + hook: reject unknown hook names in git-hook(1)
65
+ + hook: show disabled hooks in "git hook list"
66
+ + hook: show config scope in git hook list
67
+ + hook: introduce hook_config_cache_entry for per-hook data
68
+ + t1800: add test to verify hook execution ordering
69
+ + hook: make consistent use of friendly-name in docs
70
+ + hook: replace hook_list_clear() -> string_list_clear_func()
71
+ + hook: detect & emit two more bugs
72
+ + hook: rename cb_data_free/alloc -> hook_data_free/alloc
73
+ + hook: fix minor style issues
74
+ + builtin/receive-pack: properly init receive_hook strbuf
75
+ + hook: move unsorted_string_list_remove() to string-list.[ch]
76
+ + Merge branch 'ar/config-hooks' into ar/config-hook-cleanups
77
+ (this branch is used by ar/parallel-hooks.)
78
79
+ Code clean-up around the recent "hooks defined in config" topic.
80
+ source: <20260325195503.1139418-1-adrian.ratiu@collabora.com>
81
+
82
+
83
+* ds/backfill-revs (2026-03-26) 6 commits
84
+ (merged to 'next' on 2026-03-27 at d4703fdd35)
85
+ + t5620: test backfill's unknown argument handling
86
+ + path-walk: support wildcard pathspecs for blob filtering
87
+ + backfill: work with prefix pathspecs
88
+ + backfill: accept revision arguments
89
+ + t5620: prepare branched repo for revision tests
90
+ + revision: include object-name.h
91
+
92
+ `git backfill` learned to accept revision and pathspec arguments.
93
+ source: <pull.2070.v3.git.1774538094.gitgitgadget@gmail.com>
94
59
-* jc/macos-homebrew-wo-reg-enhanced (2026-03-23) 1 commit
60
- (merged to 'next' on 2026-03-26 at ce92a76711)
61
- + regexp: leave a pointer to resurrect workaround for Homebrew
95
63
- In case homebrew breaks REG_ENHANCED again, leave a in-code comment
64
- to suggest use of our replacement regex as a workaround.
65
- source: <xmqq8qbi5vvx.fsf@gitster.g>
96
+* jk/c23-const-preserving-fixes (2026-03-26) 5 commits
97
+ (merged to 'next' on 2026-03-31 at c813b9b814)
98
+ + config: store allocated string in non-const pointer
99
+ + rev-parse: avoid writing to const string for parent marks
100
+ + revision: avoid writing to const string for parent marks
101
+ + rev-parse: simplify dotdot parsing
102
+ + revision: make handle_dotdot() interface less confusing
103
+
104
+ Adjust the codebase for C23 that changes functions like strchr()
105
+ that discarded constness when they return a pointer into a const
106
+ string to preserve constness.
107
+ source: <20260326190243.GA412983@coredump.intra.peff.net>
108
+ source: <20260326192320.GA418281@coredump.intra.peff.net>
109
+
110
+
111
+* js/cmake-needs-writev-compat-too (2026-04-03) 1 commit
112
+ (merged to 'next' on 2026-04-03 at c0dfe4a67d)
113
+ + cmake: use writev(3p) wrapper as needed
114
+
115
+ Build instruction for recently added writev() compatibility wrapper
116
+ has been also added to cmake.
117
+ source: <pull.2078.git.1775206502134.gitgitgadget@gmail.com>
118
+
119
+
120
+* js/mingw-use-strftime-directly-in-ucrt-build (2026-04-03) 1 commit
121
+ (merged to 'next' on 2026-04-03 at 3ed53e1e28)
122
+ + mingw: use strftime() directly in UCRT builds
123
+
124
+ MinGW build updates.
125
+ source: <pull.2079.git.1775210183103.gitgitgadget@gmail.com>
126
+
127
+
128
+* mf/format-patch-commit-list-format (2026-03-23) 9 commits
129
+ (merged to 'next' on 2026-03-24 at 0f5b6702eb)
130
+ + format-patch: --commit-list-format without prefix
131
+ + format-patch: add preset for --commit-list-format
132
+ + format-patch: wrap generate_commit_list_cover()
133
+ + format.commitListFormat: strip meaning from empty
134
+ + docs/pretty-formats: add %(count) and %(total)
135
+ + format-patch: rename --cover-letter-format option
136
+ + format-patch: refactor generate_commit_list_cover
137
+ + pretty.c: better die message %(count) and %(total)
138
+ + Merge branch 'mf/format-patch-cover-letter-format' into mf/format-patch-commit-list-format
139
+ (this branch is used by mf/format-patch-commit-list-format-doc; uses mf/format-patch-cover-letter-format.)
140
+
141
+ Improve the recently introduced `git format-patch
142
+ --commit-list-format` (formerly `--cover-letter-format`) option,
143
+ including a new "modern" preset and better CLI ergonomics.
144
+ source: <cover.1774284699.git.mroik@delayed.space>
145
+
146
+
147
+* mf/format-patch-commit-list-format-doc (2026-03-27) 3 commits
148
+ (merged to 'next' on 2026-03-31 at 8f775bd513)
149
+ + format-patch: removing unconditional wrapping
150
+ + docs: fix --commit-list-format related entries
151
+ + Merge branch 'mf/format-patch-commit-list-format' into mf/format-patch-commit-list-format-doc
152
+ (this branch uses mf/format-patch-commit-list-format and mf/format-patch-cover-letter-format.)
153
+
154
+ Doc updates.
155
+ source: <cover.1774640789.git.mroik@delayed.space>
156
+
157
+
158
+* mf/format-patch-cover-letter-format (2026-03-06) 5 commits
159
+ (merged to 'next' on 2026-03-09 at e872adca7b)
160
+ + docs: add usage for the cover-letter fmt feature
161
+ + format-patch: add commitListFormat config
162
+ + format-patch: add ability to use alt cover format
163
+ + format-patch: move cover letter summary generation
164
+ + pretty.c: add %(count) and %(total) placeholders
165
+ (this branch is used by mf/format-patch-commit-list-format and mf/format-patch-commit-list-format-doc.)
166
+
167
+ "git format-patch --cover-letter" learns to use a simpler format
168
+ instead of the traditional shortlog format to list its commits with
169
+ a new --cover-letter-format option and format.commitListFormat
170
+ configuration variable.
171
+ source: <cover.1772839973.git.mroik@delayed.space>
172
+
173
+
174
+* ps/dash-buggy-0.5.13-workaround (2026-04-01) 2 commits
175
+ (merged to 'next' on 2026-04-02 at 5766caf01e)
176
+ + t9300: work around partial read bug in Dash v0.5.13
177
+ + t: work around multibyte bug in quoted heredocs with Dash v0.5.13
178
+
179
+ The way dash 0.5.13 handles non-ASCII contents in here-doc
180
+ is buggy and breaks our existing tests, which unfortunately
181
+ have been rewritten to avoid triggering the bug.
182
+ source: <20260402-pks-tests-with-dash-v2-0-cd7ab11dabc0@pks.im>
183
+
184
+
185
+* ps/odb-generic-object-name-handling (2026-03-20) 16 commits
186
+ (merged to 'next' on 2026-03-31 at c14d7bdd1e)
187
+ + odb: introduce generic `odb_find_abbrev_len()`
188
+ + object-file: move logic to compute packed abbreviation length
189
+ + object-name: move logic to compute loose abbreviation length
190
+ + object-name: simplify computing common prefixes
191
+ + object-name: abbreviate loose object names without `disambiguate_state`
192
+ + object-name: merge `update_candidates()` and `match_prefix()`
193
+ + object-name: backend-generic `get_short_oid()`
194
+ + object-name: backend-generic `repo_collect_ambiguous()`
195
+ + object-name: extract function to parse object ID prefixes
196
+ + object-name: move logic to iterate through packed prefixed objects
197
+ + object-name: move logic to iterate through loose prefixed objects
198
+ + odb: introduce `struct odb_for_each_object_options`
199
+ + oidtree: extend iteration to allow for arbitrary return codes
200
+ + oidtree: modernize the code a bit
201
+ + Merge branch 'ps/object-counting' into ps/odb-generic-object-name-handling
202
+ + object-file: fix sparse 'plain integer as NULL pointer' error
203
+ (this branch is used by ps/odb-cleanup and ps/odb-in-core.)
204
+
205
+ Object name handling (disambiguation and abbreviation) has been
206
+ refactored to be backend-generic, moving logic into the respective
207
+ object database backends.
208
+ cf. <874ilxm4wp.fsf@toon--20250203-5JQV3.mail-host-address-is-not-set>
209
+ source: <20260320-b4-pks-odb-source-abbrev-v2-0-fe65dcd8c735@pks.im>
210
+
211
+
212
+* pw/worktree-reduce-the-repository (2026-03-26) 3 commits
213
+ (merged to 'next' on 2026-03-30 at f967ececef)
214
+ + worktree: reject NULL worktree in get_worktree_git_dir()
215
+ + worktree add: stop reading ".git/HEAD"
216
+ + worktree: remove "the_repository" from is_current_worktree()
217
+
218
+ Reduce the reference to the_repository in the worktree subsystem.
219
+ source: <cover.1774534617.git.phillip.wood@dunelm.org.uk>
220
+
221
+
222
+* qb/doc-git-stash-push-optionality (2026-03-30) 1 commit
223
+ (merged to 'next' on 2026-03-31 at 66ece1b5d6)
224
+ + docs: fix "git stash [push]" documentation
225
+
226
+ Doc update.
227
+ source: <pull.2255.v2.git.git.1774877075694.gitgitgadget@gmail.com>
228
+
229
+
230
+* sa/replay-revert (2026-03-25) 2 commits
231
+ (merged to 'next' on 2026-03-30 at ef4896a676)
232
+ + replay: add --revert mode to reverse commit changes
233
+ + sequencer: extract revert message formatting into shared function
234
+ (this branch is used by tc/replay-ref.)
235
+
236
+ "git replay" (experimental) learns, in addition to "pick" and
237
+ "replay", a new operating mode "revert".
238
+ source: <20260325202354.10628-1-siddharthasthana31@gmail.com>
239
240
68
-* jk/diff-highlight-more (2026-03-22) 9 commits
69
- (merged to 'next' on 2026-03-24 at e7b555cbc5)
70
- + diff-highlight: fetch all config with one process
71
- + diff-highlight: allow module callers to pass in color config
72
- + diff-highlight: test color config
73
- + diff-highlight: use test_decode_color in tests
74
- + t: add matching negative attributes to test_decode_color
75
- + diff-highlight: check diff-highlight exit status in tests
76
- + diff-highlight: drop perl version dependency back to 5.8
77
- + diff-highlight: mention build instructions
78
- + Merge branch 'jk/diff-highlight-identical-pairs' into jk/diff-highlight-more
241
+* sp/doc-gitignore-oowt (2026-03-28) 1 commit
242
+ (merged to 'next' on 2026-03-31 at ab3e6e484e)
243
+ + doc: gitignore: clarify pattern base for info/exclude and core.excludesFile
244
80
- Various updates to contrib/diff-highlight, including documentation
81
- updates, test improvements, and color configuration handling.
82
- source: <20260323060139.GA10215@coredump.intra.peff.net>
245
+ Doc update.
246
+ source: <20260328152233.1140327-1-shreyanshpaliwalcmsmn@gmail.com>
247
248
85
-* jk/t0061-bat-test-update (2026-03-24) 1 commit
86
- (merged to 'next' on 2026-03-26 at ffae180124)
87
- + t0061: simplify .bat test
249
+* tb/stdin-packs-excluded-but-open (2026-03-27) 5 commits
250
+ (merged to 'next' on 2026-03-31 at e8927aa861)
251
+ + repack: mark non-MIDX packs above the split as excluded-open
252
+ + pack-objects: support excluded-open packs with --stdin-packs
253
+ + t7704: demonstrate failure with once-cruft objects above the geometric split
254
+ + pack-objects: refactor `read_packs_list_from_stdin()` to use `strmap`
255
+ + pack-objects: plug leak in `read_stdin_packs()`
256
89
- A test to run a .bat file with whitespaces in the name with arguments
90
- with whitespaces in them was flaky in that sometimes it got killed
91
- before it produced expected side effects, which has been rewritten to
92
- make it more robust.
93
- source: <20260325061357.GA3772970@coredump.intra.peff.net>
257
+ pack-objects's --stdin-packs=follow mode learns to handle
258
+ excluded-but-open packs.
259
+ source: <cover.1774641999.git.me@ttaylorr.com>
260
261
96
-* kj/refspec-parsing-outside-repository (2026-03-23) 2 commits
97
- (merged to 'next' on 2026-03-26 at 0a8c60e8ae)
98
- + refspec: fix typo in comment
99
- + remote-curl: fall back to default hash outside repo
262
+* tc/replay-down-to-root (2026-03-24) 1 commit
263
+ (merged to 'next' on 2026-03-31 at 47456fcc12)
264
+ + replay: support replaying down from root commit
265
101
- "git ls-remote '+refs/tags/*:refs/tags/*' https://..." run outside a
102
- repository would dereference a NULL while trying to see if the given
103
- refspec is a single-object refspec, which has been corrected.
104
- source: <20260322023557.15907-1-jayatheerthkulkarni2005@gmail.com>
266
+ git replay now supports replaying down to the root commit.
267
+ source: <20260324-toon-replay-down-to-root-v2-1-34e723489f6e@iotcl.com>
268
269
107
-* mk/repo-help-strings (2026-03-25) 2 commits
108
- (merged to 'next' on 2026-03-26 at a4c755ddde)
109
- + repo: show subcommand-specific help text
110
- + repo: factor repo usage strings into shared macros
270
+* th/t6101-unhide-git-failures (2026-03-28) 1 commit
271
+ (merged to 'next' on 2026-03-31 at 8867bcf2b4)
272
+ + t6101: avoid suppressing git's exit code
273
112
- "git repo info -h" and "git repo structure -h" limit their help output
113
- to the part that is specific to the subcommand.
114
- source: <20260323152937.257406-1- mahlet.takassa@gmail.com>
274
+ Test cleanup.
275
+ source: <20260328135935.180646-1-vikingtc4@gmail.com>
276
277
117
-* rs/use-strvec-pushv (2026-03-24) 2 commits
118
- (merged to 'next' on 2026-03-24 at 7c6487dcaf)
119
- + use strvec_pushv() to add another strvec
120
- + Merge branch 'ps/build-tweaks' into rs/use-strvec-pushv
278
+* th/t8003-unhide-git-failures (2026-03-28) 2 commits
279
+ (merged to 'next' on 2026-03-30 at ad41378b07)
280
+ + t8003: modernise style
281
+ + t8003: avoid suppressing git's exit code
282
122
- Code paths that loop over another array to push each element into a
123
- strvec have been rewritten to use strvec_pushv() instead.
124
- source: <084f3b43-91ac-4553-8305-03944e97eaa6@web.de>
283
+ Test clean-up.
284
+ source: <20260328132955.172262-2-vikingtc4@gmail.com>
285
286
127
-* vp/http-rate-limit-retries (2026-03-17) 3 commits
128
- (merged to 'next' on 2026-03-24 at 9cb4ec5fad)
129
- + http: add support for HTTP 429 rate limit retries
130
- + strbuf_attach: fix call sites to pass correct alloc
131
- + strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()
287
+* za/t2000-modernise (2026-03-27) 1 commit
288
+ (merged to 'next' on 2026-03-31 at 279c41a3e0)
289
+ + t2000: modernise overall structure
290
133
- The HTTP transport learned to react to "429 Too Many Requests".
134
- cf. <ab4RIZr7b49VKjR9@nand.local>
135
- source: <pull.2008.v6.git.1773752435.gitgitgadget@gmail.com>
291
+ Test cleanup.
292
+ source: <20260327234019.95591-1-zakariyahali100@gmail.com>
293
294
--------------------------------------------------
295
[New Topics]
296
140
-* jt/odb-transaction-write (2026-03-31) 7 commits
297
+* js/adjust-tests-to-explicitly-access-bare-repo (2026-04-02) 17 commits
298
+ - git p4 clone --bare: need to be explicit about the gitdir
299
+ - t9700: stop relying on implicit bare repo discovery
300
+ - t9210: pass `safe.bareRepository=all` to `scalar register`
301
+ - t6020: use `-C` for worktree, `--git-dir` for bare repository
302
+ - t5619: wrap `test_commit_bulk` in `GIT_DIR` subshell for bare repo
303
+ - t5540/t5541: avoid accessing a bare repository via `-C <dir>`
304
+ - t5509: specify bare repository path explicitly
305
+ - t5505: export `GIT_DIR` after `git init --bare`
306
+ - t5503: avoid discovering a bare repository
307
+ - t2406: use `--git-dir=.` for bare repository worktree repair
308
+ - t2400: explicitly specify bare repo for `git worktree add`
309
+ - t1900: avoid using `-C <dir>` for a bare repository
310
+ - t1020: use `--git-dir` instead of subshell for bare repo
311
+ - t0056: allow implicit bare repo discovery for `-C` work-tree tests
312
+ - t0003: use `--git-dir` for bare repo attribute tests
313
+ - t0001: replace `cd`+`git` with `git --git-dir` in `check_config`
314
+ - t0001: allow implicit bare repo discovery for aliased-command test
315
+
316
+ Some tests assume that bare repository accesses are by default
317
+ allowed; rewrite some of them to avoid the assumption, rewrite
318
+ others to explicitly set safe.bareRepository to allow them.
319
+
320
+ Comments?
321
+ source: <pull.2076.git.1775140403.gitgitgadget@gmail.com>
322
+
323
+
324
+* pw/xdiff-shrink-memory-consumption (2026-04-02) 5 commits
325
+ - xdiff: reduce the size of array
326
+ - xprepare: simplify error handling
327
+ - xdiff: cleanup xdl_clean_mmatch()
328
+ - xdiff: reduce size of action arrays
329
+ - Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption
330
+ (this branch uses en/xdiff-cleanup-3.)
331
+
332
+ Shrink wasted memory in Myers diff that does not account for common
333
+ prefix and suffix removal.
334
+
335
+ On hold, waiting for the base topic.
336
+ source: <cover.1775141855.git.phillip.wood@dunelm.org.uk>
337
+
338
+
339
+* cl/conditional-config-on-worktree-path (2026-04-03) 2 commits
340
+ - config: add "worktree" and "worktree/i" includeIf conditions
341
+ - config: refactor include_by_gitdir() into include_by_path()
342
+
343
+ The [includeIf "condition"] conditional inclusion facility for
344
+ configuration files has learned to use the location of worktree
345
+ in its condition.
346
+
347
+ Comments?
348
+ source: <20260403-includeif-worktree-v3-0-109ce5782b03@black-desk.cn>
349
+
350
+
351
+* bc/rust-by-default-in-2.54 (2026-04-02) 4 commits
352
+ - Enable Rust by default
353
+ - Linux: link against libdl
354
+ - ci: install cargo on Alpine
355
+ - docs: update version with default Rust support
356
+
357
+ Rust support is enabled by default (but still allows opting out) in
358
+ Git 2.54.
359
+
360
+ Will merge to 'next' after Git 2.53 final gets tagged.
361
+ source: <20260403011249.4133372-1-sandals@crustytoothpaste.net>
362
+
363
+
364
+* ps/shift-root-in-graph (2026-04-04) 1 commit
365
+ - graph: add indentation for commits preceded by a parentless commit
366
+
367
+ In a history with more than one root commit, "git log --graph
368
+ --oneline" stuffed an unrelated commit immediately below a root
369
+ commit, which has been corrected by making the spot below a root
370
+ unavailable.
371
+
372
+ Comments?
373
+ source: <20260404092425.550346-2-pabloosabaterr@gmail.com>
374
+
375
+
376
+* jt/config-lock-timeout (2026-04-03) 1 commit
377
+ - config: retry acquiring config.lock for 100ms
378
+
379
+ The code path to update the configuration file has been taught to
380
+ use a short timeout to retry.
381
+
382
+ Comments?
383
+ source: <20260403100135.3901610-1-joerg@thalheim.io>
384
+
385
+
386
+* sp/refs-with-less-the-repository (2026-04-03) 3 commits
387
+ - refs/reftable-backend: drop uses of the_repository
388
+ - refs: remove the_hash_algo global state
389
+ - refs: add struct repository parameter in get_files_ref_lock_timeout_ms()
390
+
391
+ Reduce the reference to the_repository in the refs subsystem.
392
+
393
+ Comments?
394
+ source: <20260403120938.1142533-1-shreyanshpaliwalcmsmn@gmail.com>
395
+
396
+
397
+* dl/cache-tree-fully-valid-fix (2026-04-06) 1 commit
398
+ - cache-tree: fix inverted object existence check in cache_tree_fully_valid
399
+
400
+ The check that implements the logic to see if an in-core cache-tree
401
+ is fully ready to write out a tree object was broken, which has
402
+ been corrected.
403
+
404
+ Will merge to 'next'?
405
+ source: <20260406192711.68870-1-davidlin@stripe.com>
406
+
407
+
408
+* ds/rev-list-maximal-only-optim (2026-04-06) 3 commits
409
+ - rev-list: use reduce_heads() for --maximal-only
410
+ - p6011: add perf test for rev-list --maximal-only
411
+ - t6600: test --maximal-only and --independent
412
+
413
+ "git rev-list --maximal-only" has been optimized by borrowing the
414
+ logic used by "git show-branch --independent", which computes the
415
+ same kind of information much more efficiently.
416
+
417
+ Will merge to 'next'.
418
+ source: <pull.2082.git.1775482048.gitgitgadget@gmail.com>
419
+
420
+
421
+* ja/doc-difftool-synopsis-style (2026-04-04) 4 commits
422
+ - doc: convert git-describe manual page to synopsis style
423
+ - doc: convert git-shortlog manual page to synopsis style
424
+ - doc: convert git-range-diff manual page to synopsis style
425
+ - doc: convert git-difftool manual page to synopsis style
426
+
427
+ Doc mark-up updates.
428
+
429
+ Will merge to 'next'?
430
+ source: <pull.2077.git.1775322767.gitgitgadget@gmail.com>
431
+
432
+
433
+* kh/doc-config-list (2026-04-05) 2 commits
434
+ - doc: gitcvs-migration: rephrase “man page”
435
+ - doc: replace git config --list/-l with `list`
436
+
437
+ "git config list" is the official way to spell "git config -l" and
438
+ "git config --list". Use it to update the documentation.
439
+
440
+ Will merge to 'next'.
441
+ source: <V2_CV_doc_deprecation_config_--list.569@msgid.xyz>
442
+
443
+
444
+* lp/repack-propagate-promisor-debugging-info (2026-04-06) 6 commits
445
+ - SQUASH???
446
+ - t7703: test for promisor file content after geometric repack
447
+ - t7700: test for promisor file content after repack
448
+ - repack-promisor: preserve content of promisor files after repack
449
+ - pack-write: add helper to fill promisor file after repack
450
+ - pack-write: add explanation to promisor file content
451
+
452
+ When fetching objects into a lazily cloned repository, .promisor
453
+ files are created with information meant to help debugging. "git
454
+ repack" has been taught to carry this information forward to
455
+ packfiles that are newly created.
456
+
457
+ Expecting a reroll?
458
+ source: <cover.1775431990.git.lorenzo.pegorari2002@gmail.com>
459
+
460
+
461
+* rs/history-short-help-fix (2026-04-06) 1 commit
462
+ - history: fix short help for argument of --update-refs
463
+
464
+ Glitches in "git history -h" have been corrected.
465
+
466
+ Will merge to 'next' and then to 'master'.
467
+ source: <ff6a940c-39fc-4dbf-a164-7770c7f26a31@web.de>
468
+
469
+
470
+* th/backfill-auto-detect-sparseness-fix (2026-04-04) 1 commit
471
+ - backfill: auto-detect sparse-checkout from config
472
+
473
+ "git backfill" is capable of auto-detecting a sparsely checked out
474
+ working tree, which was broken.
475
+
476
+ Will merge to 'next' and then to 'master'.
477
+ source: <20260404111557.17220-1-viking4@gmail.com>
478
+
479
+
480
+* th/promisor-quiet-per-repo (2026-04-06) 1 commit
481
+ - promisor-remote: fix promisor.quiet to use the correct repository
482
+
483
+ Comments?
484
+ source: <20260406183041.783800-1-vikingtc4@gmail.com>
485
+
486
+--------------------------------------------------
487
+[Cooking]
488
+
489
+* jt/odb-transaction-write (2026-04-02) 7 commits
490
- odb/transaction: make `write_object_stream()` pluggable
491
- object-file: generalize packfile writes to use odb_write_stream
492
- object-file: avoid fd seekback by checking object size upfront
@@ -149,95 +498,100 @@ Release tarballs are available at:
498
ODB transaction interface is being reworked to explicitly handle
499
object writes.
500
152
- Expecting a reroll.
153
- cf. <ac0irp8GJSrSD8GU@denethor>
154
- source: <20260401030316.1847362-1-jltobler@gmail.com>
501
+ Comments?
502
+ source: <20260402213220.2651523-1-jltobler@gmail.com>
503
504
505
* jd/cache-tree-trace-wo-the-repository (2026-03-31) 1 commit
158
- - cache-tree: use index state repository in trace2 calls
506
+ (merged to 'next' on 2026-04-02 at e36937bb5e)
507
+ + cache-tree: use index state repository in trace2 calls
508
509
Code cleanup.
510
162
- Will merge to 'next'?
511
+ Will merge to 'master'.
512
source: <pull.2259.git.git.1774951373588.gitgitgadget@gmail.com>
513
514
166
-* ps/reftable-portability (2026-03-31) 6 commits
167
- - reftable: introduce "reftable-system.h" header
168
- - reftable/system: add abstraction to mmap files
169
- - reftable/system: add abstraction to retrieve time in milliseconds
170
- - reftable/fsck: use REFTABLE_UNUSED instead of UNUSED
171
- - reftable/stack: don't call fsync(3p) unless provided
172
- - reftable/system: provide `REFTABLE_INLINE()` macro
515
+* ps/reftable-portability (2026-04-02) 5 commits
516
+ (merged to 'next' on 2026-04-02 at 04adce37b9)
517
+ + reftable/system: add abstraction to mmap files
518
+ + reftable/system: add abstraction to retrieve time in milliseconds
519
+ + reftable/fsck: use REFTABLE_UNUSED instead of UNUSED
520
+ + reftable/stack: provide fsync(3p) via system header
521
+ + reftable: introduce "reftable-system.h" header
522
523
Update reftable library part with what is used in libgit2 to improve
524
portability to different target codebases and platforms.
525
177
- Will merge to 'next'?
178
- source: <20260331-pks-reftable-portability-fixes-v1-0-46bfae55c68c@pks.im>
179
-
180
-
181
-* jk/c23-const-preserving-fixes-more (2026-03-31) 12 commits
182
- - refs/files-backend: drop const to fix strchr() warning
183
- - http: drop const to fix strstr() warning
184
- - range-diff: drop const to fix strstr() warnings
185
- - pkt-line: make packet_reader.line non-const
186
- - skip_prefix(): check const match between in and out params
187
- - pseudo-merge: fix disk reads from find_pseudo_merge()
188
- - find_last_dir_sep(): convert inline function to macro
189
- - run-command: explicitly cast away constness when assigning to void
190
- - pager: explicitly cast away strchr() constness
191
- - transport-helper: drop const to fix strchr() warnings
192
- - http: add const to fix strchr() warnings
193
- - convert: add const to fix strchr() warnings
526
+ Will merge to 'master'.
527
+ source: <20260402-pks-reftable-portability-fixes-v2-0-bc110cee0ae0@pks.im>
528
+
529
+
530
+* jk/c23-const-preserving-fixes-more (2026-04-03) 13 commits
531
+ (merged to 'next' on 2026-04-06 at 9eebe11338)
532
+ + git-compat-util: fix CONST_OUTPARAM typo and indentation
533
+ (merged to 'next' on 2026-04-02 at b060d988f4)
534
+ + refs/files-backend: drop const to fix strchr() warning
535
+ + http: drop const to fix strstr() warning
536
+ + range-diff: drop const to fix strstr() warnings
537
+ + pkt-line: make packet_reader.line non-const
538
+ + skip_prefix(): check const match between in and out params
539
+ + pseudo-merge: fix disk reads from find_pseudo_merge()
540
+ + find_last_dir_sep(): convert inline function to macro
541
+ + run-command: explicitly cast away constness when assigning to void
542
+ + pager: explicitly cast away strchr() constness
543
+ + transport-helper: drop const to fix strchr() warnings
544
+ + http: add const to fix strchr() warnings
545
+ + convert: add const to fix strchr() warnings
546
547
Further work to adjust the codebase for C23 that changes functions
548
like strchr() that discarded constness when they return a pointer into
549
a const string to preserve constness.
550
199
- Will merge to 'next'?
200
- source: <20260331233856.GA2327197@coredump.intra.peff.net>
551
+ Will merge to 'master'.
552
+ source: <20260402041433.GA3501120@coredump.intra.peff.net>
553
+ source: <20260404054211.GA1346444@coredump.intra.peff.net>
554
555
556
* ps/odb-cleanup (2026-03-31) 7 commits
204
- - odb: drop unneeded headers and forward decls
205
- - odb: rename `odb_has_object()` flags
206
- - odb: use enum for `odb_write_object` flags
207
- - odb: rename `odb_write_object()` flags
208
- - treewide: use enum for `odb_for_each_object()` flags
209
- - CodingGuidelines: document our style for flags
210
- - Merge branch 'ps/odb-generic-object-name-handling' into ps/odb-cleanup
211
- (this branch uses ps/odb-generic-object-name-handling.)
557
+ (merged to 'next' on 2026-04-02 at 1dd8236dfb)
558
+ + odb: drop unneeded headers and forward decls
559
+ + odb: rename `odb_has_object()` flags
560
+ + odb: use enum for `odb_write_object` flags
561
+ + odb: rename `odb_write_object()` flags
562
+ + treewide: use enum for `odb_for_each_object()` flags
563
+ + CodingGuidelines: document our style for flags
564
+ + Merge branch 'ps/odb-generic-object-name-handling' into ps/odb-cleanup
565
+ (this branch is used by ps/odb-in-core.)
566
567
Various code clean-up around odb subsystem.
568
215
- Will merge to 'next'?
569
+ Will merge to 'master'.
570
source: <20260401-pks-odb-cleanups-v1-0-89adba9ada68@pks.im>
571
572
573
* ss/t7004-unhide-git-failures (2026-03-31) 1 commit
220
- - t7004: replace wc -l with modern test helpers
574
+ (merged to 'next' on 2026-04-02 at fec00b153f)
575
+ + t7004: replace wc -l with modern test helpers
576
577
Test clean-up.
578
224
- Will merge to 'next'.
579
+ Will merge to 'master'.
580
source: <20260401062029.54757-1-r.siddharth.shrimali@gmail.com>
581
582
583
* ng/add-files-to-cache-wo-rename (2026-04-01) 1 commit
229
- - read-cache: disable renames in add_files_to_cache
584
+ (merged to 'next' on 2026-04-02 at 8723880fc0)
585
+ + read-cache: disable renames in add_files_to_cache
586
587
add_files_to_cache() used diff_files() to detect only the paths that
588
are different between the index and the working tree and add them,
589
which does not need rename detection, which interfered with unnecessary
590
conflicts.
591
236
- Will merge to 'next'?
592
+ Will merge to 'master'.
593
source: <20260401190033.11325-1-blindmansion@gmail.com>
594
239
---------------------------------------------------
240
-[Cooking]
595
596
* sa/cat-file-batch-mailmap-switch (2026-03-31) 1 commit
597
- cat-file: add mailmap subcommand to --batch-command
@@ -245,20 +599,11 @@ Release tarballs are available at:
599
"git cat-file --batch" learns an in-line command "mailmap"
600
that lets the user toggle use of mailmap.
601
248
- Will merge to 'next'?
602
+ Expecting a (hopefully small and final) reroll?
603
+ cf. <xmqqo6k3ztxr.fsf@gitster.g>
604
source: <20260331121111.9614-2-siddharthasthana31@gmail.com>
605
606
252
-* sp/doc-gitignore-oowt (2026-03-28) 1 commit
253
- (merged to 'next' on 2026-03-31 at ab3e6e484e)
254
- + doc: gitignore: clarify pattern base for info/exclude and core.excludesFile
255
-
256
- Doc update.
257
-
258
- Will merge to 'master'.
259
- source: <20260328152233.1140327-1-shreyanshpaliwalcmsmn@gmail.com>
260
-
261
-
607
* tb/incremental-midx-part-3.3 (2026-03-29) 16 commits
608
- repack: allow `--write-midx=incremental` without `--geometric`
609
- repack: introduce `--write-midx=incremental`
@@ -269,41 +614,21 @@ Release tarballs are available at:
614
- repack-midx: extract `repack_fill_midx_stdin_packs()`
615
- repack-midx: factor out `repack_prepare_midx_command()`
616
- midx: expose `midx_layer_contains_pack()`
272
- - repack: track the ODB source via existing_packs
273
- - midx: support custom `--base` for incremental MIDX writes
274
- - midx: introduce `--checksum-only` for incremental MIDX writes
275
- - midx: use `strvec` for `keep_hashes`
276
- - strvec: introduce `strvec_init_alloc()`
277
- - midx: use `string_list` for retained MIDX files
278
- - midx-write: handle noop writes when converting incremental chains
279
-
280
- The repacking code has been refactored and compaction of MIDX layers
281
- have been implemented, and incremental strategy that does not require
282
- all-into-one repacking has been introduced.
283
-
284
- Expecting a reroll.
285
- cf. <acxBUkHDolY9VCnR@nand.local>
286
- source: <cover.1774820449.git.me@ttaylorr.com>
287
-
288
-
289
-* th/t6101-unhide-git-failures (2026-03-28) 1 commit
290
- (merged to 'next' on 2026-03-31 at 8867bcf2b4)
291
- + t6101: avoid suppressing git's exit code
292
-
293
- Test cleanup.
294
-
295
- Will merge to 'master'.
296
- source: <20260328135935.180646-1-vikingtc4@gmail.com>
297
-
298
-
299
-* za/t2000-modernise (2026-03-27) 1 commit
300
- (merged to 'next' on 2026-03-31 at 279c41a3e0)
301
- + t2000: modernise overall structure
617
+ - repack: track the ODB source via existing_packs
618
+ - midx: support custom `--base` for incremental MIDX writes
619
+ - midx: introduce `--checksum-only` for incremental MIDX writes
620
+ - midx: use `strvec` for `keep_hashes`
621
+ - strvec: introduce `strvec_init_alloc()`
622
+ - midx: use `string_list` for retained MIDX files
623
+ - midx-write: handle noop writes when converting incremental chains
624
303
- Test cleanup.
625
+ The repacking code has been refactored and compaction of MIDX layers
626
+ have been implemented, and incremental strategy that does not require
627
+ all-into-one repacking has been introduced.
628
305
- Will merge to 'master'.
306
- source: <20260327234019.95591-1-zakariyahali100@gmail.com>
629
+ Expecting a reroll.
630
+ cf. <acxBUkHDolY9VCnR@nand.local>
631
+ source: <cover.1774820449.git.me@ttaylorr.com>
632
633
634
* jd/read-cache-trace-wo-the-repository (2026-03-30) 1 commit
@@ -325,18 +650,21 @@ Release tarballs are available at:
650
A handful of inappropriate uses of the_repository have been
651
rewritten to use the right repository structure instance in the
652
unpack-trees.c codepath.
653
+
654
+ Comments?
655
source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>
656
657
658
* ps/receive-pack-updateinstead-in-worktree (2026-03-30) 3 commits
332
- - receive-pack: use worktree HEAD for updateInstead
333
- - t5516: clean up cloned and new-wt in denyCurrentBranch and worktrees test
334
- - t5516: test updateInstead with worktree and unborn bare HEAD
659
+ (merged to 'next' on 2026-04-01 at df61eac37b)
660
+ + receive-pack: use worktree HEAD for updateInstead
661
+ + t5516: clean up cloned and new-wt in denyCurrentBranch and worktrees test
662
+ + t5516: test updateInstead with worktree and unborn bare HEAD
663
664
The check in "receive-pack" to prevent a checked out branch from
665
getting updated via updateInstead mechanism has been corrected.
666
339
- Will merge to 'next'.
667
+ Will merge to 'master'.
668
source: <20260330111822.165188-1-pabloosabaterr@gmail.com>
669
670
@@ -367,16 +695,6 @@ Release tarballs are available at:
695
source: <20260330-pks-setup-wo-the-repository-v1-0-0d2e822837aa@pks.im>
696
697
370
-* qb/doc-git-stash-push-optionality (2026-03-30) 1 commit
371
- (merged to 'next' on 2026-03-31 at 66ece1b5d6)
372
- + docs: fix "git stash [push]" documentation
373
-
374
- Doc update.
375
-
376
- Will merge to 'master'.
377
- source: <pull.2255.v2.git.git.1774877075694.gitgitgadget@gmail.com>
378
-
379
-
698
* kh/doc-trailers (2026-03-30) 2 commits
699
- doc: interpret-trailers: explain key format
700
- doc: interpret-trailers: stop fixating on RFC 822
@@ -388,73 +706,32 @@ Release tarballs are available at:
706
source: <CV_doc_int-tr_key_format.533@msgid.xyz>
707
708
391
-* tc/replay-ref (2026-03-25) 4 commits
392
- . replay: allow to specify a ref with option --ref
393
- . replay: use stuck form in documentation and help message
394
- . builtin/replay: mark options as not negatable
395
- . Merge branch 'sa/replay-revert' into tc/replay-ref
396
- (this branch uses sa/replay-revert.)
709
+* tc/replay-ref (2026-04-01) 4 commits
710
+ (merged to 'next' on 2026-04-03 at 196ecde80b)
711
+ + replay: allow to specify a ref with option --ref
712
+ + replay: use stuck form in documentation and help message
713
+ + builtin/replay: mark options as not negatable
714
+ + Merge branch 'sa/replay-revert' into tc/replay-ref
715
716
The experimental `git replay` command learned the `--ref=<ref>` option
717
to allow specifying which ref to update, overriding the default behavior.
718
401
- Seems to break CI.
402
- cf. <xmqqjyuynv99.fsf@gitster.g>
403
- source: <20260325-toon-replay-arbitrary-ref-v2-0-553038702c9c@iotcl.com>
404
-
405
-
406
-* jk/c23-const-preserving-fixes (2026-03-26) 5 commits
407
- (merged to 'next' on 2026-03-31 at c813b9b814)
408
- + config: store allocated string in non-const pointer
409
- + rev-parse: avoid writing to const string for parent marks
410
- + revision: avoid writing to const string for parent marks
411
- + rev-parse: simplify dotdot parsing
412
- + revision: make handle_dotdot() interface less confusing
413
-
414
- Adjust the codebase for C23 that changes functions like strchr()
415
- that discarded constness when they return a pointer into a const
416
- string to preserve constness.
417
-
418
- Will merge to 'master'.
419
- source: <20260326190243.GA412983@coredump.intra.peff.net>
420
- source: <20260326192320.GA418281@coredump.intra.peff.net>
421
-
422
-
423
-* mf/format-patch-commit-list-format-doc (2026-03-27) 3 commits
424
- (merged to 'next' on 2026-03-31 at 8f775bd513)
425
- + format-patch: removing unconditional wrapping
426
- + docs: fix --commit-list-format related entries
427
- + Merge branch 'mf/format-patch-commit-list-format' into mf/format-patch-commit-list-format-doc
428
- (this branch uses mf/format-patch-commit-list-format and mf/format-patch-cover-letter-format.)
429
-
430
- Doc updates.
431
-
432
- Will merge to 'master'.
433
- source: <cover.1774640789.git.mroik@delayed.space>
434
-
435
-
436
-* th/t8003-unhide-git-failures (2026-03-28) 2 commits
437
- (merged to 'next' on 2026-03-30 at ad41378b07)
438
- + t8003: modernise style
439
- + t8003: avoid suppressing git's exit code
440
-
441
- Test clean-up.
442
-
719
Will merge to 'master'.
444
- source: <20260328132955.172262-2-vikingtc4@gmail.com>
720
+ source: <20260401-toon-replay-arbitrary-ref-v3-0-a0b4fabb34b3@iotcl.com>
721
722
723
* jt/fast-import-signed-modes (2026-03-26) 5 commits
448
- - fast-import: add 'abort-if-invalid' mode to '--signed-tags=<mode>'
449
- - fast-import: add 'sign-if-invalid' mode to '--signed-tags=<mode>'
450
- - fast-import: add 'strip-if-invalid' mode to '--signed-tags=<mode>'
451
- - fast-import: add 'abort-if-invalid' mode to '--signed-commits=<mode>'
452
- - fast-export: check for unsupported signing modes earlier
724
+ (merged to 'next' on 2026-04-01 at bec92be5e9)
725
+ + fast-import: add 'abort-if-invalid' mode to '--signed-tags=<mode>'
726
+ + fast-import: add 'sign-if-invalid' mode to '--signed-tags=<mode>'
727
+ + fast-import: add 'strip-if-invalid' mode to '--signed-tags=<mode>'
728
+ + fast-import: add 'abort-if-invalid' mode to '--signed-commits=<mode>'
729
+ + fast-export: check for unsupported signing modes earlier
730
731
Handling of signed commits and tags in fast-import has been made more
732
configurable.
733
457
- Will merge to 'next'.
734
+ Will merge to 'master'.
735
source: <20260326191414.3783974-1-jltobler@gmail.com>
736
737
@@ -472,30 +749,23 @@ Release tarballs are available at:
749
source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>
750
751
475
-* cc/promisor-auto-config-url (2026-03-23) 16 commits
476
- - doc: promisor: improve acceptFromServer entry
477
- - promisor-remote: auto-configure unknown remotes
478
- - promisor-remote: trust known remotes matching acceptFromServerUrl
479
- - promisor-remote: introduce promisor.acceptFromServerUrl
752
+* cc/promisor-auto-config-url (2026-04-02) 10 commits
753
- t5710: use proper file:// URIs for absolute paths
481
- - promisor-remote: refactor should_accept_remote() control flow
482
- - promisor-remote: pass config entry to all_fields_match() directly
483
- - promisor-remote: add 'local_name' to 'struct promisor_info'
754
- promisor-remote: remove the 'accepted' strvec
755
- promisor-remote: keep accepted promisor_info structs alive
756
- promisor-remote: refactor accept_from_server()
757
- promisor-remote: refactor has_control_char()
758
+ - promisor-remote: refactor should_accept_remote() control flow
759
+ - promisor-remote: reject empty name or URL in advertised remote
760
- promisor-remote: clarify that a remote is ignored
489
- - urlmatch: add url_is_valid_pattern() helper
490
- - urlmatch: change 'allow_globs' arg to bool
761
+ - promisor-remote: pass config entry to all_fields_match() directly
762
- promisor-remote: try accepted remotes before others in get_direct()
763
764
Promisor remote handling is enhanced to auto-configure remotes based
765
on a URL whitelist.
766
496
- Expecting a reroll.
497
- cf. <CAP8UFD2vAK_khTkJMP4QBfhYA5iYVW5sfB3i-vnzhf71BvwQ=w@mail.gmail.com>
498
- source: <20260323080520.887550-1-christian.couder@gmail.com>
767
+ Comments?
768
+ source: <20260402070613.85934-1-christian.couder@gmail.com>
769
770
771
* ps/fsck-wo-the-repository (2026-03-23) 12 commits
@@ -520,21 +790,6 @@ Release tarballs are available at:
790
source: <20260323-b4-pks-fsck-without-the-repository-v2-0-e8dc79bca651@pks.im>
791
792
523
-* tb/stdin-packs-excluded-but-open (2026-03-27) 5 commits
524
- (merged to 'next' on 2026-03-31 at e8927aa861)
525
- + repack: mark non-MIDX packs above the split as excluded-open
526
- + pack-objects: support excluded-open packs with --stdin-packs
527
- + t7704: demonstrate failure with once-cruft objects above the geometric split
528
- + pack-objects: refactor `read_packs_list_from_stdin()` to use `strmap`
529
- + pack-objects: plug leak in `read_stdin_packs()`
530
-
531
- pack-objects's --stdin-packs=follow mode learns to handle
532
- excluded-but-open packs.
533
-
534
- Will merge to 'master'.
535
- source: <cover.1774641999.git.me@ttaylorr.com>
536
-
537
-
793
* yc/path-walk-fix-error-reporting (2026-03-20) 1 commit
794
(merged to 'next' on 2026-04-01 at ddcff8b9c6)
795
+ path-walk: fix NULL pointer dereference in error message
@@ -577,21 +832,6 @@ Release tarballs are available at:
832
source: <20260317155230.619378-1-shreyanshpaliwalcmsmn@gmail.com>
833
834
580
-* ds/backfill-revs (2026-03-26) 6 commits
581
- (merged to 'next' on 2026-03-27 at d4703fdd35)
582
- + t5620: test backfill's unknown argument handling
583
- + path-walk: support wildcard pathspecs for blob filtering
584
- + backfill: work with prefix pathspecs
585
- + backfill: accept revision arguments
586
- + t5620: prepare branched repo for revision tests
587
- + revision: include object-name.h
588
-
589
- `git backfill` learned to accept revision and pathspec arguments.
590
-
591
- Will merge to 'master'.
592
- source: <pull.2070.v3.git.1774538094.gitgitgadget@gmail.com>
593
-
594
-
835
* ps/commit-graph-overflow-fix (2026-03-23) 1 commit
836
(merged to 'next' on 2026-04-01 at c502054354)
837
+ commit-graph: fix writing generations with dates exceeding 34 bits
@@ -604,16 +844,6 @@ Release tarballs are available at:
844
source: <20260324-pks-commit-graph-overflow-v2-1-843568cf8780@pks.im>
845
846
607
-* tc/replay-down-to-root (2026-03-24) 1 commit
608
- (merged to 'next' on 2026-03-31 at 47456fcc12)
609
- + replay: support replaying down from root commit
610
-
611
- git replay now supports replaying down to the root commit.
612
-
613
- Will merge to 'master'.
614
- source: <20260324-toon-replay-down-to-root-v2-1-34e723489f6e@iotcl.com>
615
-
616
-
847
* ua/push-remote-group (2026-03-27) 3 commits
848
- SQUASH??? - futureproof against the attack of the "main"
849
- push: support pushing to a remote group
@@ -628,48 +858,6 @@ Release tarballs are available at:
858
source: <20260325190906.1153080-1-usmanakinyemi202@gmail.com>
859
860
631
-* ps/odb-generic-object-name-handling (2026-03-20) 16 commits
632
- (merged to 'next' on 2026-03-31 at c14d7bdd1e)
633
- + odb: introduce generic `odb_find_abbrev_len()`
634
- + object-file: move logic to compute packed abbreviation length
635
- + object-name: move logic to compute loose abbreviation length
636
- + object-name: simplify computing common prefixes
637
- + object-name: abbreviate loose object names without `disambiguate_state`
638
- + object-name: merge `update_candidates()` and `match_prefix()`
639
- + object-name: backend-generic `get_short_oid()`
640
- + object-name: backend-generic `repo_collect_ambiguous()`
641
- + object-name: extract function to parse object ID prefixes
642
- + object-name: move logic to iterate through packed prefixed objects
643
- + object-name: move logic to iterate through loose prefixed objects
644
- + odb: introduce `struct odb_for_each_object_options`
645
- + oidtree: extend iteration to allow for arbitrary return codes
646
- + oidtree: modernize the code a bit
647
- + Merge branch 'ps/object-counting' into ps/odb-generic-object-name-handling
648
- + object-file: fix sparse 'plain integer as NULL pointer' error
649
- (this branch is used by ps/odb-cleanup.)
650
-
651
- Object name handling (disambiguation and abbreviation) has been
652
- refactored to be backend-generic, moving logic into the respective
653
- object database backends.
654
-
655
- Will merge to 'master'.
656
- cf. <874ilxm4wp.fsf@toon--20250203-5JQV3.mail-host-address-is-not-set>
657
- source: <20260320-b4-pks-odb-source-abbrev-v2-0-fe65dcd8c735@pks.im>
658
-
659
-
660
-* aa/reap-transport-child-processes (2026-03-12) 1 commit
661
- (merged to 'next' on 2026-03-31 at fb77f8ba9e)
662
- + transport-helper, connect: use clean_on_exit to reap children on abnormal exit
663
-
664
- A few code paths that spawned child processes for network
665
- connection weren't wait(2)ing for their children and letting "init"
666
- reap them instead; they have been tightened.
667
-
668
- Will merge to 'master'.
669
- cf. <20260325061357.GA3772970@coredump.intra.peff.net>
670
- source: <20260312214945.4050010-1-cshung@gmail.com>
671
-
672
-
861
* hn/git-checkout-m-with-stash (2026-03-17) 4 commits
862
- checkout: -m (--merge) uses autostash when switching branches
863
- sequencer: teach autostash apply to take optional conflict marker labels
@@ -696,39 +884,6 @@ Release tarballs are available at:
884
source: <V2_CV_name-rev_--format.51b@msgid.xyz>
885
886
699
-* pw/worktree-reduce-the-repository (2026-03-26) 3 commits
700
- (merged to 'next' on 2026-03-30 at f967ececef)
701
- + worktree: reject NULL worktree in get_worktree_git_dir()
702
- + worktree add: stop reading ".git/HEAD"
703
- + worktree: remove "the_repository" from is_current_worktree()
704
-
705
- Reduce the reference to the_repository in the worktree subsystem.
706
-
707
- Will merge to 'master'.
708
- source: <cover.1774534617.git.phillip.wood@dunelm.org.uk>
709
-
710
-
711
-* mf/format-patch-commit-list-format (2026-03-23) 9 commits
712
- (merged to 'next' on 2026-03-24 at 0f5b6702eb)
713
- + format-patch: --commit-list-format without prefix
714
- + format-patch: add preset for --commit-list-format
715
- + format-patch: wrap generate_commit_list_cover()
716
- + format.commitListFormat: strip meaning from empty
717
- + docs/pretty-formats: add %(count) and %(total)
718
- + format-patch: rename --cover-letter-format option
719
- + format-patch: refactor generate_commit_list_cover
720
- + pretty.c: better die message %(count) and %(total)
721
- + Merge branch 'mf/format-patch-cover-letter-format' into mf/format-patch-commit-list-format
722
- (this branch is used by mf/format-patch-commit-list-format-doc; uses mf/format-patch-cover-letter-format.)
723
-
724
- Improve the recently introduced `git format-patch
725
- --commit-list-format` (formerly `--cover-letter-format`) option,
726
- including a new "modern" preset and better CLI ergonomics.
727
-
728
- Waiting for the follow-on topic.
729
- source: <cover.1774284699.git.mroik@delayed.space>
730
-
731
-
887
* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
888
- doc: document autocorrect API
889
- parseopt: add tests for subcommand autocorrection
@@ -750,43 +905,21 @@ Release tarballs are available at:
905
906
907
* mm/line-log-use-standard-diff-output (2026-03-16) 4 commits
753
- - doc: note that -L supports patch formatting and pickaxe options
754
- - t4211: add tests for -L with standard diff options
755
- - line-log: route -L output through the standard diff pipeline
756
- - line-log: fix crash when combined with pickaxe options
908
+ (merged to 'next' on 2026-04-01 at 724e6526dc)
909
+ + doc: note that -L supports patch formatting and pickaxe options
910
+ + t4211: add tests for -L with standard diff options
911
+ + line-log: route -L output through the standard diff pipeline
912
+ + line-log: fix crash when combined with pickaxe options
913
914
The way the "git log -L<range>:<file>" feature is bolted onto the
915
log/diff machinery is being reworked a bit to make the feature
916
compatible with more diff options, like -S/G.
917
762
- Will merge to 'next'.
918
+ Will merge to 'master'.
919
cf. <xmqqbjg3y8i9.fsf@gitster.g>
920
source: <pull.2065.v2.git.1773714095.gitgitgadget@gmail.com>
921
922
767
-* ar/config-hook-cleanups (2026-03-25) 13 commits
768
- (merged to 'next' on 2026-03-30 at c128948b16)
769
- + hook: reject unknown hook names in git-hook(1)
770
- + hook: show disabled hooks in "git hook list"
771
- + hook: show config scope in git hook list
772
- + hook: introduce hook_config_cache_entry for per-hook data
773
- + t1800: add test to verify hook execution ordering
774
- + hook: make consistent use of friendly-name in docs
775
- + hook: replace hook_list_clear() -> string_list_clear_func()
776
- + hook: detect & emit two more bugs
777
- + hook: rename cb_data_free/alloc -> hook_data_free/alloc
778
- + hook: fix minor style issues
779
- + builtin/receive-pack: properly init receive_hook strbuf
780
- + hook: move unsorted_string_list_remove() to string-list.[ch]
781
- + Merge branch 'ar/config-hooks' into ar/config-hook-cleanups
782
- (this branch is used by ar/parallel-hooks.)
783
-
784
- Code clean-up around the recent "hooks defined in config" topic.
785
-
786
- Will merge to 'master'.
787
- source: <20260325195503.1139418-1-adrian.ratiu@collabora.com>
788
-
789
-
923
* ab/clone-default-object-filter (2026-03-14) 1 commit
924
- clone: add clone.<url>.defaultObjectFilter config
925
@@ -855,26 +988,7 @@ Release tarballs are available at:
988
source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>
989
990
858
-* mf/format-patch-cover-letter-format (2026-03-06) 5 commits
859
- (merged to 'next' on 2026-03-09 at e872adca7b)
860
- + docs: add usage for the cover-letter fmt feature
861
- + format-patch: add commitListFormat config
862
- + format-patch: add ability to use alt cover format
863
- + format-patch: move cover letter summary generation
864
- + pretty.c: add %(count) and %(total) placeholders
865
- (this branch is used by mf/format-patch-commit-list-format and mf/format-patch-commit-list-format-doc.)
866
-
867
- "git format-patch --cover-letter" learns to use a simpler format
868
- instead of the traditional shortlog format to list its commits with
869
- a new --cover-letter-format option and format.commitListFormat
870
- configuration variable.
871
-
872
- Waiting for the follow-on topic.
873
- source: <cover.1772839973.git.mroik@delayed.space>
874
-
875
-
876
-* pt/fsmonitor-linux (2026-03-30) 13 commits
877
- - fsmonitor: fix split-index bitmap bounds in tweak_fsmonitor()
991
+* pt/fsmonitor-linux (2026-04-06) 13 commits
992
- fsmonitor: convert shown khash to strset in do_handle_client
993
- fsmonitor: add tests for Linux
994
- fsmonitor: add timeout to daemon stop command
@@ -887,27 +1001,15 @@ Release tarballs are available at:
1001
- compat/win32: add pthread_cond_timedwait
1002
- fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
1003
- fsmonitor: fix khash memory leak in do_handle_client
1004
+ - t9210: disable GIT_TEST_SPLIT_INDEX for scalar clone tests
1005
1006
The fsmonitor daemon has been implemented for Linux.
1007
1008
Needs review.
894
- source: <pull.2147.v12.git.git.1774937958.gitgitgadget@gmail.com>
895
-
896
-
897
-* sa/replay-revert (2026-03-25) 2 commits
898
- (merged to 'next' on 2026-03-30 at ef4896a676)
899
- + replay: add --revert mode to reverse commit changes
900
- + sequencer: extract revert message formatting into shared function
901
- (this branch is used by tc/replay-ref.)
902
-
903
- "git replay" (experimental) learns, in addition to "pick" and
904
- "replay", a new operating mode "revert".
905
-
906
- Will merge to 'master'.
907
- source: <20260325202354.10628-1-siddharthasthana31@gmail.com>
1009
+ source: <pull.2147.v13.git.git.1775498098.gitgitgadget@gmail.com>
1010
1011
910
-* ar/parallel-hooks (2026-03-26) 13 commits
1012
+* ar/parallel-hooks (2026-04-04) 13 commits
1013
- hook: allow hook.jobs=-1 to use all available CPU cores
1014
- hook: add hook.<event>.enabled switch
1015
- hook: move is_known_hook() to hook.c for wider use
@@ -921,10 +1023,9 @@ Release tarballs are available at:
1023
- config: add a repo_config_get_uint() helper
1024
- repository: fix repo_init() memleak due to missing _clear()
1025
- Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks
924
- (this branch uses ar/config-hook-cleanups.)
1026
1027
Needs review.
927
- source: <20260326101819.1307742-1-adrian.ratiu@collabora.com>
1028
+ source: <20260404082934.173788-1-adrian.ratiu@collabora.com>
1029
1030
1031
* en/xdiff-cleanup-3 (2026-03-30) 6 commits
@@ -934,38 +1035,10 @@ Release tarballs are available at:
1035
- xdiff/xdl_cleanup_records: use unambiguous types
1036
- xdiff: use unambiguous types in xdl_bogo_sqrt()
1037
- xdiff/xdl_cleanup_records: delete local recs pointer
1038
+ (this branch is used by pw/xdiff-shrink-memory-consumption.)
1039
938
- Preparation of the xdiff/ codebase to work with Rust
1040
+ Preparation of the xdiff/ codebase to work with Rust.
1041
940
- Expecting a (hopefully small and final) reroll?
941
- cf. <40589b6f-6694-4d9c-8367-3f6352e45e7b@gmail.com>
942
- cf. <32c34d0d-9358-43e3-9d58-5999b3ffd6c2@gmail.com>
1042
+ Changes the behaviour without meaning to, which needs fixing.
1043
cf. <87a54698-396d-4de8-bd9d-cd72f8d1e8df@gmail.com>
1044
source: <pull.2156.v4.git.git.1774890003.gitgitgadget@gmail.com>
945
-
946
---------------------------------------------------
947
-[Discarded]
948
-
949
-* bc/rev-parse-parseopt-help-exit-code (2026-03-16) 1 commit
950
- . rev-parse: have --parseopt callers exit 0 on --help
951
-
952
- `rev-parse --parseopt` now includes "exit 0" in its output when the
953
- user asks for help, ensuring that scripts using the recommended `eval`
954
- pattern exit successfully.
955
-
956
- Need to step back and rethink how exit code should look like.
957
- cf. <20260317150759.GA9975@coredump.intra.peff.net>
958
- source: <20260316220742.1286157-1-sandals@crustytoothpaste.net>
959
-
960
-
961
-* js/macos-homebrew-forgets-reg-enhanced (2026-03-20) 1 commit
962
- . osx-clang: work around Homebrew's clang lacking REG_ENHANCED
963
-
964
- The build on macOS with Clang is fixed to work around a Homebrew change
965
- that exposed an issue with missing REG_ENHANCED.
966
-
967
- No longer needed?
968
- cf. <6c108696-2d41-4fa1-9662-fbf6db97f767@web.de>
969
- cf. <458ad3c1-96df-4575-ee42-e6eb754f25f6@gmx.de>
970
- cf. <xmqq8qbi5vvx.fsf@gitster.g>
971
- source: <d340af9e-334c-4e81-e58a-fc3dea73ebdd@gmx.de>