What's cooking (2025/11 #06)
Junio C Hamano committed
Nov 19, 2025 at 13:54 UTC
23c9d2bc9a532685eaa1709ff888f71e38cc4097
1 file changed
+352
-174
whats-cooking.txt
+352
-174
@@ -1,10 +1,10 @@
1
To: git@vger.kernel.org
2
-Subject: What's cooking in git.git (Nov 2025, #05; Mon, 17)
3
-X-master-at: 9a2fb147f2c61d0cab52c883e7e26f5b7948e3ed
4
-X-next-at: d25c4c69ec8b0378f9f865f96ae5cd33842cdcb3
2
+Subject: What's cooking in git.git (Nov 2025, #06; Wed, 19)
3
+X-master-at: 5e6e4854e086ba0025bc7dc11e6b475c92a2f556
4
+X-next-at: 4c43c53c49517f9a5002d3e8f38395bde77dd998
5
Bcc: lwn@lwn.net, gitster@pobox.com
6
7
-What's cooking in git.git (Nov 2025, #05; Mon, 17)
7
+What's cooking in git.git (Nov 2025, #06; Wed, 19)
8
--------------------------------------------------
9
10
Here are the topics that have been cooking in my tree. Commits
@@ -17,10 +17,8 @@ topic without enough support may be discarded after a long period of
17
no activity (of course they can be resubmit when new interests
18
arise).
19
20
-Git 2.52 (final) has been tagged. We'll see if there is a need for
21
-a quick brown paper bag fix necessary for some days and then reopen
22
-the tree for the 2.53 cycle, to start merging topics that have been
23
-cooking in "next" down to "master".
20
+The 'master' branch now has the first batch of topics for the new
21
+cycle. The tip of 'next' branch has been rewound.
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
@@ -53,19 +51,253 @@ Release tarballs are available at:
51
--------------------------------------------------
52
[Graduated to 'master']
53
56
-* jc/ci-use-arm64-p4-on-macos (2025-11-16) 1 commit
57
- (merged to 'next' on 2025-11-16 at c784b1ea9f)
58
- + Use Perforce arm64 binary on macOS CI jobs
54
+* kn/refs-optim-cleanup (2025-10-20) 4 commits
55
+ (merged to 'next' on 2025-11-04 at dbab18969a)
56
+ + t/pack-refs-tests: move the 'test_done' to callees
57
+ + refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
58
+ + refs: move to using the '.optimize' functions
59
+ + Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
60
+ (this branch is used by kn/maintenance-is-needed; uses ps/ref-peeled-tags.)
61
+
62
+ Code clean-up.
63
+ source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>
64
+
65
+
66
+* ps/packed-git-in-object-store (2025-10-30) 9 commits
67
+ (merged to 'next' on 2025-11-03 at 1eb3440abd)
68
+ + packfile: track packs via the MRU list exclusively
69
+ + packfile: always add packfiles to MRU when adding a pack
70
+ + packfile: move list of packs into the packfile store
71
+ + builtin/pack-objects: simplify logic to find kept or nonlocal objects
72
+ + packfile: fix approximation of object counts
73
+ + http: refactor subsystem to use `packfile_list`s
74
+ + packfile: move the MRU list into the packfile store
75
+ + packfile: use a `strmap` to store packs by name
76
+ + Merge branch 'ps/remove-packfile-store-get-packs' into ps/packed-git-in-object-store
77
+
78
+ The list of packfiles used in a running Git process is moved from
79
+ the packed_git structure into the packfile store.
80
+ source: <20251030-pks-packfiles-store-drop-list-v2-0-84654f080cc0@pks.im>
81
+
82
+
83
+* ps/ref-peeled-tags (2025-11-04) 18 commits
84
+ (merged to 'next' on 2025-11-04 at 3818774c94)
85
+ + t7004: do not chdir around in the main process
86
+ + ref-filter: fix stale parsed objects
87
+ + ref-filter: parse objects on demand
88
+ + ref-filter: detect broken tags when dereferencing them
89
+ + refs: don't store peeled object IDs for invalid tags
90
+ + object: add flag to `peel_object()` to verify object type
91
+ + refs: drop infrastructure to peel via iterators
92
+ + refs: drop `current_ref_iter` hack
93
+ + builtin/show-ref: convert to use `reference_get_peeled_oid()`
94
+ + ref-filter: propagate peeled object ID
95
+ + upload-pack: convert to use `reference_get_peeled_oid()`
96
+ + refs: expose peeled object ID via the iterator
97
+ + refs: refactor reference status flags
98
+ + refs: fully reset `struct ref_iterator::ref` on iteration
99
+ + refs: introduce `.ref` field for the base iterator
100
+ + refs: introduce wrapper struct for `each_ref_fn`
101
+ + Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
102
+ + Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
103
+ (this branch is used by kn/maintenance-is-needed, kn/refs-optim-cleanup and ps/ref-peeled-tags-fixes.)
104
+
105
+ Some ref backend storage can hold not just the object name of an
106
+ annotated tag, but the object name of the object the tag points at.
107
+ The code to handle this information has been streamlined.
108
+ source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>
109
+
110
60
- We replaced deprecated macos-13 with macos-14 image in GitHub
61
- Actions CI, but we forgot that the image is for arm64. We have
62
- been seeing a lot of test failures ever since. Switch to arm64
63
- binary for Perforce tests.
64
- source: <xmqqy0o5bml7.fsf@gitster.g>
111
+* ps/ref-peeled-tags-fixes (2025-11-06) 2 commits
112
+ (merged to 'next' on 2025-11-11 at 3549877a16)
113
+ + object: fix performance regression when peeling tags
114
+ + Merge branch 'ps/ref-peeled-tags' into ps/ref-peeled-tags-fixes
115
+ (this branch uses ps/ref-peeled-tags.)
116
+
117
+ Another fix-up to "peeled-tags" topic.
118
+ source: <20251106-b4-pks-peel-object-performance-regression-v1-1-a386147750b0@pks.im>
119
120
--------------------------------------------------
121
[New Topics]
122
123
+* jk/ci-windows-meson-test-fix (2025-11-18) 2 commits
124
+ - ci(windows-meson-test): handle options and output like other test jobs
125
+ - unit-test: ignore --no-chain-lint
126
+
127
+ "Windows+meson" job at the GitHub Actions CI was hard to debug, as
128
+ it did not show and save failed test artifacts, which has been
129
+ corrected.
130
+
131
+ Will merge to 'next'.
132
+ source: <20251118093221.GA530337@coredump.intra.peff.net>
133
+
134
+
135
+* jk/test-mktemp-leakfix (2025-11-18) 1 commit
136
+ (merged to 'next' on 2025-11-19 at 1da34f8b26)
137
+ + test-mktemp: plug memory and descriptor leaks
138
+
139
+ Test leakfix.
140
+
141
+ Will merge to 'master'.
142
+ source: <20251118122124.GA1117960@coredump.intra.peff.net>
143
+
144
+
145
+* js/ci-github-setup-go-update (2025-11-17) 1 commit
146
+ (merged to 'next' on 2025-11-19 at 9922384c2b)
147
+ + ci: bump actions/setup-go from 5 to 6
148
+
149
+ Update a version of action used at the GitHub Actrions CI.
150
+
151
+ Will merge to 'master'.
152
+ source: <ebc68ec5b2abbc4702b94f833b9b3bf1adb79f1a.1763450087.git.zhiyou.jx@alibaba-inc.com>
153
+
154
+
155
+* js/ci-show-breakage-in-dockerized-jobs (2025-11-17) 1 commit
156
+ - ci(dockerized): do show the result of failing tests again
157
+
158
+ Dockerised jobs at the GitHub Actions CI have been taught to show
159
+ more details of failed tests.
160
+
161
+ Will merge to 'next'?
162
+ cf. <xmqqpl9gike6.fsf@gitster.g>
163
+ source: <pull.2003.git.1763399064983.gitgitgadget@gmail.com>
164
+
165
+
166
+* js/cmake-libgit-fix (2025-11-17) 1 commit
167
+ (merged to 'next' on 2025-11-19 at 1593640ab0)
168
+ + cmake: stop trying to build the reftable and xdiff libraries
169
+
170
+ Makefile based build have recently been updated to build a
171
+ libgit.a that also has reftable and xdiff objects; CMake based
172
+ build procedure has been updated to match.
173
+
174
+ Will merge to 'master'.
175
+ source: <pull.2006.git.1763412008722.gitgitgadget@gmail.com>
176
+
177
+
178
+* js/mingw-assign-comma-fix (2025-11-17) 1 commit
179
+ (merged to 'next' on 2025-11-19 at d1a5807e11)
180
+ + mingw: avoid the comma operator
181
+
182
+ The "return errno = EFOO, -1" construct, which is heavily used in
183
+ compat/mingw.c and triggers warnings under "-Wcomma", has been
184
+ rewritten to avoid the warnings.
185
+
186
+ Will merge to 'master'.
187
+ source: <pull.2007.git.1763412374866.gitgitgadget@gmail.com>
188
+
189
+
190
+* js/strip-scalar-too (2025-11-17) 1 commit
191
+ - make strip: include `scalar`
192
+
193
+ "make strip" has been taught to strip "scalar" as well as "git".
194
+
195
+ Will merge to 'next'?
196
+ cf. <xmqq7bvoiadg.fsf@gitster.g>
197
+ source: <pull.2004.git.1763409086322.gitgitgadget@gmail.com>
198
+
199
+
200
+* js/wincred-get-credential-alloc-fix (2025-11-17) 1 commit
201
+ (merged to 'next' on 2025-11-19 at 4c43c53c49)
202
+ + wincred: avoid memory corruption
203
+
204
+ Under-allocation fix.
205
+
206
+ Will merge to 'master'.
207
+ source: <pull.2005.git.1763411984773.gitgitgadget@gmail.com>
208
+
209
+
210
+* pw/worktree-list-display-width-fix (2025-11-18) 2 commits
211
+ - worktree list: quote paths
212
+ - worktree list: fix column spacing
213
+
214
+ "git worktree list" attempts to show paths to worktrees while
215
+ aligning them, but miscounted display columns for the paths when
216
+ non-ASCII characters were involved, which has been corrected.
217
+
218
+ Will merge to 'next'.
219
+ source: <cover.1763482051.git.phillip.wood@dunelm.org.uk>
220
+
221
+
222
+* rs/xmkstemp-simplify (2025-11-17) 1 commit
223
+ (merged to 'next' on 2025-11-19 at 228e9f54ab)
224
+ + wrapper: simplify xmkstemp()
225
+
226
+ Code simplification.
227
+
228
+ Will merge to 'master'.
229
+ source: <058c5722-30f5-4bc5-90f5-24e4c6f3ff8f@web.de>
230
+
231
+
232
+* dw/config-global-list (2025-10-09) 4 commits
233
+ - config: keep bailing on unreadable global files
234
+ - config: read global scope via config_sequence
235
+ - config: test home and xdg files in `list --global`
236
+ - cleanup_path: force forward slashes on Windows
237
+
238
+ "git config --list --global", unlike "git config --list", did not
239
+ consult both of the two possible per-user sources of the
240
+ configuration files, i.e. $HOME/.gitconfig and the XDG one, which
241
+ has been corrected.
242
+
243
+ Comments?
244
+ source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>
245
+
246
+
247
+* ps/object-read-stream (2025-11-18) 19 commits
248
+ - streaming: move into object database subsystem
249
+ - streaming: refactor interface to be object-database-centric
250
+ - streaming: move logic to read packed objects streams into backend
251
+ - streaming: move logic to read loose objects streams into backend
252
+ - streaming: make the `odb_read_stream` definition public
253
+ - streaming: get rid of `the_repository`
254
+ - streaming: rely on object sources to create object stream
255
+ - packfile: introduce function to read object info from a store
256
+ - streaming: move zlib stream into backends
257
+ - streaming: create structure for filtered object streams
258
+ - streaming: create structure for packed object streams
259
+ - streaming: create structure for loose object streams
260
+ - streaming: create structure for in-core object streams
261
+ - streaming: allocate stream inside the backend-specific logic
262
+ - streaming: explicitly pass packfile info when streaming a packed object
263
+ - streaming: propagate final object type via the stream
264
+ - streaming: drop the `open()` callback function
265
+ - streaming: rename `git_istream` into `odb_read_stream`
266
+ - Merge branch 'ps/object-source-loose' into HEAD
267
+ (this branch uses ps/object-source-loose.)
268
+
269
+ The "git_istream" abstraction has been revamped to make it easier
270
+ to interface with pluggable object database design.
271
+
272
+ Comments?
273
+ source: <20251119-b4-pks-odb-read-stream-v1-0-adacf03c2ccf@pks.im>
274
+
275
+
276
+* ps/object-source-management (2025-11-18) 14 commits
277
+ - odb: handle recreation of quarantine directories
278
+ - odb: handle changing a repository's commondir
279
+ - chdir-notify: add function to unregister listeners
280
+ - odb: handle initialization of sources in `odb_new()`
281
+ - http-push: stop setting up `the_repository` for each reference
282
+ - t/helper: stop setting up `the_repository` repeatedly
283
+ - builtin/index-pack: fix deferred fsck outside repos
284
+ - oidset: introduce `oidset_equal()`
285
+ - odb: move logic to disable ref updates into repo
286
+ - odb: refactor `odb_clear()` to `odb_free()`
287
+ - odb: adopt logic to close object databases
288
+ - setup: convert `set_git_dir()` to have file scope
289
+ - path: move `enter_repo()` into "setup.c"
290
+ - Merge branch 'ps/object-source-loose' into HEAD
291
+ (this branch uses ps/object-source-loose.)
292
+
293
+ Code refactoring around object database sources.
294
+
295
+ Comments?
296
+ source: <20251119-b4-pks-odb-creation-v1-0-2b2ed2612cb6@pks.im>
297
+
298
+--------------------------------------------------
299
+[Cooking]
300
+
301
* jc/submodule-add (2025-11-15) 1 commit
302
- submodule add: sanity check existing .gitmodules
303
@@ -77,33 +309,36 @@ Release tarballs are available at:
309
Comments?
310
source: <xmqqv7jacvdq.fsf@gitster.g>
311
80
---------------------------------------------------
81
-[Cooking]
312
313
* rs/diff-quiet-no-rename (2025-11-09) 1 commit
84
- (merged to 'next' on 2025-11-14 at 2d94808185)
314
+ (merged to 'next' on 2025-11-19 at dc0b078446)
315
+ diff: disable rename detection with --quiet
316
317
+ Originally merged to 'next' on 2025-11-14
318
+
319
As "git diff --quiet" only cares about the existence of any
320
changes, disable rename/copy detection to skip more expensive
321
processing whose result will be discarded anyway.
322
91
- Will cook in 'next'.
323
+ Will merge to 'master'.
324
source: <8796cd59-2335-4674-823d-d682ce7b7f8e@web.de>
325
326
327
* jc/gitattributes-whitespace-no-indent-fix (2025-11-11) 1 commit
96
- (merged to 'next' on 2025-11-14 at 230fcf2819)
328
+ (merged to 'next' on 2025-11-19 at cd849a23a1)
329
+ .gitattributes: remove misspelled no-op whitespace attribute
330
331
+ Originally merged to 'next' on 2025-11-14
332
+
333
Ever since we added whitespace rules for this project, we misspelt
334
an entry, which has been corrected.
335
102
- Will cook in 'next'.
336
+ Will merge to 'master'.
337
source: <xmqqv7jgwgxb.fsf@gitster.g>
338
339
106
-* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-13) 2 commits
340
+* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-18) 3 commits
341
+ - fetch: fix failed batched updates skipping operations
342
- fetch: fix non-conflicting tags not being committed
343
- fetch: extract out reference committing logic
344
@@ -112,12 +347,10 @@ Release tarballs are available at:
347
has been corrected.
348
349
Will merge to 'next'?
115
- cf. <xmqqtsytbk5w.fsf@gitster.g>
116
- source: <20251113-fix-tags-not-fetching-v5-0-371ea7ec638d@gmail.com>
350
+ source: <20251118-fix-tags-not-fetching-v6-0-2a2f15fc137e@gmail.com>
351
352
119
-* jk/asan-bonanza (2025-11-12) 10 commits
120
- - amend! Makefile: turn on NO_MMAP when building with ASan
353
+* jk/asan-bonanza (2025-11-18) 9 commits
354
- t: enable ASan's strict_string_checks option
355
- fsck: avoid parse_timestamp() on buffer that isn't NUL-terminated
356
- fsck: remove redundant date timestamp check
@@ -130,65 +363,77 @@ Release tarballs are available at:
363
364
Various issues detected by Asan have been corrected.
365
133
- Expecting a reroll?
134
- cf. <aRbToFLhzewwBaSv@pks.im>
135
- source: <20251112075522.GA978866@coredump.intra.peff.net>
366
+ Will merge to 'next'?
367
+ source: <20251118091127.GA4175601@coredump.intra.peff.net>
368
369
370
* jk/attr-macroexpand-wo-recursion (2025-11-11) 1 commit
139
- (merged to 'next' on 2025-11-16 at c4e4a7348e)
371
+ (merged to 'next' on 2025-11-19 at 5d5f74f4f0)
372
+ attr: avoid recursion when expanding attribute macros
373
374
+ Originally merged to 'next' on 2025-11-16
375
+
376
The code to expand attribute macros has been rewritten to avoid
377
recursion to avoid running out of stack space in an uncontrolled
378
way.
379
146
- Will cook in 'next'.
380
+ Will merge to 'master'.
381
source: <20251111223647.GA4055973@coredump.intra.peff.net>
382
383
384
* bc/submodule-force-same-hash (2025-11-14) 2 commits
151
- (merged to 'next' on 2025-11-16 at aa765fefd0)
385
+ (merged to 'next' on 2025-11-19 at eec9dca32c)
386
+ read-cache: drop submodule check from add_to_cache()
387
+ object-file: disallow adding submodules of different hash algo
388
389
+ Originally merged to 'next' on 2025-11-16
390
+
391
Adding a repository that uses a different hash function is a no-no,
392
but "git submodule add" did nt prevent it, which has been corrected.
393
158
- Will cook in 'next'.
394
+ Will merge to 'master'.
395
source: <20251112235434.1499699-1-sandals@crustytoothpaste.net>
396
397
398
* jx/repo-struct-utf8width-fix (2025-11-15) 2 commits
163
- - builtin/repo: fix table alignment for UTF-8 characters
164
- - t/unit-tests: add UTF-8 width tests for CJK chars
399
+ (merged to 'next' on 2025-11-19 at 35bff72b75)
400
+ + builtin/repo: fix table alignment for UTF-8 characters
401
+ + t/unit-tests: add UTF-8 width tests for CJK chars
402
+
403
+ Originally merged to 'next' on 2025-11-18
404
405
The "git repo structure" subcommand tried to align its output but
406
mixed up byte count and display column width, which has been
407
corrected.
408
170
- Will merge to 'next'.
409
+ Will merge to 'master'.
410
source: <cover.1763213290.git.worldhello.net@gmail.com>
411
412
413
* kh/doc-commit-extra-references (2025-11-14) 1 commit
175
- - doc: commit: link to git-status(1) on all format options
414
+ (merged to 'next' on 2025-11-19 at 9c89891116)
415
+ + doc: commit: link to git-status(1) on all format options
416
+
417
+ Originally merged to 'next' on 2025-11-18
418
419
Doc update.
420
179
- Will merge to 'next'.
421
+ Will merge to 'master'.
422
source: <c4349a03724.1763129061.git.code@khaugsbakk.name>
423
424
425
* kn/osxkeychain-idempotent-store-fix (2025-11-13) 1 commit
184
- - osxkeychain: avoid incorrectly skipping store operation
426
+ (merged to 'next' on 2025-11-19 at 335d6bb2ea)
427
+ + osxkeychain: avoid incorrectly skipping store operation
428
+
429
+ Originally merged to 'next' on 2025-11-18
430
431
An earlier check added to osx keychain credential helper to avoid
432
storing the credential itself supplied was overeager and rejected
433
credential material supplied by other helper backends that it would
434
have wanted to store, which has been corrected.
435
191
- Will merge to 'next'.
436
+ Will merge to 'master'.
437
source: <pull.1999.v2.git.1763100270949.gitgitgadget@gmail.com>
438
439
@@ -206,33 +451,21 @@ Release tarballs are available at:
451
source: <20251105142944.73061-1-me@linux.beauty>
452
453
209
-* ps/ref-peeled-tags-fixes (2025-11-06) 2 commits
210
- (merged to 'next' on 2025-11-11 at 3549877a16)
211
- + object: fix performance regression when peeling tags
212
- + Merge branch 'ps/ref-peeled-tags' into ps/ref-peeled-tags-fixes
213
- (this branch uses ps/ref-peeled-tags.)
214
-
215
- Another fix-up to "peeled-tags" topic.
216
-
217
- Will cook in 'next'.
218
- source: <20251106-b4-pks-peel-object-performance-regression-v1-1-a386147750b0@pks.im>
219
-
220
-
454
* en/ort-rename-another-fix (2025-11-03) 3 commits
222
- - merge-ort: fix failing merges in special corner case
223
- - merge-ort: remove debugging crud
224
- - t6429: update comment to mention correct tool
455
+ (merged to 'next' on 2025-11-19 at 53d94af6b4)
456
+ + merge-ort: fix failing merges in special corner case
457
+ + merge-ort: remove debugging crud
458
+ + t6429: update comment to mention correct tool
459
460
Yet another corner case fix around renames in the "ort" merge
461
strategy.
462
229
- Will merge to 'next' after locally amending?
230
- cf. <xmqqfradbhgi.fsf@gitster.g>
463
+ Will merge to 'master'.
464
source: <pull.1992.git.1762192908.gitgitgadget@gmail.com>
465
466
467
* kn/maintenance-is-needed (2025-11-08) 7 commits
235
- (merged to 'next' on 2025-11-14 at ed70525e16)
468
+ (merged to 'next' on 2025-11-19 at faaa24f412)
469
+ maintenance: add 'is-needed' subcommand
470
+ maintenance: add checking logic in `pack_refs_condition()`
471
+ refs: add a `optimize_required` field to `struct ref_storage_be`
@@ -240,21 +473,25 @@ Release tarballs are available at:
473
+ reftable/stack: return stack segments directly
474
+ Merge branch 'kn/refs-optim-cleanup' into kn/maintenance-is-needed
475
+ Merge branch 'ps/ref-peeled-tags' into kn/maintenance-is-needed
243
- (this branch uses kn/refs-optim-cleanup and ps/ref-peeled-tags.)
476
+
477
+ Originally merged to 'next' on 2025-11-14
478
479
"git maintenance" command learned "is-needed" subcommand to tell if
480
it is necessary to perform various maintenance tasks.
481
248
- Will cook in 'next'.
482
+ Will merge to 'master'.
483
source: <20251108-562-add-sub-command-to-check-if-maintenance-is-needed-v4-0-a90f229b6023@gmail.com>
484
485
486
* qj/doc-http-bad-want-response (2025-11-05) 1 commit
253
- - doc: clarify server behavior for invalid 'want' lines in HTTP protocol
487
+ (merged to 'next' on 2025-11-19 at a602cd96eb)
488
+ + doc: clarify server behavior for invalid 'want' lines in HTTP protocol
489
+
490
+ Originally merged to 'next' on 2025-11-18
491
492
Doc update.
493
257
- Will merge to 'next'.
494
+ Will merge to 'master'.
495
source: <20251105143849.1192-1-qjessa662@gmail.com>
496
497
@@ -303,38 +540,41 @@ Release tarballs are available at:
540
541
542
* ps/object-source-loose (2025-11-02) 13 commits
306
- - object-file: refactor writing objects via a stream
307
- - object-file: rename `write_object_file()`
308
- - object-file: refactor freshening of objects
309
- - object-file: rename `has_loose_object()`
310
- - object-file: read objects via the loose object source
311
- - object-file: move loose object map into loose source
312
- - object-file: hide internals when we need to reprepare loose sources
313
- - object-file: move loose object cache into loose source
314
- - object-file: introduce `struct odb_source_loose`
315
- - object-file: move `fetch_if_missing`
316
- - odb: adjust naming to free object sources
317
- - odb: introduce `odb_source_new()`
318
- - odb: fix subtle logic to check whether an alternate is usable
543
+ (merged to 'next' on 2025-11-19 at 8bb0269243)
544
+ + object-file: refactor writing objects via a stream
545
+ + object-file: rename `write_object_file()`
546
+ + object-file: refactor freshening of objects
547
+ + object-file: rename `has_loose_object()`
548
+ + object-file: read objects via the loose object source
549
+ + object-file: move loose object map into loose source
550
+ + object-file: hide internals when we need to reprepare loose sources
551
+ + object-file: move loose object cache into loose source
552
+ + object-file: introduce `struct odb_source_loose`
553
+ + object-file: move `fetch_if_missing`
554
+ + odb: adjust naming to free object sources
555
+ + odb: introduce `odb_source_new()`
556
+ + odb: fix subtle logic to check whether an alternate is usable
557
+ (this branch is used by ps/object-read-stream and ps/object-source-management.)
558
+
559
+ Originally merged to 'next' on 2025-11-18
560
561
A part of code paths that deals with loose objects has been cleaned
562
up.
563
323
- Will merge to 'next'.
564
+ Will merge to 'master'.
565
source: <20251103-b4-pks-odb-loose-backend-v3-0-6a61ea977393@pks.im>
566
567
327
-* bc/sha1-256-interop-02 (2025-11-14) 16 commits
328
- - SQUASH??? cargo clippy
329
- - SQUASH??? downgrade build.rs syntax
568
+* bc/sha1-256-interop-02 (2025-11-17) 15 commits
569
- object-file-convert: always make sure object ID algo is valid
570
- rust: add a small wrapper around the hashfile code
332
- - rust: add a new binary loose object map format
571
+ - rust: add a new binary object map format
572
- rust: add functionality to hash an object
573
- rust: add a build.rs script for tests
574
- hash: expose hash context functions to Rust
336
- - write-or-die: add an fsync component for the loose object map
575
+ - write-or-die: add an fsync component for the object map
576
- csum-file: define hashwrite's count as a uint32_t
577
+ - rust: add additional helpers for ObjectID
578
- hash: add a function to look up hash algo structs
579
- rust: add a hash algorithm abstraction
580
- rust: add a ObjectID struct
@@ -344,67 +584,32 @@ Release tarballs are available at:
584
585
The code to maintain mapping between object names in multiple hash
586
functions is being added, written in Rust.
347
-
348
- Expecting a reroll.
349
- source: <20251027004404.2152927-1-sandals@crustytoothpaste.net>
587
+ source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>
588
589
352
-* ad/blame-diff-algorithm (2025-11-06) 2 commits
353
- - blame: make diff algorithm configurable
354
- - xdiff: add 'minimal' to XDF_DIFF_ALGORITHM_MASK
590
+* ad/blame-diff-algorithm (2025-11-17) 2 commits
591
+ (merged to 'next' on 2025-11-19 at e1e456469f)
592
+ + blame: make diff algorithm configurable
593
+ + xdiff: add 'minimal' to XDF_DIFF_ALGORITHM_MASK
594
595
"git blame" learns "--diff-algorithm=<algo>" option.
596
358
- Will merge to 'next'?
359
- cf. <xmqq5xb9bgx2.fsf@gitster.g>
360
- source: <pull.2075.v5.git.git.1762468914.gitgitgadget@gmail.com>
361
-
362
-
363
-* ps/packed-git-in-object-store (2025-10-30) 9 commits
364
- (merged to 'next' on 2025-11-03 at 1eb3440abd)
365
- + packfile: track packs via the MRU list exclusively
366
- + packfile: always add packfiles to MRU when adding a pack
367
- + packfile: move list of packs into the packfile store
368
- + builtin/pack-objects: simplify logic to find kept or nonlocal objects
369
- + packfile: fix approximation of object counts
370
- + http: refactor subsystem to use `packfile_list`s
371
- + packfile: move the MRU list into the packfile store
372
- + packfile: use a `strmap` to store packs by name
373
- + Merge branch 'ps/remove-packfile-store-get-packs' into ps/packed-git-in-object-store
597
+ Will merge to 'master'.
598
+ cf. <fd03f2a5-bf9e-453f-97d1-d5a66bc87470@gmail.com>
599
+ source: <pull.2075.v6.git.git.1763366672.gitgitgadget@gmail.com>
600
375
- The list of packfiles used in a running Git process is moved from
376
- the packed_git structure into the packfile store.
601
378
- Will cook in 'next'.
379
- source: <20251030-pks-packfiles-store-drop-list-v2-0-84654f080cc0@pks.im>
380
-
381
-
382
-* kn/refs-optim-cleanup (2025-10-20) 4 commits
383
- (merged to 'next' on 2025-11-04 at dbab18969a)
384
- + t/pack-refs-tests: move the 'test_done' to callees
385
- + refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
386
- + refs: move to using the '.optimize' functions
387
- + Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
388
- (this branch is used by kn/maintenance-is-needed; uses ps/ref-peeled-tags.)
389
-
390
- Code clean-up.
391
-
392
- Will cook in 'next'.
393
- source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>
394
-
395
-
396
-* lo/repo-info-all (2025-10-26) 2 commits
602
+* lo/repo-info-all (2025-11-18) 2 commits
603
- repo: add --all to git-repo-info
604
- repo: factor out field printing to dedicated function
605
606
"git repo info" learned "--all" option.
607
402
- Expecting a (hopefully small and final) reroll.
403
- cf. <xmqqpla43wcp.fsf@gitster.g> <aQRaRuBtt_r7SamL@pks.im>
404
- source: <20251026225409.46647-1-lucasseikioshiro@gmail.com>
608
+ Will merge to 'next'.
609
+ source: <20251118204929.43597-1-lucasseikioshiro@gmail.com>
610
611
407
-* en/xdiff-cleanup-2 (2025-11-14) 10 commits
612
+* en/xdiff-cleanup-2 (2025-11-18) 10 commits
613
- xdiff: rename rindex -> reference_index
614
- xdiff: change rindex from long to size_t in xdfile_t
615
- xdiff: make xdfile_t.nreff a size_t instead of long
@@ -418,10 +623,8 @@ Release tarballs are available at:
623
624
Code clean-up.
625
421
- Expecting a (hopefully small and final) reroll.
422
- cf. <xmqqy0o7g0rk.fsf@gitster.g>
423
- cf. <xmqqzf8la20o.fsf@gitster.g>
424
- source: <pull.2070.v4.git.git.1763159816.gitgitgadget@gmail.com>
626
+ Will merge to 'next'?
627
+ source: <pull.2070.v5.git.git.1763505262.gitgitgadget@gmail.com>
628
629
630
* ar/run-command-hook (2025-10-17) 10 commits
@@ -439,7 +642,8 @@ Release tarballs are available at:
642
Use hook API to replace ad-hoc invocation of hook scripts with the
643
run_command() API.
644
442
- Comments?
645
+ Seems to leak and break CI
646
+ cf. <xmqq346ff56h.fsf@gitster.g>
647
source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>
648
649
@@ -456,36 +660,6 @@ Release tarballs are available at:
660
source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>
661
662
459
-* ps/ref-peeled-tags (2025-11-04) 18 commits
460
- (merged to 'next' on 2025-11-04 at 3818774c94)
461
- + t7004: do not chdir around in the main process
462
- + ref-filter: fix stale parsed objects
463
- + ref-filter: parse objects on demand
464
- + ref-filter: detect broken tags when dereferencing them
465
- + refs: don't store peeled object IDs for invalid tags
466
- + object: add flag to `peel_object()` to verify object type
467
- + refs: drop infrastructure to peel via iterators
468
- + refs: drop `current_ref_iter` hack
469
- + builtin/show-ref: convert to use `reference_get_peeled_oid()`
470
- + ref-filter: propagate peeled object ID
471
- + upload-pack: convert to use `reference_get_peeled_oid()`
472
- + refs: expose peeled object ID via the iterator
473
- + refs: refactor reference status flags
474
- + refs: fully reset `struct ref_iterator::ref` on iteration
475
- + refs: introduce `.ref` field for the base iterator
476
- + refs: introduce wrapper struct for `each_ref_fn`
477
- + Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
478
- + Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
479
- (this branch is used by kn/maintenance-is-needed, kn/refs-optim-cleanup and ps/ref-peeled-tags-fixes.)
480
-
481
- Some ref backend storage can hold not just the object name of an
482
- annotated tag, but the object name of the object the tag points at.
483
- The code to handle this information has been streamlined.
484
-
485
- Will cook in 'next'.
486
- source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>
487
-
488
-
663
* je/doc-data-model (2025-11-12) 1 commit
664
- doc: add an explanation of Git's data model
665
@@ -512,7 +686,8 @@ Release tarballs are available at:
686
687
"git history" history rewriting UI.
688
515
- Will merge to 'next' after the base topic.
689
+ Expecting a reroll.
690
+ cf. <aRxDYkeAi8T-HH8M@pks.im>
691
source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>
692
693
@@ -529,33 +704,36 @@ Release tarballs are available at:
704
705
706
* sa/replay-atomic-ref-updates (2025-11-05) 3 commits
532
- - replay: add replay.refAction config option
533
- - replay: make atomic ref updates the default behavior
534
- - replay: use die_for_incompatible_opt2() for option validation
707
+ (merged to 'next' on 2025-11-19 at ae19b06a22)
708
+ + replay: add replay.refAction config option
709
+ + replay: make atomic ref updates the default behavior
710
+ + replay: use die_for_incompatible_opt2() for option validation
711
(this branch is used by ps/history.)
712
713
+ Originally merged to 'next' on 2025-11-18
714
+
715
"git replay" (experimental) learned to perform ref updates itself
716
in a transaction by default, instead of emitting where each refs
717
should point at and leaving the actual update to another command.
718
541
- Will merge to 'next'.
719
+ Will merge to 'master'.
720
cf. <00a5a8f3-f761-46e8-84cc-4bd95db68b49@gmail.com>
721
source: <20251105191650.89975-1-siddharthasthana31@gmail.com>
722
723
546
-* ar/submodule-gitdir-tweak (2025-11-07) 4 commits
724
+* ar/submodule-gitdir-tweak (2025-11-19) 7 commits
725
+ - meson/Makefile: allow setting submodule encoding at build time
726
+ - submodule: use hashed name for gitdir
727
- submodule: fix case-folding gitdir filesystem colisions
728
- submodule: add extension to encode gitdir paths
729
+ - submodule: always validate gitdirs inside submodule_name_to_gitdir
730
- builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
731
- submodule--helper: use submodule_name_to_gitdir in add_submodule
732
733
Avoid local submodule repository directory paths overlapping with
734
each other by encoding submodule names before using them as path
735
components.
555
-
556
- Seems to leak and break CI
557
- cf. <xmqq346ff56h.fsf@gitster.g>
558
- source: <20251107150547.3272180-1-adrian.ratiu@collabora.com>
736
+ source: <20251119211030.2008441-1-adrian.ratiu@collabora.com>
737
738
--------------------------------------------------
739
[Discarded]