What's cooking (2026/03 #04)

Junio C Hamano committed Mar 9, 2026 at 17:09 UTC e3a093c9c716700a46cc52511508673040c00f12
1 file changed +219 -155
whats-cooking.txt
+219 -155
index 4d7e9c137d..e143fd44ef 100644 --- a/whats-cooking.txt +++ b/whats-cooking.txt @@ -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.) + + 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> + + +* 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 - 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> + "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> -* 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 +* jk/repo-structure-cleanup (2026-02-23) 1 commit + (merged to 'next' on 2026-03-02 at e1647839fa) + + repo: remove unnecessary variable shadow - "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> + Code clean-up. + source: <20260223135248.127935-1-jayatheerthkulkarni2005@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 +* 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 - Test fixup. - source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com> + 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