What's cooking (2026/07 #06)
Junio C Hamano committed
Jul 14, 2026 at 14:53 UTC
8550e564f5760f614eb0a9501dacbd2503632bfb
1 file changed
+314
-222
whats-cooking.txt
+314
-222
@@ -1,23 +1,24 @@
1
To: git@vger.kernel.org
2
-Subject: What's cooking in git.git (Jul 2026, #05)
3
-X-master-at: f60db8d575adb79761d363e026fb49bddf330c73
4
-X-next-at: 8d093f411df65440e1ddb297f1180711f28b7488
2
+Subject: What's cooking in git.git (Jul 2026, #06)
3
+X-master-at: 55526a18268bbc1ddaf8a6b7850c33d984eac9e9
4
+X-next-at: 8e2bf96aa5bacd9f277397638fd9823d0be25e88
5
Bcc: lwn@lwn.net, gitster@pobox.com
6
7
-What's cooking in git.git (Jul 2026, #05)
7
+What's cooking in git.git (Jul 2026, #06)
8
-----------------------------------------
9
10
Here are the topics that have been cooking in my tree. Commits
11
prefixed with '+' are in 'next' (being in 'next' is a sign that a
12
topic is stable enough to be used and is a candidate to be in a
13
future release). Commits prefixed with '-' are only in 'seen', and
14
-aren't considered "accepted" at all. They may be annotated with a URL
14
+aren't considered "accepted" at all. They may be annotated with a URL
15
to a message that raises issues but they are by no means exhaustive.
16
A topic without enough support may be discarded after a long period
17
of no activity (of course, it can be resubmitted when new interest
18
arises).
19
20
-The first batch of topics have now graduated to the 'master' branch.
20
+The second batch of topics have now graduated to the 'master'
21
+branch.
22
23
Copies of the source code to Git live in many repositories, and the
24
following is a list of the ones I push into or their mirrors. Some
@@ -47,91 +48,174 @@ Release tarballs are available at:
48
49
https://www.kernel.org/pub/software/scm/git/
50
51
+--------------------------------------------------
52
+[Graduated to 'master']
53
+
54
+* ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit
55
+ (merged to 'next' on 2026-07-06 at b099249efd)
56
+ + gpg-interface: fix strip_cr_before_lf to only remove CR before LF
57
+
58
+ The GPG and SSH signature parsing code has been corrected to strip
59
+ carriage return characters only when they immediately precede line
60
+ feeds, instead of unconditionally stripping all carriage returns.
61
+
62
+ Graduated to 'master'.
63
+ source: <20260624093618.17456-1-antonio.destefani08@gmail.com>
64
+
65
+
66
+* hn/branch-push-slip-advice (2026-06-27) 2 commits
67
+ (merged to 'next' on 2026-07-06 at acdff65ac5)
68
+ + push: suggest <remote> <branch> for a slash slip
69
+ + branch: suggest <remote>/<branch> on upstream slip
70
+
71
+ When 'git push origin/main' or 'git branch origin main' is run, the
72
+ command is now recognized as a potential typo, and advice has been
73
+ added to offer a typo fix.
74
+
75
+ Graduated to 'master'.
76
+ cf. <xmqqfr272lq7.fsf@gitster.g>
77
+ source: <pull.2331.v3.git.git.1782583345.gitgitgadget@gmail.com>
78
+
79
+
80
+* jk/format-patch-leakfix (2026-06-29) 2 commits
81
+ (merged to 'next' on 2026-07-06 at 35aff0d609)
82
+ + format-patch: fix leak of rev_info in prepare_bases()
83
+ + t: move LSan errors from stdout to stderr
84
+
85
+ A memory leak in the '--base' handling of 'git format-patch' has been
86
+ plugged, and the leak reporting of the test suite when running under a
87
+ TAP harness has been improved.
88
+
89
+ Graduated to 'master'.
90
+ cf. <akOZy-BygZS8fqPM@pks.im>
91
+ source: <20260630063944.GA3733670@coredump.intra.peff.net>
92
+
93
+
94
+* jk/reftable-leakfix (2026-06-28) 1 commit
95
+ (merged to 'next' on 2026-07-06 at 55ce81f2d5)
96
+ + reftable: fix unlikely leak on API error
97
+
98
+ A memory leak in the 'reftable_writer_new()' initialization function
99
+ has been fixed by delaying the allocation of 'struct reftable_writer'
100
+ until after input options are validated.
101
+
102
+ Graduated to 'master'.
103
+ cf. <akIPBJLtPqDjQt-A@pks.im>
104
+ source: <20260628090314.GA661068@coredump.intra.peff.net>
105
+
106
+
107
+* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
108
+ (merged to 'next' on 2026-07-06 at aa748c4564)
109
+ + prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
110
+ + prio-queue: rename .nr to .nr_ and add accessor helpers
111
+ (this branch is used by kk/prio-queue-cascade-sift.)
112
+
113
+ The lazy priority queue optimization pattern (deferring actual removal
114
+ in 'prio_queue_get()' to allow get+put fusion) has been folded
115
+ directly into 'prio_queue' itself, speeding up commit traversal
116
+ workflows and simplifying callers.
117
+
118
+ Graduated to 'master'.
119
+ cf. <xmqqh5mjrbgq.fsf@gitster.g>
120
+ source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>
121
+
122
+
123
+* ps/odb-generalize-prepare (2026-06-22) 3 commits
124
+ (merged to 'next' on 2026-07-06 at 6132517517)
125
+ + odb: introduce `odb_prepare()`
126
+ + odb/source: generalize `reprepare()` callback
127
+ + Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare
128
+
129
+ The 'reprepare()' callback for object database sources has been
130
+ generalized into a 'prepare()' callback with an optional flush cache
131
+ flag, and a new 'odb_prepare()' wrapper has been introduced to allow
132
+ pre-opening object database sources.
133
+
134
+ Graduated to 'master'.
135
+ cf. <87ik704f1j.fsf@emacs.iotcl.com>
136
+ source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>
137
+
138
--------------------------------------------------
139
[New Topics]
140
53
-* js/pack-objects-delta-size-t (2026-07-09) 12 commits
54
- - git-zlib: widen `git_deflate_bound()` to `size_t`
55
- - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
56
- - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
57
- - diff: widen `deflate_it()`'s bound local from int to `size_t`
58
- - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
59
- - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
60
- - delta: widen `create_delta()` and `diff_delta()` to `size_t`
61
- - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
62
- - pack-objects: widen `free_unpacked()` return to `size_t`
63
- - pack-objects: widen delta-cache accounting to `size_t`
64
- - delta: widen `create_delta_index()` parameter to `size_t`
65
- - diff-delta: widen `struct delta_index`' size fields to `size_t`
141
+* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
142
+ - send-pack: honor `no-ref-delta` capability
143
+ - pack-objects: support reuse with `--no-ref-delta`
144
+ - pack-objects: introduce `--no-ref-delta`
145
+ - t/helper: teach pack-deltas to list delta entries
146
67
- The pack-objects and delta-encoding code paths have been updated to
68
- use 'size_t' instead of 'unsigned long' for object sizes and offset
69
- limits, avoiding potential truncation issues on 64-bit Windows.
147
+ 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
148
+ encoded packfiles when the other side asks it to.
149
150
Needs review.
72
- source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>
151
+ source: <alQ7WKITYDXfiVn9@com-79390>
152
153
75
-* cl/b4-cover-change-id (2026-07-10) 1 commit
76
- - b4: include change-id in cover template
154
+* cc/doc-fast-export-synopsis-fix (2026-07-13) 1 commit
155
+ - fast-export: standardize usage string and SYNOPSIS
156
78
- The in-tree 'b4' cover letter template has been updated to include the
79
- 'change-id' trailer, ensuring that sent tags generated by 'b4' contain
80
- the required tracking information for subsequent runs.
157
+ The usage string and SYNOPSIS for 'git fast-export' have been
158
+ standardized to make them consistent with each other and with other
159
+ commands.
160
82
- Will merge to 'next'.
83
- source: <20260710-add-change-id-to-b4-template-v1-1-1bd37a25064e@black-desk.cn>
161
+ Will merge to 'next'?
162
+ cf. <alX5Nl8uX4ctVqo3@pks.im>
163
+ source: <20260713124153.245268-1-christian.couder@gmail.com>
164
165
86
-* ps/odb-stream-double-close-fix (2026-07-10) 1 commit
87
- - object-file: fix closing object stream twice
166
+* sk/t1100-modernize (2026-07-14) 2 commits
167
+ - t1100: move creation of expected output into setup test
168
+ - t1100: modernize test style
169
89
- The stream-based object signature verification path has been
90
- corrected to avoid double-closing the stream on read errors.
170
+ The test script 't/t1100-commit-tree-options.sh' has been modernized
171
+ by converting test cases to the modern style (using single quotes and
172
+ tab indentation) and moving the creation of the expected file inside
173
+ the setup test so it runs under the protection of the test harness.
174
92
- Will merge to 'next'.
93
- source: <20260710-pks-odb-stream-double-close-v1-1-d5fa233a37c7@pks.im>
175
+ Will merge to 'next'?
176
+ cf. <xmqq4ii1v7x0.fsf@gitster.g>
177
+ source: <20260714122033.61947-1-diy2903@gmail.com>
178
179
96
-* pz/fetch-submodule-errors-config (2026-07-11) 3 commits
97
- - fixup! fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
98
- - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
99
- - submodule: fix premature failure in recursive submodule fetch
180
+* tn/packfile-uri-concurrency (2026-07-13) 2 commits
181
+ - fetch-pack: accept "pack" output for packfile URIs
182
+ - http: use unique tempfiles for packfile URI downloads
183
101
- The 'git fetch' command has been updated to allow configuring how
102
- submodule fetch errors are handled. A new configuration variable
103
- 'fetch.submoduleErrors' and a corresponding '--submodule-errors'
104
- command-line option have been introduced, allowing users to make
105
- submodule fetch errors non-fatal (warn instead of fail). Additionally,
106
- a premature failure during recursive submodule fetches has been fixed
107
- by deferring the error until the OID-based retry phase also fails.
184
+ Concurrent downloads of packfiles via packfile URIs have been
185
+ supported by using unique temporary files, preventing corruption when
186
+ multiple processes fetch the same pack. The 'fetch-pack' command has
187
+ also been updated to tolerate pre-existing '.keep' files.
188
109
- Needs review.
110
- source: <20260710122655.3066377-1-paulius.zaleckas@gmail.com>
189
+ Expecting a reroll.
190
+ cf. <alaAi4vNwi-KabYV@com-76773>
191
+ source: <alVn-QmK3K91_tkH@com-76773>
192
193
113
-* gr/add-e-use-apply-api (2026-07-10) 1 commit
114
- - builtin/add.c: replace run_command() with direct apply_all_patches() call
194
+* rs/strbuf-avoid-redundant-reset (2026-07-14) 1 commit
195
+ - strbuf: avoid redundant reset in strbuf_getwholeline()
196
116
- The application of the edited patch in 'git add -e' has been
117
- refactored to use the internal apply API directly, avoiding the need
118
- to spawn a 'git apply' subprocess.
197
+ A redundant 'strbuf_reset()' call in the 'HAVE_GETDELIM' path of
198
+ 'strbuf_getwholeline()' has been removed, as 'getdelim()' overwrites
199
+ the buffer and the length is updated afterwards.
200
120
- Needs review.
121
- source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>
201
+ Will merge to 'next'?
202
+ cf. <xmqq8q7dv82b.fsf@gitster.g>
203
+ source: <d4ffe7fb-f782-4f06-9e3b-f72729d1e225@web.de>
204
205
124
-* fz/rebase-autosquash-empty (2026-07-11) 1 commit
125
- . sequencer: honor --empty when a fixup!/squash! empties its target
206
+* rs/tempfile-wo-the-repository (2026-07-14) 5 commits
207
+ - use repo_hold_lock_file_for_update{,_mode,_timeout}() with custom repos
208
+ - tempfile: stop using the_repository
209
+ - lockfile: add repo_hold_lock_file_for_update{,_timeout}{,_mode}()
210
+ - refs/packed: use repo_create_tempfile()
211
+ - tempfile: add repo_create_tempfile{,_mode}()
212
127
- A commit that is emptied by melding a 'fixup!' or 'squash!' commit
128
- during 'git rebase --autosquash' is now handled according to the
129
- '--empty' option, allowing it to be dropped, kept, or to halt the
130
- rebase.
213
+ The tempfile and lockfile APIs have been refactored to stop depending
214
+ on the 'the_repository' global variable, and their callers have been
215
+ updated to use the repository-aware variants.
216
132
- Waiting for response(s) to review comment(s).
133
- cf. <xmqqh5m494yh.fsf@gitster.g>
134
- source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>
217
+ Needs review.
218
+ source: <20260714175956.54601-1-l.s.r@web.de>
219
220
--------------------------------------------------
221
[Stalled]
@@ -198,6 +282,95 @@ Release tarballs are available at:
282
--------------------------------------------------
283
[Cooking]
284
285
+* js/pack-objects-delta-size-t (2026-07-09) 12 commits
286
+ - git-zlib: widen `git_deflate_bound()` to `size_t`
287
+ - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
288
+ - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
289
+ - diff: widen `deflate_it()`'s bound local from int to `size_t`
290
+ - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
291
+ - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
292
+ - delta: widen `create_delta()` and `diff_delta()` to `size_t`
293
+ - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
294
+ - pack-objects: widen `free_unpacked()` return to `size_t`
295
+ - pack-objects: widen delta-cache accounting to `size_t`
296
+ - delta: widen `create_delta_index()` parameter to `size_t`
297
+ - diff-delta: widen `struct delta_index`' size fields to `size_t`
298
+
299
+ The pack-objects and delta-encoding code paths have been updated to
300
+ use 'size_t' instead of 'unsigned long' for object sizes and offset
301
+ limits, avoiding potential truncation issues on 64-bit Windows.
302
+
303
+ Needs review.
304
+ source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>
305
+
306
+
307
+* cl/b4-cover-change-id (2026-07-10) 1 commit
308
+ (merged to 'next' on 2026-07-13 at 15c7ad9a3f)
309
+ + b4: include change-id in cover template
310
+
311
+ The in-tree 'b4' cover letter template has been updated to include the
312
+ 'change-id' trailer, ensuring that sent tags generated by 'b4' contain
313
+ the required tracking information for subsequent runs.
314
+
315
+ Will merge to 'master'.
316
+ source: <20260710-add-change-id-to-b4-template-v1-1-1bd37a25064e@black-desk.cn>
317
+
318
+
319
+* ps/odb-stream-double-close-fix (2026-07-10) 1 commit
320
+ (merged to 'next' on 2026-07-13 at dd2c5795b7)
321
+ + object-file: fix closing object stream twice
322
+
323
+ The stream-based object signature verification path has been
324
+ corrected to avoid double-closing the stream on read errors.
325
+
326
+ Will merge to 'master'.
327
+ source: <20260710-pks-odb-stream-double-close-v1-1-d5fa233a37c7@pks.im>
328
+
329
+
330
+* pz/fetch-submodule-errors-config (2026-07-14) 4 commits
331
+ - fixup! fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
332
+ - fixup! fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
333
+ - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
334
+ - submodule: fix premature failure in recursive submodule fetch
335
+
336
+ The 'git fetch' command has been updated to allow configuring how
337
+ submodule fetch errors are handled. A new configuration variable
338
+ 'fetch.submoduleErrors' and a corresponding '--submodule-errors'
339
+ command-line option have been introduced, allowing users to make
340
+ submodule fetch errors non-fatal (warn instead of fail).
341
+ Additionally, a premature failure during recursive submodule fetches
342
+ has been fixed by deferring the error until the OID-based retry phase
343
+ also fails.
344
+
345
+ Needs review.
346
+ cf. <xmqqldbdvb3x.fsf@gitster.g>
347
+ source: <20260714132959.3368867-1-paulius.zaleckas@gmail.com>
348
+
349
+
350
+* gr/add-e-use-apply-api (2026-07-10) 1 commit
351
+ - builtin/add.c: replace run_command() with direct apply_all_patches() call
352
+
353
+ The application of the edited patch in 'git add -e' has been
354
+ refactored to use the internal apply API directly, avoiding the need
355
+ to spawn a 'git apply' subprocess.
356
+
357
+ Needs review.
358
+ source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>
359
+
360
+
361
+* fz/rebase-autosquash-empty (2026-07-11) 1 commit
362
+ . sequencer: honor --empty when a fixup!/squash! empties its target
363
+
364
+ A commit that is emptied by melding a 'fixup!' or 'squash!' commit
365
+ during 'git rebase --autosquash' is now handled according to the
366
+ '--empty' option, allowing it to be dropped, kept, or to halt the
367
+ rebase.
368
+
369
+ Expecting a reroll.
370
+ cf. <DJXL4KSUEAD4.1EE4ERHJZ00TR@gmail.com>
371
+ source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>
372
+
373
+
374
* dm/submodule-update-i-shorthand (2026-07-07) 1 commit
375
- submodule--helper: accept '-i' shorthand for update --init
376
@@ -205,7 +378,8 @@ Release tarballs are available at:
378
'git submodule update' command until it was broken in a modernization
379
of the option-parsing code, has been restored.
380
208
- Needs review.
381
+ Will merge to 'next'.
382
+ cf. <xmqq8q7ltf51.fsf@gitster.g>
383
source: <20260708-submodule-init-v1-1-719456077262@atmark-techno.com>
384
385
@@ -296,7 +470,7 @@ Release tarballs are available at:
470
source: <20260513070803.163546-1-grawity@nullroute.lt>
471
472
299
-* ps/odb-pluggable-housekeeping (2026-07-07) 11 commits
473
+* ps/odb-pluggable-housekeeping (2026-07-12) 12 commits
474
- odb: make optimizations pluggable
475
- builtin/gc: fix signedness issues in ODB-related functionality
476
- builtin/gc: refactor ODB optimizations to operate on "files" source
@@ -308,17 +482,18 @@ Release tarballs are available at:
482
- builtin/gc: extract object database optimizations into separate function
483
- builtin/gc: move worktree and rerere tasks before object optimizations
484
- odb: run "pre-auto-gc" hook for all maintenance tasks
485
+ - t7900: simplify how we check for maintenance tasks
486
487
Object database housekeeping in 'git gc' and 'git maintenance' has
313
- been refactored to be pluggable. The files-backend specific logic,
488
+ been refactored to be pluggable. The files-backend specific logic,
489
including incremental and geometric repacking as well as object
490
pruning, has been moved out of the command implementation and into the
491
files object database source, enabling future alternative object
492
database backends to implement their own housekeeping services.
493
319
- Expecting a reroll.
320
- cf. <ak4CHGpIhVIT9sd2@pks.im>
321
- source: <20260707-b4-pks-odb-optimize-v1-0-aae607667be4@pks.im>
494
+ Needs review.
495
+ cf. <xmqqwluyyhv1.fsf@gitster.g>
496
+ source: <20260713-b4-pks-odb-optimize-v2-0-9c2c3ee94b38@pks.im>
497
498
499
* tc/bundle-uri-empty-fix (2026-07-08) 2 commits
@@ -326,11 +501,11 @@ Release tarballs are available at:
501
+ bundle-uri: stop sending invalid bundle configuration
502
+ bundle-uri: drain remaining response on invalid bundle-uri lines
503
329
- The client-side parser of server-advertised bundle-URI list has been
330
- updated to drain the remaining response in order to avoid protocol
331
- desynchronization when the server sends a misconfigured list. Also,
332
- the server-side has been taught to omit empty configuration values
333
- instead of sending invalid key-value lines.
504
+ The client-side parser of the server-advertised bundle-URI list has
505
+ been updated to drain the remaining response in order to avoid
506
+ protocol desynchronization when the server sends a misconfigured list.
507
+ Also, the server-side has been taught to omit empty configuration
508
+ values instead of sending invalid key-value lines.
509
510
Will merge to 'master'.
511
cf. <xmqqtsq9qj5k.fsf@gitster.g>
@@ -374,27 +549,29 @@ Release tarballs are available at:
549
source: <pull.2174.v2.git.1783683577.gitgitgadget@gmail.com>
550
551
377
-* ps/odb-for-each-object-filter (2026-07-10) 9 commits
552
+* ps/odb-for-each-object-filter (2026-07-13) 10 commits
553
- builtin/cat-file: filter objects via object database
554
- odb: introduce object filters to `odb_for_each_object()`
555
- pack-bitmap: introduce function to open bitmap for a single source
556
- pack-bitmap: drop `_1` suffix from functions that open bitmaps
557
- pack-bitmap: iterate object sources when opening bitmaps
558
- pack-bitmap: allow aborting iteration of bitmapped objects
559
+ - pack-objects: drop unused return value from add_object_entry()
560
- pack-bitmap: mark object filter as `const`
561
- odb/source-packed: improve lookup when enumerating objects
562
- Merge branch 'ps/odb-drop-whence' into ps/odb-for-each-object-filter
563
(this branch uses ps/odb-drop-whence.)
564
389
- The object database enumeration interface 'odb_for_each_object()' has
390
- been taught to accept object filters, allowing the underlying backends
391
- to optimize the traversal by using reachability bitmaps when
392
- available. 'git cat-file --batch-all-objects' has been updated to
393
- use this generic interface, simplifying its code and avoiding direct
394
- access to ODB backend internals.
565
+ The object database enumeration interface 'odb_for_each_object()'
566
+ has been taught to accept object filters, allowing the underlying
567
+ backends to optimize the traversal by using reachability bitmaps
568
+ when available. 'git cat-file --batch-all-objects' has been updated
569
+ to use this generic interface, simplifying its code and avoiding
570
+ direct access to ODB backend internals.
571
396
- Needs review.
397
- source: <20260710-pks-odb-for-each-object-filter-v2-0-3710a9cc165a@pks.im>
572
+ Will merge to 'next'?
573
+ cf. <alW0KzSZuZnHmOZD@com-79390>
574
+ source: <20260713-pks-odb-for-each-object-filter-v3-0-b3c65c641073@pks.im>
575
576
577
* ps/refs-wo-the-repository (2026-07-09) 8 commits
@@ -410,7 +587,7 @@ Release tarballs are available at:
587
588
The ref subsystem and the worktree API have been refactored to pass a
589
repository pointer down the call chain, allowing them to drop
413
- references to the global 'the_repository' variable. As part of this,
590
+ references to the global 'the_repository' variable. As part of this,
591
the handling of the 'core.packedRefsTimeout' configuration has been
592
moved into the per-repository ref store structure.
593
@@ -426,7 +603,7 @@ Release tarballs are available at:
603
604
The 'topo_levels' slab was propagated only to the topmost layer of a
605
split commit-graph chain, causing topological levels for commits in
429
- base layers to be recomputed during incremental writes. This has been
606
+ base layers to be recomputed during incremental writes. This has been
607
corrected.
608
609
Will merge to 'master'.
@@ -574,7 +751,8 @@ Release tarballs are available at:
751
modernized to use 'test_path_is_file' and 'test_path_is_missing'
752
instead of raw 'test -f' and '! test -f' calls.
753
577
- Needs review.
754
+ Will merge to 'next'?
755
+ cf. <alTHrUEh4_O5ROeu@pks.im>
756
source: <20260711160447.99708-1-marcelomlage@usp.br>
757
758
@@ -593,8 +771,8 @@ Release tarballs are available at:
771
Various test scripts have been updated to clean up large temporary
772
files and repositories, reducing peak disk usage during testing.
773
Also, expensive tests have been disabled on platforms that lack
596
- sufficient resources (like 32-bit platforms and Windows CI
597
- runners), and the long test suite has been enabled in GitLab CI.
774
+ sufficient resources (like 32-bit platforms and Windows CI runners),
775
+ and the long test suite has been enabled in GitLab CI.
776
777
Will merge to 'master'.
778
cf. <20260707043026.GB677056@coredump.intra.peff.net>
@@ -624,7 +802,7 @@ Release tarballs are available at:
802
The build system has been updated to support building universal macOS
803
binaries when 'Rust' is enabled, by compiling separate static archives
804
for each target triple listed in 'RUST_TARGETS' and combining them
627
- using the macOS 'lipo' tool. The 'git-credential-osxkeychain' helper
805
+ using the macOS 'lipo' tool. The 'git-credential-osxkeychain' helper
806
has been updated to link against '$(RUST_LIB)' when 'Rust' is enabled.
807
808
Will merge to 'master'.
@@ -640,7 +818,8 @@ Release tarballs are available at:
818
configuration files has been taught to use the location of the
819
worktree in its condition.
820
643
- Needs review.
821
+ Will merge to 'next'?
822
+ cf. <alTJCTKR9jOWfgbk@pks.im>
823
source: <20260710-includeif-worktree-v8-0-04686d8a616c@black-desk.cn>
824
825
@@ -673,20 +852,6 @@ Release tarballs are available at:
852
source: <20260630020220.1559190-1-bblima@usp.br>
853
854
676
-* jk/format-patch-leakfix (2026-06-29) 2 commits
677
- (merged to 'next' on 2026-07-06 at 35aff0d609)
678
- + format-patch: fix leak of rev_info in prepare_bases()
679
- + t: move LSan errors from stdout to stderr
680
-
681
- A memory leak in the '--base' handling of 'git format-patch' has been
682
- plugged, and the leak-reporting of the test suite when running under a
683
- TAP harness has been improved.
684
-
685
- Will merge to 'master'.
686
- cf. <akOZy-BygZS8fqPM@pks.im>
687
- source: <20260630063944.GA3733670@coredump.intra.peff.net>
688
-
689
-
855
* ps/setup-split-discovery-and-setup (2026-07-07) 16 commits
856
(merged to 'next' on 2026-07-10 at 1691a942ab)
857
+ setup: mark `set_git_work_tree()` as file-local
@@ -707,7 +872,7 @@ Release tarballs are available at:
872
+ Merge branch 'ps/refs-onbranch-fixes' into ps/setup-split-discovery-and-setup
873
874
The repository discovery and repository configuration phases, which
710
- were previously intertwined in 'setup.c', have been split. Repository
875
+ were previously intertwined in 'setup.c', have been split. Repository
876
discovery has been updated to populate a 'struct repo_discovery'
877
without modifying the repository state, which is then taken by
878
repository configuration to initialize the repository, paving the way
@@ -718,14 +883,9 @@ Release tarballs are available at:
883
source: <20260707-pks-setup-split-discovery-and-setup-v2-0-aab372cd227c@pks.im>
884
885
721
-* pw/rebase-drop-notes-with-commit (2026-06-30) 15 commits
722
- - amend! sequencer: simplify pick_one_commit()
723
- - amend! sequencer: remove unnecessary "or" in pick_one_commit()
724
- - fixup! sequencer: never reschedule on failed commit
725
- - fixup! sequencer: be more careful with external merge
886
+* pw/rebase-drop-notes-with-commit (2026-07-13) 10 commits
887
- sequencer: do not record dropped commits as rewritten
888
- sequencer: use an enum to represent result of picking a commit
728
- - sequencer: return early from pick_one_commit() on success
889
- sequencer: simplify pick_one_commit()
890
- sequencer: remove unnecessary condition in pick_one_commit()
891
- sequencer: simplify handing of fixup with conflicts
@@ -735,14 +895,14 @@ Release tarballs are available at:
895
- sequencer: move definition of is_final_fixup()
896
- t3400: restore coverage for note copying with apply backend
897
738
- The rebase post-rewrite notes-copying logic has been corrected. When a
739
- commit is dropped during rebase (e.g., because its changes are already
740
- upstream), it is no longer recorded as rewritten, preventing its notes
741
- from being copied to an unrelated commit.
898
+ The rebase post-rewrite notes-copying logic has been corrected. When
899
+ a commit is dropped during rebase (e.g., because its changes are
900
+ already upstream), it is no longer recorded as rewritten, preventing
901
+ its notes from being copied to an unrelated commit.
902
743
- Expecting a reroll.
744
- cf. <dce74d17-eefd-40bb-82f3-f6b3179cc2b6@gmail.com>
745
- source: <cover.1782833268.git.phillip.wood@dunelm.org.uk>
903
+ Needs review.
904
+ cf. <alTxn7MmX3aH_7gp@ugly.lan>
905
+ source: <cover.1783948637.git.phillip.wood@dunelm.org.uk>
906
907
908
* jk/bloom-leak-fixes (2026-06-30) 3 commits
@@ -811,7 +971,7 @@ Release tarballs are available at:
971
- repack: unconditionally exclude non-kept packs
972
973
'git repack' has been taught to accept '--geometric' and '--cruft'
814
- together. When both are given, non-cruft packs are rolled up by the
974
+ together. When both are given, non-cruft packs are rolled up by the
975
geometric repack as usual, while a separate cruft pack is written to
976
collect unreachable objects.
977
@@ -820,31 +980,6 @@ Release tarballs are available at:
980
source: <cover.1782500507.git.me@ttaylorr.com>
981
982
823
-* jk/reftable-leakfix (2026-06-28) 1 commit
824
- (merged to 'next' on 2026-07-06 at 55ce81f2d5)
825
- + reftable: fix unlikely leak on API error
826
-
827
- A memory leak in the 'reftable_writer_new()' initialization function
828
- has been fixed by delaying the allocation of 'struct reftable_writer'
829
- until after input options are validated.
830
-
831
- Will merge to 'master'.
832
- cf. <akIPBJLtPqDjQt-A@pks.im>
833
- source: <20260628090314.GA661068@coredump.intra.peff.net>
834
-
835
-
836
-* ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit
837
- (merged to 'next' on 2026-07-06 at b099249efd)
838
- + gpg-interface: fix strip_cr_before_lf to only remove CR before LF
839
-
840
- The GPG and SSH signature parsing code has been corrected to strip
841
- carriage return characters only when they immediately precede line
842
- feeds, instead of unconditionally stripping all carriage returns.
843
-
844
- Will merge to 'master'.
845
- source: <20260624093618.17456-1-antonio.destefani08@gmail.com>
846
-
847
-
983
* jt/receive-pack-use-odb-transactions (2026-07-10) 11 commits
984
- builtin/receive-pack: stage incoming objects via ODB transactions
985
- builtin/receive-pack: drop redundant tmpdir env
@@ -862,7 +997,8 @@ Release tarballs are available at:
997
interfaces instead of directly managing 'tmp_objdir' for staging
998
incoming objects, bringing it closer to being ODB backend agnostic.
999
865
- Needs review.
1000
+ Will merge to 'next'.
1001
+ cf. <alR1P-RGZNmjyiUE@pks.im>
1002
source: <20260710163722.2962278-1-jltobler@gmail.com>
1003
1004
@@ -877,7 +1013,7 @@ Release tarballs are available at:
1013
+ Merge branch 'ps/odb-source-packed' into ps/odb-drop-whence
1014
(this branch is used by ps/odb-for-each-object-filter.)
1015
880
- The 'whence' field in 'struct object_info' has been removed. The
1016
+ The 'whence' field in 'struct object_info' has been removed. The
1017
backend-specific object information retrieval has been refactored into
1018
an opt-in 'struct object_info_source' structure.
1019
@@ -910,20 +1046,6 @@ Release tarballs are available at:
1046
source: <20260703-pks-reftable-hardening-v3-0-b87c555b9920@pks.im>
1047
1048
913
-* hn/branch-push-slip-advice (2026-06-27) 2 commits
914
- (merged to 'next' on 2026-07-06 at acdff65ac5)
915
- + push: suggest <remote> <branch> for a slash slip
916
- + branch: suggest <remote>/<branch> on upstream slip
917
-
918
- When 'git push origin/main' or 'git branch origin main' is run, the
919
- command is now recognized as a potential typo, and advice has been
920
- added to offer a typo fix.
921
-
922
- Will merge to 'master'.
923
- cf. <xmqqfr272lq7.fsf@gitster.g>
924
- source: <pull.2331.v3.git.git.1782583345.gitgitgadget@gmail.com>
925
-
926
-
1049
* jc/history-message-prep-fix (2026-06-29) 1 commit
1050
(merged to 'next' on 2026-07-06 at 00534a21ce)
1051
+ history: streamline message preparation and plug file stream leak
@@ -936,7 +1058,8 @@ Release tarballs are available at:
1058
source: <xmqqmrwdxrat.fsf@gitster.g>
1059
1060
939
-* ty/migrate-excludes-file (2026-07-12) 9 commits
1061
+* ty/migrate-excludes-file (2026-07-13) 10 commits
1062
+ - repository: adjust the comment of config_values_private_
1063
- environment: move object_creation_mode into repo_config_values
1064
- environment: move autorebase into repo_config_values
1065
- environment: move push_default into repo_config_values
@@ -951,9 +1074,8 @@ Release tarballs are available at:
1074
(including 'editor_program', 'pager_program', 'askpass_program', and
1075
'push_default') have been migrated into the per-repository structure.
1076
954
- Expecting a reroll.
955
- cf. <2a39cee9-1082-48aa-b42e-e12c34fa0e29@malon.dev>
956
- source: <20260712111734.1073514-1-cat@malon.dev>
1077
+ Needs review.
1078
+ source: <20260714032525.1611141-1-cat@malon.dev>
1079
1080
1081
* dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
@@ -963,12 +1085,11 @@ Release tarballs are available at:
1085
timestamp resolution, has been wired up to the Meson build system.
1086
1087
Will discard.
966
- cf. <xmqqa4rx9mb5.fsf@gitster.g>
1088
+ cf. <45F2C180-1DE1-4371-869B-BF605B64E01A@gmail.com>
1089
source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>
1090
1091
970
-* ps/libgit-in-subdir (2026-07-10) 4 commits
971
- - fixup! Move libgit.a sources into separate "lib/" directory
1092
+* ps/libgit-in-subdir (2026-07-12) 3 commits
1093
- Move libgit.a sources into separate "lib/" directory
1094
- t/helper: prepare "test-example-tap.c" for introduction of "lib/"
1095
- Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir
@@ -977,25 +1098,9 @@ Release tarballs are available at:
1098
directory to clean up the top-level directory and clearly separate
1099
library code.
1100
980
- Waiting for response(s) to review comment(s).
981
- cf. <0c94331b-7eb1-4116-afa5-811082ad5854@ramsayjones.plus.com>
982
- source: <20260701-pks-libgit-in-subdir-v3-0-5e4860056094@pks.im>
983
-
984
-
985
-* ps/odb-generalize-prepare (2026-06-22) 3 commits
986
- (merged to 'next' on 2026-07-06 at 6132517517)
987
- + odb: introduce `odb_prepare()`
988
- + odb/source: generalize `reprepare()` callback
989
- + Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare
990
-
991
- The 'reprepare()' callback for object database sources has been
992
- generalized into a 'prepare()' callback with an optional flush cache
993
- flag, and a new 'odb_prepare()' wrapper has been introduced to allow
994
- pre-opening object database sources.
995
-
996
- Will merge to 'master'.
997
- cf. <87ik704f1j.fsf@emacs.iotcl.com>
998
- source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>
1101
+ Needs review.
1102
+ cf. <alR9GDNTbdjWB4dq@szeder.dev>
1103
+ source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>
1104
1105
1106
* ty/migrate-ignorecase (2026-06-19) 2 commits
@@ -1040,7 +1145,8 @@ Release tarballs are available at:
1145
subcommand to fold a range of commits into a single commit, with any
1146
descendants replayed on top.
1147
1043
- Needs review.
1148
+ Expecting a reroll.
1149
+ cf. <CAHwyqnVYQ6Sk=4ot6=5AbUdqxCrwS15xt_+wX3DB1h369CSqsA@mail.gmail.com>
1150
source: <pull.2337.v8.git.git.1783674396.gitgitgadget@gmail.com>
1151
1152
@@ -1080,7 +1186,7 @@ Release tarballs are available at:
1186
- t5334: expose shared `nth_line()` helper
1187
1188
The 'git multi-pack-index write --incremental' command has been
1083
- corrected to properly honor the '--base' option. Previously, the
1189
+ corrected to properly honor the '--base' option. Previously, the
1190
custom base was ignored by the normal write path; packs from layers
1191
above the selected base were incorrectly skipped by the pack exclusion
1192
logic, and reachability closure for bitmaps was broken.
@@ -1100,7 +1206,7 @@ Release tarballs are available at:
1206
1207
The test suite has been updated to use the 'test_grep' helper instead
1208
of bare 'grep' for test assertions, allowing file contents to be
1103
- printed on failure for easier debugging. A new 'greplint' linter has
1209
+ printed on failure for easier debugging. A new 'greplint' linter has
1210
been introduced to detect and prevent new bare 'grep' assertions from
1211
being added to the test suite.
1212
@@ -1109,22 +1215,6 @@ Release tarballs are available at:
1215
source: <pull.2135.v4.git.1783314119.gitgitgadget@gmail.com>
1216
1217
1112
-* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
1113
- (merged to 'next' on 2026-07-06 at aa748c4564)
1114
- + prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
1115
- + prio-queue: rename .nr to .nr_ and add accessor helpers
1116
- (this branch is used by kk/prio-queue-cascade-sift.)
1117
-
1118
- The lazy priority queue optimization pattern (deferring actual removal
1119
- in 'prio_queue_get()' to allow get+put fusion) has been folded
1120
- directly into 'prio_queue' itself, speeding up commit traversal
1121
- workflows and simplifying callers.
1122
-
1123
- Will merge to 'master'.
1124
- cf. <xmqqh5mjrbgq.fsf@gitster.g>
1125
- source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>
1126
-
1127
-
1218
* td/ref-filter-memoize-contains (2026-06-12) 3 commits
1219
- commit-reach: die on contains walk errors
1220
- ref-filter: memoize --contains with generations
@@ -1150,12 +1240,13 @@ Release tarballs are available at:
1240
drop merge commits and linearize the replayed history, mimicking 'git
1241
rebase --no-rebase-merges'.
1242
1153
- Will merge to 'master'.
1243
+ Will merge to 'master'?
1244
cf. <xmqq5x2qz42z.fsf@gitster.g>
1245
+ cf. <CABPp-BGzU9KHGF1nipi2HZaa1AiikMKGGaapQzHVH06wO4V1ww@mail.gmail.com>
1246
source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com>
1247
1248
1158
-* ps/cat-file-remote-object-info (2026-07-10) 13 commits
1249
+* ps/cat-file-remote-object-info (2026-07-14) 13 commits
1250
- cat-file: make remote-object-info allow-list dynamic
1251
- cat-file: validate remote atoms with an allow-list
1252
- cat-file: add remote-object-info to batch-command
@@ -1173,13 +1264,13 @@ Release tarballs are available at:
1264
The 'remote-object-info' command has been added to 'git cat-file
1265
--batch-command', allowing clients to request object metadata
1266
(currently size) from a remote server via protocol v2 without
1176
- downloading the entire object. Format placeholders are dynamically
1267
+ downloading the entire object. Format placeholders are dynamically
1268
filtered on the client based on server-advertised capabilities,
1269
returning empty strings for inapplicable or unsupported fields.
1270
1180
- Will merge to 'next'?
1181
- cf. <CA+J6zkSo3ZqLe7HLEXRAs+hOq2FuOVokMQWbABcW95wihNtCgA@mail.gmail.com>
1182
- source: <20260710-ps-eric-work-rebase-v16-0-66e07b58a8fe@gmail.com>
1271
+ Needs review.
1272
+ cf. <xmqq8q7dto8d.fsf@gitster.g>
1273
+ source: <20260714-ps-eric-work-rebase-v17-0-afabfc83260e@gmail.com>
1274
1275
1276
* mm/diff-process-hunks (2026-06-14) 6 commits
@@ -1192,7 +1283,7 @@ Release tarballs are available at:
1283
1284
A new 'diff.<driver>.process' configuration has been introduced to
1285
allow a long-running external process to act as a hunk provider,
1195
- allowing external tools to control which lines Git considers changed
1286
+ enabling external tools to control which lines Git considers changed
1287
while leaving all output formatting (word diff, color, blame, etc.) to
1288
Git's standard pipeline.
1289
@@ -1278,7 +1369,7 @@ Release tarballs are available at:
1369
source: <V3_CV_doc_replay_config.780@msgid.xyz>
1370
1371
1281
-* hn/branch-delete-merged (2026-06-24) 7 commits
1372
+* hn/branch-delete-merged (2026-07-14) 7 commits
1373
- branch: add --dry-run for --delete-merged
1374
- branch: add branch.<name>.deleteMerged opt-out
1375
- branch: add --delete-merged <branch>
@@ -1291,9 +1382,8 @@ Release tarballs are available at:
1382
to remove local branches that are already merged to their tracked
1383
remote-tracking branches.
1384
1294
- Expecting a reroll.
1295
- cf. <CAHwyqnWspUTSnqmkMyXtWuAnENDSzrRLhhUR=Ljtt1xer3tphA@mail.gmail.com>
1296
- source: <pull.2285.v18.git.git.1782338106.gitgitgadget@gmail.com>
1385
+ Needs review.
1386
+ source: <pull.2285.v19.git.git.1784053493.gitgitgadget@gmail.com>
1387
1388
1389
* hn/checkout-track-fetch (2026-06-24) 2 commits
@@ -1304,11 +1394,14 @@ Release tarballs are available at:
1394
fetch the branch from the remote the new branch will work with.
1395
1396
Waiting for response(s) to review comment(s).
1307
- cf. <xmqq5x37h6fj.fsf@gitster.g>
1397
+ cf. <CAL71e4MiijEiM26TKJcOYT7L4pfQeMM_F2oT3U3igP-wOZm2Ag@mail.gmail.com>
1398
source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>
1399
1400
1311
-* ps/shift-root-in-graph (2026-07-11) 4 commits
1401
+* ps/shift-root-in-graph (2026-07-14) 7 commits
1402
+ - graph: add --[no-]graph-indent and log.graphIndent
1403
+ - graph: move config reading into graph_read_config()
1404
+ - graph: wrap cascading commits after 4 columns
1405
- graph: indent visual root in graph
1406
- graph: add a 2 commit buffer for lookahead
1407
- revision: add next_commit_to_show()
@@ -1320,7 +1413,7 @@ Release tarballs are available at:
1413
falsely related to unrelated commits rendered immediately above them.
1414
1415
Needs review.
1323
- source: <20260711-ps-pre-commit-indent-v9-0-eab6676e82f7@gmail.com>
1416
+ source: <20260714-ps-pre-commit-indent-v12-0-d50938e006df@gmail.com>
1417
1418
1419
* kk/merge-base-exhaustion (2026-07-11) 11 commits
@@ -1351,7 +1444,6 @@ Release tarballs are available at:
1444
. prio-queue: use cascade for unfused gets
1445
. prio-queue: extract sift_up() from prio_queue_put()
1446
. Merge branch 'kk/prio-queue-get-put-fusion' into kk/prio-queue-cascade-sift
1354
- (this branch uses kk/prio-queue-get-put-fusion.)
1447
1448
'prio_queue_get()' has been optimized by using a cascade-down approach
1449
(promoting the smaller child at each level and sifting up the last