What's cooking (2026/03 #04)

This commit is contained in:
Junio C Hamano
2026-03-09 17:09:13 -07:00
parent bb4fe16695
commit e3a093c9c7

View File

@@ -1,10 +1,10 @@
To: git@vger.kernel.org
Subject: What's cooking in git.git (Mar 2026, #03)
X-master-at: 795c338de725e13bd361214c6b768019fc45a2c1
X-next-at: a537e3e6e998710bf15ee05bf0cd02a122d54b8c
Subject: What's cooking in git.git (Mar 2026, #04)
X-master-at: d181b9354cf85b44455ce3ca9e6af0b9559e0ae2
X-next-at: 73c4285caafcaa6db0c01cd8b6ce64c8c908be84
Bcc: lwn@lwn.net, gitster@pobox.com
What's cooking in git.git (Mar 2026, #03)
What's cooking in git.git (Mar 2026, #04)
-----------------------------------------
Here are the topics that have been cooking in my tree. Commits
@@ -50,42 +50,195 @@ Release tarballs are available at:
--------------------------------------------------
[Graduated to 'master']
* ob/core-attributesfile-in-repository (2026-02-16) 3 commits
(merged to 'next' on 2026-02-27 at 2b2e3a1fa9)
+ environment: move "branch.autoSetupMerge" into `struct repo_config_values`
+ environment: stop using core.sparseCheckout globally
+ environment: stop storing `core.attributesFile` globally
* ar/run-command-hook-take-2 (2026-03-02) 13 commits
(merged to 'next' on 2026-03-02 at f5aabac117)
+ builtin/receive-pack: avoid spinning no-op sideband async threads
(merged to 'next' on 2026-02-22 at 4aa543f115)
+ receive-pack: convert receive hooks to hook API
+ receive-pack: convert update hooks to new API
+ run-command: poll child input in addition to output
+ hook: add jobs option
+ reference-transaction: use hook API instead of run-command
+ transport: convert pre-push to hook API
+ hook: allow separate std[out|err] streams
+ hook: convert 'post-rewrite' hook in sequencer.c to hook API
+ hook: provide stdin via callback
+ run-command: add stdin callback for parallelization
+ run-command: add helper for pp child states
+ t1800: add hook output stream tests
(this branch is used by ar/config-hooks and ar/parallel-hooks.)
The core.attributesfile is intended to be set per repository, but
were kept track of by a single global variable in-core, which has
been corrected by moving it to per-repository data structure.
cf. <CAP8UFD2Rz3NMrTayi9yjRk4-51tStaLWKeBVB9RaJMWmiBLqrQ@mail.gmail.com>
source: <cover.1771258573.git.belkid98@gmail.com>
Use the hook API to replace ad-hoc invocation of hook scripts via
the run_command() API.
source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>
source: <20260302191704.1814567-1-adrian.ratiu@collabora.com>
* ps/fsck-stream-from-the-right-object-instance (2026-02-23) 4 commits
(merged to 'next' on 2026-02-27 at b378558c1a)
+ pack-check: fix verification of large objects
+ packfile: expose function to read object stream for an offset
+ object-file: adapt `stream_object_signature()` to take a stream
+ t/helper: improve "genrandom" test helper
* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
(merged to 'next' on 2026-03-02 at c7251cc68f)
+ Documentation: update add --force option + ignore=all config
+ tests: fix existing tests when add an ignore=all submodule
+ tests: t2206-add-submodule-ignored: ignore=all and add --force tests
+ read-cache: submodule add need --force given ignore=all configuration
+ read-cache: update add_files_to_cache take param ignored_too
"fsck" iterates over packfiles and its access to pack data caused
the list to be permuted, which caused it to loop forever; the code
to access pack data by "fsck" has been updated to avoid this.
source: <20260223-pks-fsck-fix-v2-0-99a0714ea3bd@pks.im>
"git add <submodule>" has been taught to honor
submodule.<name>.ignore that is set to "all" (and requires "git add
-f" to override it).
cf. <xmqq5x7rvyn4.fsf@gitster.g>
source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>
* pt/t7527-flake-workaround (2025-12-31) 1 commit
(merged to 'next' on 2026-02-27 at d6ebc97cb1)
+ t7527: fix flaky fsmonitor event tests with retry logic
* jk/repo-structure-cleanup (2026-02-23) 1 commit
(merged to 'next' on 2026-03-02 at e1647839fa)
+ repo: remove unnecessary variable shadow
Test fixup.
source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>
Code clean-up.
source: <20260223135248.127935-1-jayatheerthkulkarni2005@gmail.com>
* lp/diff-stat-utf8-display-width-fix (2026-02-27) 2 commits
(merged to 'next' on 2026-03-02 at b979797314)
+ t4052: test for diffstat width when prefix contains ANSI escape codes
+ diff: handle ANSI escape codes in prefix when calculating diffstat width
"git log --graph --stat" did not count the display width of colored
graph part of its own output correctly, which has been corrected.
source: <cover.1772226209.git.lorenzo.pegorari2002@gmail.com>
* ps/refs-for-each (2026-02-23) 18 commits
(merged to 'next' on 2026-02-27 at ec9e0a36ff)
+ refs: replace `refs_for_each_fullref_in()`
+ refs: replace `refs_for_each_namespaced_ref()`
+ refs: replace `refs_for_each_glob_ref()`
+ refs: replace `refs_for_each_glob_ref_in()`
+ refs: replace `refs_for_each_rawref_in()`
+ refs: replace `refs_for_each_rawref()`
+ refs: replace `refs_for_each_ref_in()`
+ refs: improve verification for-each-ref options
+ refs: generalize `refs_for_each_fullref_in_prefixes()`
+ refs: generalize `refs_for_each_namespaced_ref()`
+ refs: speed up `refs_for_each_glob_ref_in()`
+ refs: introduce `refs_for_each_ref_ext`
+ refs: rename `each_ref_fn`
+ refs: rename `do_for_each_ref_flags`
+ refs: move `do_for_each_ref_flags` further up
+ refs: move `refs_head_ref_namespaced()`
+ refs: remove unused `refs_for_each_include_root_ref()`
+ Merge branch 'ps/for-each-ref-in-fixes' into ps/refs-for-each
Code refactoring around refs-for-each-* API functions.
cf. <CAOLa=ZTz-9JKHC3H8tSwP=bDvX2mNA-erjr5Ni6Tiq4cm4WmLg@mail.gmail.com>
source: <20260223-pks-refs-for-each-unification-v2-0-515d48c8087b@pks.im>
--------------------------------------------------
[New Topics]
* mm/line-log-use-standard-diff-output (2026-03-06) 4 commits
- doc: note that -L supports patch formatting and pickaxe options
- t4211: add tests for -L with standard diff options
- line-log: route -L output through the standard diff pipeline
- line-log: fix crash when combined with pickaxe options
The way "git log -L<range>:<file>" feature is bolted onto the
log/diff machinery is being reworked a bit to make the feature
compatible with more diff options, like -S/G.
Needs review.
source: <pull.2065.git.1772845338.gitgitgadget@gmail.com>
* os/doc-git-custom-commands (2026-03-07) 1 commit
(merged to 'next' on 2026-03-09 at 5cabe3db39)
+ doc: make it easier to find custom command information
Doc update.
Will merge to 'master'.
source: <pull.2225.git.git.1772903281929.gitgitgadget@gmail.com>
* ar/config-hook-cleanups (2026-03-08) 11 commits
- hook: show disabled hooks in "git hook list"
- hook: show config scope in git hook list
- hook: refactor hook_config_cache from strmap to named struct
- t1800: add test to verify hook execution ordering
- hook: make consistent use of friendly-name in docs
- hook: replace hook_list_clear() -> string_list_clear_func()
- hook: detect & emit two more bugs
- hook: rename cb_data_free/alloc -> hook_data_free/alloc
- hook: fix minor style issues
- hook: move unsorted_string_list_remove() to string-list.[ch]
- Merge branch 'ar/config-hooks' into ar/config-hook-cleanups
(this branch is used by ar/parallel-hooks; uses ar/config-hooks.)
Code clean-up around the recent "hooks defined in config" topic.
Will merge to 'next'?
source: <20260309005416.2760030-1-adrian.ratiu@collabora.com>
* cf/constness-fixes (2026-03-08) 2 commits
- dir: avoid -Wdiscarded-qualifiers in remove_path()
- bloom: remove a misleading const qualifier
Small code clean-up around constness area.
Will merge to 'next'?
source: <3ad40c3d0762c2e8c14792dfb68cba9f63a883a3.1773026586.git.collin.funk1@gmail.com>
* dd/list-objects-filter-options-wo-strbuf-split (2026-03-08) 2 commits
- list-objects-filter-options: avoid strbuf_split_str()
- worktree: do not pass strbuf by value
Revamp the way combined option filter is parsed.
Expecting a reroll?
cf. <20260309190823.GB309867@coredump.intra.peff.net>
source: <20260308180359.31188-1-deveshigurgaon@gmail.com>
* jc/doc-wholesale-replace-before-next (2026-03-09) 1 commit
- SubmittingPatches: spell out "replace fully to pretend to be perfect"
Doc update.
Will merge to 'next'?
source: <xmqq34283b12.fsf@gitster.g>
* ps/t9200-test-path-is-helpers (2026-03-09) 1 commit
- t9200: replace test -f/-d with modern path helpers
Test update.
Will merge to 'next'.
source: <20260309230134.758107-1-pabloosabaterr@gmail.com>
* rs/history-ergonomics-updates-fix (2026-03-08) 1 commit
- history: initialize rev_info in cmd_history_reword()
Fix use of uninitialized variable.
Will merge to 'next'.
source: <b0b8633f-be95-48eb-8244-d0e3f1a7be72@web.de>
* ty/patch-ids-document-lazy-eval (2026-03-08) 1 commit
- patch-ids: document intentional const-casting in patch_id_neq()
In-code comment update to record a design decision to allow lazy
computation of patch IDs.
Will merge to 'next'.
source: <20260309065140.108644-1-cat@malon.dev>
--------------------------------------------------
[Cooking]
* ab/clone-default-object-filter (2026-03-06) 1 commit
- clone: add clone.<url>.defaultObjectFilter config
@@ -184,32 +337,33 @@ Release tarballs are available at:
source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>
* fp/t3310-unhide-git-failures (2026-03-05) 1 commit
- t3310: avoid hiding failures from rev-parse in command substitutions
* fp/t3310-unhide-git-failures (2026-03-07) 1 commit
(merged to 'next' on 2026-03-09 at edd6c35bb8)
+ t3310: avoid hiding failures from rev-parse in command substitutions
The construct 'test "$(command)" = expectation' loses the exit
status from the command, which has been fixed by breaking up the
statement into pieces.
Will merge to 'next'.
source: <20260305225128.54283-1-francescopaparatto@gmail.com>
Will merge to 'master'.
source: <20260307103631.89829-1-francescopaparatto@gmail.com>
* jk/unleak-mmap (2026-03-06) 5 commits
* jk/unleak-mmap (2026-03-06) 6 commits
- meson: turn on NO_MMAP when building with LSan
- Makefile: turn on NO_MMAP when building with LSan
- object-file: fix mmap() leak in odb_source_loose_read_object_stream()
- pack-revindex: avoid double-loading .rev files
- check_connected(): fix leak of pack-index mmap
- check_connected(): delay opening new_pack
Plug a few leaks where mmap'ed memory regions are not unmapped.
Will merge to 'next'?
Will merge to 'next'.
source: <20260305230315.GA2354983@coredump.intra.peff.net>
source: <796110ee-d795-4445-9d82-7026370a88cf@intel.com>
source: <20260307022459.GA693632@coredump.intra.peff.net>
--------------------------------------------------
[Cooking]
* kj/path-micro-code-cleanup (2026-03-04) 3 commits
(merged to 'next' on 2026-03-04 at 569091027c)
@@ -349,28 +503,6 @@ Release tarballs are available at:
source: <20260302192627.83631-1-r.siddharth.shrimali@gmail.com>
* jk/repo-structure-cleanup (2026-02-23) 1 commit
(merged to 'next' on 2026-03-02 at e1647839fa)
+ repo: remove unnecessary variable shadow
Code clean-up.
Will merge to 'master'.
source: <20260223135248.127935-1-jayatheerthkulkarni2005@gmail.com>
* lp/diff-stat-utf8-display-width-fix (2026-02-27) 2 commits
(merged to 'next' on 2026-03-02 at b979797314)
+ t4052: test for diffstat width when prefix contains ANSI escape codes
+ diff: handle ANSI escape codes in prefix when calculating diffstat width
"git log --graph --stat" did not count the display width of colored
graph part of its own output correctly, which has been corrected.
Will merge to 'master'.
source: <cover.1772226209.git.lorenzo.pegorari2002@gmail.com>
* ps/upload-pack-buffer-more-writes (2026-03-03) 10 commits
- builtin/pack-objects: reduce lock contention when writing packfile data
- csum-file: drop `hashfd_throughput()`
@@ -406,17 +538,18 @@ Release tarballs are available at:
* jt/repo-structure-extrema (2026-03-02) 6 commits
- builtin/repo: find tree with most entries
- builtin/repo: find commit with most parents
- builtin/repo: add OID annotations to table output
- builtin/repo: collect largest inflated objects
- builtin/repo: add helper for printing keyvalue output
- builtin/repo: update stats for each object
(merged to 'next' on 2026-03-09 at 8ccfebc0b1)
+ builtin/repo: find tree with most entries
+ builtin/repo: find commit with most parents
+ builtin/repo: add OID annotations to table output
+ builtin/repo: collect largest inflated objects
+ builtin/repo: add helper for printing keyvalue output
+ builtin/repo: update stats for each object
"git repo structure" command learns to report maximum values on
various aspects of objects it inspects.
Will merge to 'next'.
Will merge to 'master'.
source: <20260302214526.2034279-1-jltobler@gmail.com>
@@ -494,20 +627,21 @@ Release tarballs are available at:
source: <cover.1772808594.git.phillip.wood@dunelm.org.uk>
* mf/format-patch-cover-letter-format (2026-02-27) 5 commits
- docs: add usage for the cover-letter fmt feature
- format-patch: add commitListFormat config
- format-patch: add ability to use alt cover format
- format-patch: move cover letter summary generation
- pretty.c: add %(count) and %(total) placeholders
* mf/format-patch-cover-letter-format (2026-03-06) 5 commits
(merged to 'next' on 2026-03-09 at e872adca7b)
+ docs: add usage for the cover-letter fmt feature
+ format-patch: add commitListFormat config
+ format-patch: add ability to use alt cover format
+ format-patch: move cover letter summary generation
+ pretty.c: add %(count) and %(total) placeholders
"git format-patch --cover-letter" learns to use a simpler format
instead of the traditional shortlog format to list its commits with
a new --cover-letter-format option and format.commitListFormat
configuration variable.
Will merge to 'next'.
source: <cover.1772232373.git.mroik@delayed.space>
Will merge to 'master'.
source: <cover.1772839973.git.mroik@delayed.space>
* sp/send-email-validate-charset (2026-02-28) 1 commit
@@ -562,7 +696,7 @@ Release tarballs are available at:
directory. The code has been tightened to notice and report
filesystem corruption better.
Will merge to 'next'?
Will merge to 'next'.
source: <20260304141526.37764-1-a3205153416@gmail.com>
@@ -591,34 +725,6 @@ Release tarballs are available at:
source: <20260302032048.260209-2-dxdt@dev.snart.me>
* ps/refs-for-each (2026-02-23) 18 commits
(merged to 'next' on 2026-02-27 at ec9e0a36ff)
+ refs: replace `refs_for_each_fullref_in()`
+ refs: replace `refs_for_each_namespaced_ref()`
+ refs: replace `refs_for_each_glob_ref()`
+ refs: replace `refs_for_each_glob_ref_in()`
+ refs: replace `refs_for_each_rawref_in()`
+ refs: replace `refs_for_each_rawref()`
+ refs: replace `refs_for_each_ref_in()`
+ refs: improve verification for-each-ref options
+ refs: generalize `refs_for_each_fullref_in_prefixes()`
+ refs: generalize `refs_for_each_namespaced_ref()`
+ refs: speed up `refs_for_each_glob_ref_in()`
+ refs: introduce `refs_for_each_ref_ext`
+ refs: rename `each_ref_fn`
+ refs: rename `do_for_each_ref_flags`
+ refs: move `do_for_each_ref_flags` further up
+ refs: move `refs_head_ref_namespaced()`
+ refs: remove unused `refs_for_each_include_root_ref()`
+ Merge branch 'ps/for-each-ref-in-fixes' into ps/refs-for-each
Code refactoring around refs-for-each-* API functions.
Will merge to 'master'.
cf. <CAOLa=ZTz-9JKHC3H8tSwP=bDvX2mNA-erjr5Ni6Tiq4cm4WmLg@mail.gmail.com>
source: <20260223-pks-refs-for-each-unification-v2-0-515d48c8087b@pks.im>
* sa/replay-revert (2026-02-18) 2 commits
- replay: add --revert mode to reverse commit changes
- sequencer: extract revert message formatting into shared function
@@ -635,14 +741,15 @@ Release tarballs are available at:
* sp/wt-status-wo-the-repository (2026-02-18) 3 commits
- wt-status: use hash_algo from local repository instead of global the_hash_algo
- wt-status: replace uses of the_repository with local repository instances
- wt-status: pass struct repository through function parameters
(merged to 'next' on 2026-03-09 at 2e99d5ed52)
+ wt-status: use hash_algo from local repository instead of global the_hash_algo
+ wt-status: replace uses of the_repository with local repository instances
+ wt-status: pass struct repository through function parameters
Reduce dependence on the global the_hash_algo and the_repository
variables of wt-status code path.
Will merge to 'next'.
Will merge to 'master'.
source: <20260218175654.66004-1-shreyanshpaliwalcmsmn@gmail.com>
@@ -672,7 +779,7 @@ Release tarballs are available at:
+ hook: run a list of hooks to prepare for multihook support
+ hook: add internal state alloc/free callbacks
+ Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
(this branch is used by ar/parallel-hooks; uses ar/run-command-hook-take-2.)
(this branch is used by ar/config-hook-cleanups and ar/parallel-hooks.)
Allow hook commands to be defined (possibly centrally) in the
configuration files, and run multiple of them for the same hook
@@ -682,7 +789,7 @@ Release tarballs are available at:
source: <20260218222352.55393-1-adrian.ratiu@collabora.com>
* ar/parallel-hooks (2026-02-21) 11 commits
* ar/parallel-hooks (2026-03-09) 10 commits
- hook: allow runtime enabling extensions.hookStdoutToStderr
- hook: introduce extensions.hookStdoutToStderr
- hook: add per-event jobs config
@@ -690,14 +797,13 @@ Release tarballs are available at:
- hook: mark non-parallelizable hooks
- hook: allow parallel hook execution
- hook: parse the hook.jobs config
- hook: refactor hook_config_cache from strmap to named struct
- config: add a repo_config_get_uint() helper
- repository: fix repo_init() memleak due to missing _clear()
- Merge branch 'ar/config-hooks' into ar/parallel-hooks
(this branch uses ar/config-hooks and ar/run-command-hook-take-2.)
- Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks
(this branch uses ar/config-hook-cleanups and ar/config-hooks.)
Needs review.
source: <20260222002904.1879356-1-adrian.ratiu@collabora.com>
source: <20260309133739.294555-1-adrian.ratiu@collabora.com>
* ng/submodule-default-remote (2026-03-03) 1 commit
@@ -710,32 +816,6 @@ Release tarballs are available at:
source: <20260303234044.105157-1-nasser.grainawi@oss.qualcomm.com>
* ar/run-command-hook-take-2 (2026-03-02) 13 commits
(merged to 'next' on 2026-03-02 at f5aabac117)
+ builtin/receive-pack: avoid spinning no-op sideband async threads
(merged to 'next' on 2026-02-22 at 4aa543f115)
+ receive-pack: convert receive hooks to hook API
+ receive-pack: convert update hooks to new API
+ run-command: poll child input in addition to output
+ hook: add jobs option
+ reference-transaction: use hook API instead of run-command
+ transport: convert pre-push to hook API
+ hook: allow separate std[out|err] streams
+ hook: convert 'post-rewrite' hook in sequencer.c to hook API
+ hook: provide stdin via callback
+ run-command: add stdin callback for parallelization
+ run-command: add helper for pp child states
+ t1800: add hook output stream tests
(this branch is used by ar/config-hooks and ar/parallel-hooks.)
Use the hook API to replace ad-hoc invocation of hook scripts via
the run_command() API.
Will merge to 'master'.
source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>
source: <20260302191704.1814567-1-adrian.ratiu@collabora.com>
* yc/histogram-hunk-shift-fix (2026-03-02) 1 commit
- xdiff: re-diff shifted change groups when using histogram algorithm
@@ -746,23 +826,6 @@ Release tarballs are available at:
source: <pull.2120.v2.git.git.1772463265865.gitgitgadget@gmail.com>
* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
(merged to 'next' on 2026-03-02 at c7251cc68f)
+ Documentation: update add --force option + ignore=all config
+ tests: fix existing tests when add an ignore=all submodule
+ tests: t2206-add-submodule-ignored: ignore=all and add --force tests
+ read-cache: submodule add need --force given ignore=all configuration
+ read-cache: update add_files_to_cache take param ignored_too
"git add <submodule>" has been taught to honor
submodule.<name>.ignore that is set to "all" (and requires "git add
-f" to override it).
Will merge to 'master'.
cf. <xmqq5x7rvyn4.fsf@gitster.g>
source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>
* en/xdiff-cleanup-3 (2026-01-03) 11 commits
. SQUASH??? cocci
. xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c