From: Junio C Hamano Date: Sat, 23 May 2026 09:04:34 +0000 (+0900) Subject: What's cooking (2026/05 #06) X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=2401465e2f9e1105bfaabc352074e8ff9b81f43b;p=thirdparty%2Fgit.git What's cooking (2026/05 #06) --- diff --git a/whats-cooking.txt b/whats-cooking.txt index fe0138c362..98c6a971af 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 (May 2026, #05) -X-master-at: 1c00d2d8392f603a6263f11f1a50fde96ae5475e -X-next-at: 6e5bcc1fc9a18b45bdea6554297c28759c7da2fc +Subject: What's cooking in git.git (May 2026, #06) +X-master-at: 6a4418c36d6bad69a599044b3cf49dcbd049cb45 +X-next-at: c82f188059a6ca12355cd6ca567c0dcd507f510f Bcc: lwn@lwn.net, gitster@pobox.com -What's cooking in git.git (May 2026, #05) +What's cooking in git.git (May 2026, #06) ----------------------------------------- Here are the topics that have been cooking in my tree. Commits @@ -46,279 +46,318 @@ Release tarballs are available at: https://www.kernel.org/pub/software/scm/git/ -------------------------------------------------- -[New Topics] +[Graduated to 'master'] -* jk/commit-graph-lazy-load-fallback (2026-05-18) 1 commit - - commit: fall back to full read when maybe_tree is NULL +* aw/validate-proxy-url-scheme (2026-05-05) 1 commit + (merged to 'next' on 2026-05-15 at da9c1b71d7) + + http: reject unsupported proxy URL schemes - The logic to lazy-load trees from the commit-graph has been made - more robust by falling back to reading the commit object when - the commit-graph is no longer available. + Misspelt proxy URL (e.g., httt://...) did not trigger any warning + or failure, which has been corrected. + source: <20260505091941.1825-2-aminnimaj@gmail.com> - Will merge to 'next'? - source: <20260519050513.GA1635924@coredump.intra.peff.net> +* jc/ci-enable-expensive (2026-05-10) 2 commits + (merged to 'next' on 2026-05-15 at d258bb5e55) + + ci: enable EXPENSIVE for contributor builds + + Merge branch 'js/objects-larger-than-4gb-on-windows' into jc/ci-enable-expensive -* jk/connect-service-enum (2026-05-18) 1 commit - - connect: use "service" enum for "name" argument + Enable expensive tests to catch topics that may cause breakages on + integration branches closer to their origin in the contributor PR + builds. + source: - The "name" argument in git_connect() and related functions has been - converted to a "service" enum to improve type safety and clarify its - purpose. - Will merge to 'next'. - source: <20260519052219.GA1703179@coredump.intra.peff.net> +* jk/apply-leakfix (2026-05-15) 1 commit + (merged to 'next' on 2026-05-20 at 725a20bf93) + + apply: plug leak on "patch too large" error + Leakfix. + source: <20260516021622.GA744303@coredump.intra.peff.net> -* jk/sq-dequote-cleanup (2026-05-18) 3 commits - - quote: simplify internals of dequoting - - quote: drop sq_dequote_to_argv() - - quote.h: bump strvec forward declaration to the top - Code simplification. +* jk/commit-sign-overflow-fix (2026-05-15) 1 commit + (merged to 'next' on 2026-05-20 at e1a320d4e5) + + commit: handle large commit messages in utf8 verification - Will merge to 'next'. - source: <20260519011837.GA1615637@coredump.intra.peff.net> + Leakfix. + source: <20260516022310.GB744303@coredump.intra.peff.net> -* aj/stash-patch-optimize-temporary-index (2026-05-19) 1 commit - - stash: reuse cached index entries in --patch temporary index +* kh/doc-log-decorate-list (2026-04-27) 2 commits + (merged to 'next' on 2026-05-15 at f740311a37) + + doc: log: use the same delimiter in description list + + doc: log: fix --decorate description list - "git stash -p" has been optimized by reusing cached index - entries in its temporary index, avoiding unnecessary lstat() - calls on unchanged files. - source: + Doc update. + cf. + source: -* tb/bitmap-build-performance (2026-05-19) 9 commits - - pack-bitmap: build pseudo-merge bitmaps after regular bitmaps - - pack-bitmap: remember pseudo-merge parents - - pack-bitmap: sort bitmaps before XORing - - pack-bitmap: cache object positions during fill - - pack-bitmap: consolidate `find_object_pos()` success path - - pack-bitmap: reuse stored selected bitmaps - - pack-bitmap: check subtree bits before recursing - - pack-bitmap: pass object position to `fill_bitmap_tree()` - - Merge branch 'tb/pseudo-merge-bugfixes' into tb/bitmap-build-performance - (this branch uses tb/pseudo-merge-bugfixes.) +* kn/refs-generic-helpers (2026-05-04) 9 commits + (merged to 'next' on 2026-05-15 at 62cb4e0ce2) + + refs: use peeled tag values in reference backends + + refs: add peeled object ID to the `ref_update` struct + + refs: move object parsing to the generic layer + + update-ref: handle rejections while adding updates + + update-ref: move `print_rejected_refs()` up + + refs: return `ref_transaction_error` from `ref_transaction_update()` + + refs: extract out reflog config to generic layer + + refs: introduce `ref_store_init_options` + + refs: remove unused typedef 'ref_transaction_commit_fn' - Reachability bitmap generation has been significantly optimized. By - reordering tree traversal, caching object positions, and refining how - pseudo-merge bitmaps are constructed, the performance of "git repack - --write-midx-bitmaps" is improved, especially for large repositories - and when using pseudo-merges. - source: + Refactor service routines in the ref subsystem backends. + cf. + cf. <87o6isqq4q.fsf@toon--20250203-5JQV3.mail-host-address-is-not-set> + source: <20260504-refs-move-to-generic-layer-v4-0-936ac2f0b1a3@gmail.com> --------------------------------------------------- -[Graduated to 'master'] - -* ag/rebase-update-refs-limit-to-branches (2026-05-10) 1 commit - (merged to 'next' on 2026-05-12 at 5222da09bb) - + rebase: ignore non-branch update-refs - - "git rebase --update-refs", when used with an rebase.instructionFormat - with "%d" (describe) in it, tried to update local branch HEAD by - mistake, which has been corrected. - source: <20260510224111.64467-2-mail@abhinavg.net> +* mm/git-url-parse (2026-05-01) 8 commits + (merged to 'next' on 2026-05-15 at 416deceeeb) + + t9904: add tests for the new url-parse builtin + + doc: describe the url-parse builtin + + builtin: create url-parse command + + urlmatch: define url_parse function + + url: return URL_SCHEME_UNKNOWN instead of dying + + url: move scheme detection to URL header/source + + url: move url_is_local_not_ssh to url.h + + connect: rename enum protocol to url_scheme -* bc/sign-commit-with-custom-encoding (2026-04-27) 2 commits - (merged to 'next' on 2026-05-13 at e82a4966c0) - + commit: sign commit after mutating buffer - + commit: name UTF-8 function appropriately + The internal URL parsing logic has been made accessible via a new + subcommand "git url-parse". + cf. + cf. <20260512085734.GA26769@tb-raspi4> + source: - Signing commit with custom encoding was passing the data to be - signed at a wrong stage in the pipeline, which has been corrected. - cf. - source: <20260427221834.1824543-1-sandals@crustytoothpaste.net> +* ps/maintenance-daemonize-lockfix (2026-05-13) 2 commits + (merged to 'next' on 2026-05-21 at 9b7fa37559) + + run-command: honor "gc.auto" for auto-maintenance + + builtin/maintenance: fix locking with "--detach" -* en/diffstat-utf8-truncation-fix (2026-04-20) 1 commit - (merged to 'next' on 2026-05-13 at adf801eb1d) - + diff: fix out-of-bounds reads and NULL deref in diffstat UTF-8 truncation + "git maintenance" that goes background did not use the lockfile to + prevent multiple maintenance processes from running at the same + time, which has been corrected. + cf. + source: <20260513-pks-maintenance-fix-lock-with-detach-v3-0-f27a1ac82891@pks.im> - The computation to shorten the filenames shown in diffstat measured - width of individual UTF-8 characters to add up, but forgot to take - into account error cases (e.g., an invalid UTF-8 sequence, or a - control character). - source: +* pw/xdiff-shrink-memory-consumption (2026-05-04) 5 commits + (merged to 'next' on 2026-05-15 at 7a867909d2) + + xdiff: reduce the size of array + + xprepare: simplify error handling + + xdiff: cleanup xdl_clean_mmatch() + + xdiff: reduce size of action arrays + + Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption -* en/xdiff-cleanup-3 (2026-04-29) 6 commits - (merged to 'next' on 2026-05-12 at e4e72e0f34) - + xdiff/xdl_cleanup_records: make execution of action easier to follow - + xdiff/xdl_cleanup_records: make setting action easier to follow - + xdiff/xdl_cleanup_records: make limits more clear - + xdiff/xdl_cleanup_records: use unambiguous types - + xdiff: use unambiguous types in xdl_bogo_sqrt() - + xdiff/xdl_cleanup_records: delete local recs pointer - (this branch is used by pw/xdiff-shrink-memory-consumption.) + Shrink wasted memory in Myers diff that does not account for common + prefix and suffix removal. + source: - Preparation of the xdiff/ codebase to work with Rust. - source: +* sp/shallow-deepen-on-non-shallow-repo-fix (2026-05-11) 1 commit + (merged to 'next' on 2026-05-15 at 67dd491aae) + + shallow: fix relative deepen on non-shallow repositories -* jh/alias-i18n-fixes (2026-04-24) 1 commit - (merged to 'next' on 2026-05-13 at c7cd30d414) - + alias: restore support for simple dotted aliases + "git fetch --deepen=" in a full clone truncated the history to + commits deep, which has been corrected to be a no-op instead. + source: <20260511192044.169557-1-samo_pogacnik@t-2.net> - Further update to the i18n alias support to avoid regressions. - source: <20260424161707.1514255-1-jonatan@jontes.page> +* za/t2000-modernise-more (2026-04-29) 1 commit + (merged to 'next' on 2026-05-15 at 3b524d0ba5) + + t2000: consolidate second scenario into a single test block -* js/adjust-tests-to-explicitly-access-bare-repo (2026-04-26) 8 commits - (merged to 'next' on 2026-05-13 at 48695e1cb0) - + safe.bareRepository: default to "explicit" with WITH_BREAKING_CHANGES - + status tests: filter `.gitconfig` from status output - + ls-files tests: filter `.gitconfig` from `--others` output - + t5601: restore `.gitconfig` after includeIf test - + t1305: use `--git-dir=.` for bare repo in include cycle test - + t1300: remove global config settings injected by test-lib.sh - + t7900: do not let `$HOME/.gitconfig` interfere with XDG tests - + test-lib: allow bare repository access when breaking changes are enabled + Test update. + cf. + source: <20260429103607.406339-1-zakariyahali100@gmail.com> - Some tests assume that bare repository accesses are by default - allowed; rewrite some of them to avoid the assumption, rewrite - others to explicitly set safe.bareRepository to allow them. - source: +-------------------------------------------------- +[New Topics] +* gh/jump-auto-mode (2026-05-21) 1 commit + - git-jump: pick a mode automatically when invoked without arguments -* js/mingw-no-nedmalloc (2026-05-08) 3 commits - (merged to 'next' on 2026-05-13 at 2116a6bcc9) - + mingw: remove the vendored compat/nedmalloc/ subtree - + mingw: drop the build-system plumbing for nedmalloc - + mingw: stop using nedmalloc + The 'git-jump' command (in contrib/) has been taught to automatically + pick a mode (merge, diff, or ws) when invoked without arguments. - Stop using unmaintained custom allocator in Windows build which was - the last user of the code. - source: + Comments? + source: -* js/objects-larger-than-4gb-on-windows (2026-05-08) 11 commits - (merged to 'next' on 2026-05-13 at 843d2ac470) - + ci: run expensive tests on push builds to integration branches - + t5608: mark >4GB tests as EXPENSIVE - + test-tool synthesize: add precomputed SHA-256 pack for 4 GiB + 1 - + test-tool synthesize: precompute pack for 4 GiB + 1 - + test-tool synthesize: use the unsafe hash for speed - + t5608: add regression test for >4GB object clone - + test-tool: add a helper to synthesize large packfiles - + delta, packfile: use size_t for delta header sizes - + odb, packfile: use size_t for streaming object sizes - + git-zlib: handle data streams larger than 4GB - + index-pack, unpack-objects: use size_t for object size - (this branch is used by jc/ci-enable-expensive.) +* sp/doc-range-diff-takes-notes (2026-05-20) 1 commit + (merged to 'next' on 2026-05-22 at 020bec81b7) + + Documentation/git-range-diff: add missing notes options in synopsis - Update code paths that assumed "unsigned long" was long enough for - "size_t". - source: + Doxfix. + Will merge to 'master'. + source: <20260521052841.73775-1-siddh.raman.pant@oracle.com> + + +* ps/odb-source-loose (2026-05-21) 19 commits + - odb/source-loose: drop pointer to the "files" source + - odb/source-loose: stub out remaining callbacks + - odb/source-loose: wire up `write_object_stream()` callback + - object-file: refactor writing objects to use loose source + - odb/source-loose: wire up `write_object()` callback + - loose: refactor object map to operate on `struct odb_source_loose` + - odb/source-loose: wire up `freshen_object()` callback + - odb/source-loose: drop `odb_source_loose_has_object()` + - odb/source-loose: wire up `count_objects()` callback + - odb/source-loose: wire up `find_abbrev_len()` callback + - odb/source-loose: wire up `for_each_object()` callback + - odb/source-loose: wire up `read_object_stream()` callback + - odb/source-loose: wire up `read_object_info()` callback + - odb/source-loose: wire up `close()` callback + - odb/source-loose: wire up `reprepare()` callback + - odb/source-loose: start converting to a proper `struct odb_source` + - odb/source-loose: store pointer to "files" instead of generic source + - odb/source-loose: move loose source into "odb/" subsystem + - Merge branch 'ps/odb-in-memory' into ps/odb-source-loose + (this branch uses jt/odb-transaction-write and ps/odb-in-memory.) + + The loose object source has been refactored into a proper `struct + odb_source`. -* kh/doc-commit-graph (2026-05-07) 1 commit - (merged to 'next' on 2026-05-12 at b9cafeb32d) - + doc: add caveat about turning off commit-graph + Comments? + source: <20260521-b4-pks-odb-source-loose-v1-0-6553b399be2d@pks.im> - Ramifications of turning off commit-graph has been documented a bit - more clearly. - source: +* ps/setup-centralize-odb-creation (2026-05-21) 9 commits + - setup: construct object database in `apply_repository_format()` + - repository: stop reading loose object map twice on repo init + - setup: stop initializing object database without repository + - setup: stop creating the object database in `setup_git_env()` + - repository: stop initializing the object database in `repo_set_gitdir()` + - setup: deduplicate logic to apply repository format + - setup: drop `setup_git_env()` + - t0001: plug test gaps for git-init(1) with GIT_OBJECT_DIRECTORY + - Merge branch 'ps/setup-wo-the-repository' into ps/setup-centralize-odb-creation + (this branch uses ps/setup-wo-the-repository.) -* kh/doc-restore-double-underscores-fix (2026-05-05) 1 commit - (merged to 'next' on 2026-05-12 at 2e8fc7cdac) - + doc: restore: remove double underscore - - Doc update. - source: + The setup logic to discover and configure repositories has been + refactored, and the initialization of the object database has been + centralized. + Comments? + source: <20260521-b4-pks-setup-centralize-odb-creation-v1-0-f130d2a7e8ae@pks.im> -* kh/name-rev-custom-format (2026-05-11) 5 commits - (merged to 'next' on 2026-05-12 at c944d6131e) - + format-rev: introduce builtin for on-demand pretty formatting - + name-rev: make dedicated --annotate-stdin --name-only test - + name-rev: factor code for sharing with a new command - + name-rev: run clang-format before factoring code - + name-rev: wrap both blocks in braces - A new builtin "git format-rev" is introduced for pretty formatting - one revision expression per line or commit object names found in - running text. - source: +* ps/gitlab-ci-macOS-improvements (2026-05-21) 2 commits + (merged to 'next' on 2026-05-22 at aaa3c7021e) + + gitlab-ci: update macOS image + + gitlab-ci: upgrade macOS runners + Update GitLab CI jobs that exercise macOS. -* mc/http-emptyauth-negotiate-fix (2026-04-30) 4 commits - (merged to 'next' on 2026-05-12 at 843ae82cd0) - + doc: clarify http.emptyAuth values - (merged to 'next' on 2026-04-20 at 6539524ca2) - + t5563: add tests for http.emptyAuth with Negotiate - + http: attempt Negotiate auth in http.emptyAuth=auto mode - + http: extract http_reauth_prepare() from retry paths + Will merge to 'master'. + source: <20260521-b4-pks-gitlab-ci-updates-v1-0-53bb46ed33e0@pks.im> - The 'http.emptyAuth=auto' configuration now correctly attempts - Negotiate authentication before falling back to manual credentials. - This allows seamless Kerberos ticket-based authentication without - requiring users to explicitly set 'http.emptyAuth=true'. - source: - source: +* kh/doc-hook (2026-05-21) 4 commits + - doc: hook: don’t self-link via config include + - doc: config: include existing git-hook(1) section + - doc: hook: consistently capitalize Git + - doc: hook: remove stray backtick -* ps/history-fixup (2026-04-26) 3 commits - (merged to 'next' on 2026-05-13 at e6154b6272) - + builtin/history: introduce "fixup" subcommand - + builtin/history: generalize function to commit trees - + replay: allow callers to control what happens with empty commits + Doc updates. - "git history" learned "fixup" command. - cf. - source: <20260427-b4-pks-history-fixup-v3-0-cb908f06264b@pks.im> + Comments? + source: -* rs/sideband-clear-line-before-print (2026-05-10) 1 commit - (merged to 'next' on 2026-05-12 at 83880f8ce6) - + sideband: clear full line when printing remote messages +* kh/doc-replay-config (2026-05-21) 4 commits + - doc: replay: move “default” to the right-hand-side + - doc: replay: use a nested definition list + - doc: replay: simplify replay.refAction description + - doc: link to config for git-replay(1) - Tweak the way how sideband messages from remote are printed while - we talk with a remote repository to avoid tickling terminal - emulator glitches. - source: <9826dabf-c9a6-4397-8ae6-a24f9c507f1b@web.de> + Doc update for "git replay" to actually refer to its configuration + variables. + Comments? + source: -* sb/unpack-index-pack-buffer-resize (2026-04-28) 1 commit - (merged to 'next' on 2026-05-13 at 2edd54bcfe) - + index-pack, unpack-objects: increase input buffer from 4 KiB to 128 KiB +-------------------------------------------------- +[Cooking] + +* jk/commit-graph-lazy-load-fallback (2026-05-18) 1 commit + (merged to 'next' on 2026-05-22 at d1188df466) + + commit: fall back to full read when maybe_tree is NULL + + The logic to lazy-load trees from the commit-graph has been made + more robust by falling back to reading the commit object when + the commit-graph is no longer available. - Use a larger buffer size in the code paths to ingest pack stream. - cf. - source: + Will merge to 'master'. + source: <20260519061534.GA1709881@coredump.intra.peff.net> -* sg/t6112-unwanted-tilde-expansion-fix (2026-04-21) 1 commit - (merged to 'next' on 2026-05-12 at ad2d08eb44) - + t6112: avoid tilde expansion +* jk/connect-service-enum (2026-05-21) 2 commits + - transport-helper: fix typo in BUG() message + (merged to 'next' on 2026-05-21 at fd80c61e21) + + connect: use "service" enum for "name" argument - Test fix. - source: <20260421192132.51172-1-szeder.dev@gmail.com> + The "name" argument in git_connect() and related functions has been + converted to a "service" enum to improve type safety and clarify its + purpose. + Will merge to 'next' and then to 'master'. + source: <20260519052219.GA1703179@coredump.intra.peff.net> + source: <20260522044352.GA861761@coredump.intra.peff.net> -* sj/submodule-update-clone-config-fix (2026-05-09) 1 commit - (merged to 'next' on 2026-05-12 at 5a0094838a) - + submodule-config: fix reading submodule.fetchJobs - The configuration variable submodule.fetchJobs was not read correctly, - which has been corrected. - source: +* jk/sq-dequote-cleanup (2026-05-18) 3 commits + (merged to 'next' on 2026-05-21 at fbedf2daea) + + quote: simplify internals of dequoting + + quote: drop sq_dequote_to_argv() + + quote.h: bump strvec forward declaration to the top --------------------------------------------------- -[Cooking] + Code simplification. -* hn/status-pull-advice-qualified (2026-05-13) 1 commit - - remote: qualify "git pull" advice for non-upstream branches + Will merge to 'master'. + source: <20260519011837.GA1615637@coredump.intra.peff.net> + + +* aj/stash-patch-optimize-temporary-index (2026-05-19) 1 commit + - stash: reuse cached index entries in --patch temporary index + + "git stash -p" has been optimized by reusing cached index + entries in its temporary index, avoiding unnecessary lstat() + calls on unchanged files. + source: + + +* tb/bitmap-build-performance (2026-05-19) 9 commits + - pack-bitmap: build pseudo-merge bitmaps after regular bitmaps + - pack-bitmap: remember pseudo-merge parents + - pack-bitmap: sort bitmaps before XORing + - pack-bitmap: cache object positions during fill + - pack-bitmap: consolidate `find_object_pos()` success path + - pack-bitmap: reuse stored selected bitmaps + - pack-bitmap: check subtree bits before recursing + - pack-bitmap: pass object position to `fill_bitmap_tree()` + - Merge branch 'tb/pseudo-merge-bugfixes' into tb/bitmap-build-performance + (this branch uses tb/pseudo-merge-bugfixes.) + + Reachability bitmap generation has been significantly optimized. By + reordering tree traversal, caching object positions, and refining how + pseudo-merge bitmaps are constructed, the performance of "git repack + --write-midx-bitmaps" is improved, especially for large repositories + and when using pseudo-merges. + source: + + +* hn/status-pull-advice-qualified (2026-05-21) 1 commit + - remote: qualify "git pull" advice for non-upstream compareBranches Advice shown by "git status" when the local branch is behind or has diverged from its push branch has been updated to suggest "git pull ". Comments? - source: + source: * jk/dumb-http-alternate-fix (2026-05-12) 1 commit @@ -371,7 +410,7 @@ Release tarballs are available at: source: <20260512115603.80780-1-l.s.r@web.de> -* ta/approxidate-noon-fix (2026-05-16) 4 commits +* ta/approxidate-noon-fix (2026-05-21) 4 commits - approxidate: use deferred mday adjustments for "specials" - approxidate: make "specials" respect fixed day-of-month - t0006: add support for approxidate test date adjustment @@ -380,8 +419,8 @@ Release tarballs are available at: "Friday noon" asked in the morning on Sunday was parsed to be one day before the specified time, which has been corrected. - Comments? - source: <20260516151540.9611-1-taahol@utu.fi> + Will merge to 'next'. + source: <20260521105408.8222-1-taahol@utu.fi> * mm/doc-word-diff (2026-05-13) 1 commit @@ -417,52 +456,35 @@ Release tarballs are available at: * ed/check-connected-close-err-fd (2026-05-16) 1 commit - - Merge branch 'ed/check-connected-close-err-fd-2.53' into ed/check-connected-close-err-fd + (merged to 'next' on 2026-05-22 at 00d592399e) + + Merge branch 'ed/check-connected-close-err-fd-2.53' into ed/check-connected-close-err-fd (this branch uses ed/check-connected-close-err-fd-2.53.) File descriptor leak fix. - Will merge to 'next'? + Will merge to 'master'. (this branch uses ed/check-connected-close-err-fd-2.53.) * ed/check-connected-close-err-fd-2.53 (2026-05-14) 1 commit - - connected: close err_fd in promisor fast-path + (merged to 'next' on 2026-05-22 at 1017d0e022) + + connected: close err_fd in promisor fast-path (this branch is used by ed/check-connected-close-err-fd.) File descriptor leak fix (for 2.54 maintenance track). - Will be merged together with ed/check-connected-close-err-fd topic. - source: - - -* jk/apply-leakfix (2026-05-15) 1 commit - (merged to 'next' on 2026-05-20 at 725a20bf93) - + apply: plug leak on "patch too large" error - - Leakfix. - - Will merge to 'master'. - source: <20260516021622.GA744303@coredump.intra.peff.net> - - -* jk/commit-sign-overflow-fix (2026-05-15) 1 commit - (merged to 'next' on 2026-05-20 at e1a320d4e5) - + commit: handle large commit messages in utf8 verification - - Leakfix. - Will merge to 'master'. - source: <20260516022310.GB744303@coredump.intra.peff.net> + source: * kk/tips-reachable-from-bases-optim (2026-05-16) 2 commits - - t6600: add tests for duplicate tips in tips_reachable_from_bases() - - commit-reach: use object flags for tips_reachable_from_bases() + (merged to 'next' on 2026-05-22 at 87d6b8e666) + + t6600: add tests for duplicate tips in tips_reachable_from_bases() + + commit-reach: use object flags for tips_reachable_from_bases() Revision traversal optimization. - Will merge to 'next'? + Will merge to 'master'. source: @@ -499,21 +521,23 @@ Release tarballs are available at: * rs/use-builtin-add-overflow-explicitly-on-clang (2026-05-18) 2 commits - - use __builtin_add_overflow() in st_add() with Clang - - strbuf: use st_add3() in strbuf_grow() + (merged to 'next' on 2026-05-21 at c223b71079) + + use __builtin_add_overflow() in st_add() with Clang + + strbuf: use st_add3() in strbuf_grow() Micro optimization of codepaths that compute allocation sizes carefully. - Will merge to 'next'. + Will merge to 'master'. source: <20260518202502.25682-1-l.s.r@web.de> * tc/generate-configlist-fix-for-older-ninja (2026-05-15) 1 commit - - generate-configlist: collapse depfile for older Ninja + (merged to 'next' on 2026-05-22 at 8322bfb8f2) + + generate-configlist: collapse depfile for older Ninja Build update. - Will merge to 'next'? + Will merge to 'master'. source: <20260515-toon-fix-almalinux8-v3-1-b545a0647f0f@iotcl.com> @@ -544,13 +568,14 @@ Release tarballs are available at: * kn/refs-fsck-skip-lock-files (2026-05-17) 1 commit - - refs/files: skip lock files during consistency checks + (merged to 'next' on 2026-05-21 at 91e30e3543) + + refs/files: skip lock files during consistency checks The consistency checks for the files reference backend have been updated to skip lock files earlier, avoiding unnecessary parsing of intermediate files. - Will merge to 'next'. + Will merge to 'master'. source: <20260517-refs-fsck-skip-lock-files-v3-1-b24dfd673c7e@gmail.com> @@ -566,17 +591,6 @@ Release tarballs are available at: source: <20260517132111.1014901-1-joerg@thalheim.io> -* sp/shallow-deepen-on-non-shallow-repo-fix (2026-05-11) 1 commit - (merged to 'next' on 2026-05-15 at 67dd491aae) - + shallow: fix relative deepen on non-shallow repositories - - "git fetch --deepen=" in a full clone truncated the history to - commits deep, which has been corrected to be a no-op instead. - - Will merge to 'master'. - source: <20260511192044.169557-1-samo_pogacnik@t-2.net> - - * ag/sequencer-remove-unused-struct-member (2026-05-11) 1 commit (merged to 'next' on 2026-05-17 at 8553437ae1) + sequencer: remove todo_add_branch_context.commit @@ -588,42 +602,18 @@ Release tarballs are available at: source: -* ps/maintenance-daemonize-lockfix (2026-05-13) 2 commits - - run-command: honor "gc.auto" for auto-maintenance - - builtin/maintenance: fix locking with "--detach" - - "git maintenance" that goes background did not use the lockfile to - prevent multiple maintenance processes from running at the same - time, which has been corrected.. - - Comments? - source: <20260513-pks-maintenance-fix-lock-with-detach-v3-0-f27a1ac82891@pks.im> - - -* aw/validate-proxy-url-scheme (2026-05-05) 1 commit - (merged to 'next' on 2026-05-15 at da9c1b71d7) - + http: reject unsupported proxy URL schemes - - Misspelt proxy URL (e.g., httt://...) did not trigger any warning - or failure, which has been corrected. - - Will merge to 'master'. - source: <20260505091941.1825-2-aminnimaj@gmail.com> - - -* hn/branch-prune-merged (2026-05-13) 5 commits - - branch: add --all-remotes flag +* hn/branch-prune-merged (2026-05-21) 4 commits + - branch: add --dry-run for --prune-merged - branch: add branch..pruneMerged opt-out - - branch: add --prune-merged - - branch: let delete_branches warn instead of error on bulk refusal - - branch: add --forked + - branch: add --prune-merged + - branch: add --forked "git branch" command learned "--prune-merged" option to remove local branches that have already been merged to the remote-tracking branches they track. Comments? - source: + source: * mm/diff-U-takes-no-negative-values (2026-05-12) 4 commits @@ -640,26 +630,6 @@ Release tarballs are available at: source: -* mm/git-url-parse (2026-05-01) 8 commits - (merged to 'next' on 2026-05-15 at 416deceeeb) - + t9904: add tests for the new url-parse builtin - + doc: describe the url-parse builtin - + builtin: create url-parse command - + urlmatch: define url_parse function - + url: return URL_SCHEME_UNKNOWN instead of dying - + url: move scheme detection to URL header/source - + url: move url_is_local_not_ssh to url.h - + connect: rename enum protocol to url_scheme - - The internal URL parsing logic has been made accessible via a new - subcommand "git url-parse". - - Will merge to 'master'. - cf. - cf. <20260512085734.GA26769@tb-raspi4> - source: - - * dk/doc-exclude-is-shared-per-repo (2026-05-12) 1 commit (merged to 'next' on 2026-05-17 at ddc761aec6) + ignore: note info/exclude lives in GIT_COMMON_DIR, not GIT_DIR @@ -695,39 +665,6 @@ Release tarballs are available at: source: -* jc/ci-enable-expensive (2026-05-10) 2 commits - (merged to 'next' on 2026-05-15 at d258bb5e55) - + ci: enable EXPENSIVE for contributor builds - + Merge branch 'js/objects-larger-than-4gb-on-windows' into jc/ci-enable-expensive - - Enable expensive tests to catch topics that may cause breakages on - integration branches closer to their origin in the contributor PR - builds. - - Will merge to 'master'. - source: - - -* kn/refs-generic-helpers (2026-05-04) 9 commits - (merged to 'next' on 2026-05-15 at 62cb4e0ce2) - + refs: use peeled tag values in reference backends - + refs: add peeled object ID to the `ref_update` struct - + refs: move object parsing to the generic layer - + update-ref: handle rejections while adding updates - + update-ref: move `print_rejected_refs()` up - + refs: return `ref_transaction_error` from `ref_transaction_update()` - + refs: extract out reflog config to generic layer - + refs: introduce `ref_store_init_options` - + refs: remove unused typedef 'ref_transaction_commit_fn' - - Refactor service routines in the ref subsystem backends. - - Will merge to 'master'. - cf. - cf. <87o6isqq4q.fsf@toon--20250203-5JQV3.mail-host-address-is-not-set> - source: <20260504-refs-move-to-generic-layer-v4-0-936ac2f0b1a3@gmail.com> - - * ob/more-repo-config-values (2026-04-23) 8 commits - env: move "warn_on_object_refname_ambiguity" into `struct repo_config_values` - env: move "sparse_expect_files_outside_of_patterns" into `repo_config_values` @@ -764,38 +701,14 @@ Release tarballs are available at: source: <20260519153808.494105-1-christian.couder@gmail.com> -* kh/doc-log-decorate-list (2026-04-27) 2 commits - (merged to 'next' on 2026-05-15 at f740311a37) - + doc: log: use the same delimiter in description list - + doc: log: fix --decorate description list - - Doc update. - - Will merge to 'master'. - cf. - source: - - -* za/t2000-modernise-more (2026-04-29) 1 commit - (merged to 'next' on 2026-05-15 at 3b524d0ba5) - + t2000: consolidate second scenario into a single test block - - Test update. - - Will merge to 'master'. - cf. - source: <20260429103607.406339-1-zakariyahali100@gmail.com> - - -* hn/checkout-track-fetch (2026-05-18) 1 commit +* hn/checkout-track-fetch (2026-05-21) 1 commit - checkout: extend --track with a "fetch" mode to refresh start-point "git checkout --track=..." learned to optionally fetch the branch from the remote the new branch will work with. Comments? - cf. - source: + source: * mf/revision-max-count-oldest (2026-05-18) 1 commit @@ -889,20 +802,21 @@ Release tarballs are available at: * ds/fetch-negotiation-options (2026-05-19) 8 commits - - send-pack: pass negotiation config in push - - remote: add remote.*.negotiationInclude config - - fetch: add --negotiation-include option for negotiation - - negotiator: add have_sent() interface - - remote: add remote.*.negotiationRestrict config - - transport: rename negotiation_tips - - fetch: add --negotiation-restrict option - - t5516: fix test order flakiness + (merged to 'next' on 2026-05-21 at ff57fd9c97) + + send-pack: pass negotiation config in push + + remote: add remote.*.negotiationInclude config + + fetch: add --negotiation-include option for negotiation + + negotiator: add have_sent() interface + + remote: add remote.*.negotiationRestrict config + + transport: rename negotiation_tips + + fetch: add --negotiation-restrict option + + t5516: fix test order flakiness The negotiation tip options in "git fetch" have been reworked to allow requiring certain refs to be sent as "have" lines, and to restrict negotiation to a specific set of refs. - Will merge to 'next'. + Will merge to 'master'. source: @@ -924,43 +838,45 @@ Release tarballs are available at: * ps/odb-in-memory (2026-04-10) 18 commits - - t/unit-tests: add tests for the in-memory object source - - odb: generic in-memory source - - odb/source-inmemory: stub out remaining functions - - odb/source-inmemory: implement `freshen_object()` callback - - odb/source-inmemory: implement `count_objects()` callback - - odb/source-inmemory: implement `find_abbrev_len()` callback - - odb/source-inmemory: implement `for_each_object()` callback - - odb/source-inmemory: convert to use oidtree - - oidtree: add ability to store data - - cbtree: allow using arbitrary wrapper structures for nodes - - odb/source-inmemory: implement `write_object_stream()` callback - - odb/source-inmemory: implement `write_object()` callback - - odb/source-inmemory: implement `read_object_stream()` callback - - odb/source-inmemory: implement `read_object_info()` callback - - odb: fix unnecessary call to `find_cached_object()` - - odb/source-inmemory: implement `free()` callback - - odb: introduce "in-memory" source - - Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory - (this branch uses jt/odb-transaction-write.) + (merged to 'next' on 2026-05-21 at c8709aa17f) + + t/unit-tests: add tests for the in-memory object source + + odb: generic in-memory source + + odb/source-inmemory: stub out remaining functions + + odb/source-inmemory: implement `freshen_object()` callback + + odb/source-inmemory: implement `count_objects()` callback + + odb/source-inmemory: implement `find_abbrev_len()` callback + + odb/source-inmemory: implement `for_each_object()` callback + + odb/source-inmemory: convert to use oidtree + + oidtree: add ability to store data + + cbtree: allow using arbitrary wrapper structures for nodes + + odb/source-inmemory: implement `write_object_stream()` callback + + odb/source-inmemory: implement `write_object()` callback + + odb/source-inmemory: implement `read_object_stream()` callback + + odb/source-inmemory: implement `read_object_info()` callback + + odb: fix unnecessary call to `find_cached_object()` + + odb/source-inmemory: implement `free()` callback + + odb: introduce "in-memory" source + + Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory + (this branch is used by ps/odb-source-loose; uses jt/odb-transaction-write.) Add a new odb "in-memory" source that is meant to only hold tentative objects (like the virtual blob object that represents the working tree file used by "git blame"). - Need to wait for the base topic. + Will merge to 'master'. source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im> * cl/conditional-config-on-worktree-path (2026-05-13) 2 commits - - config: add "worktree" and "worktree/i" includeIf conditions - - config: refactor include_by_gitdir() into include_by_path() + (merged to 'next' on 2026-05-22 at 7851f494ae) + + config: add "worktree" and "worktree/i" includeIf conditions + + config: refactor include_by_gitdir() into include_by_path() The [includeIf "condition"] conditional inclusion facility for configuration files has learned to use the location of worktree in its condition. - Will merge to 'next'? + Will merge to 'master'. cf. <2989eb07-2933-4b5a-9e5c-33ef9b805528@gmail.com> source: <20260513-includeif-worktree-v4-0-f8e6212d1fba@black-desk.cn> @@ -1008,55 +924,59 @@ Release tarballs are available at: * jt/odb-transaction-write (2026-05-14) 7 commits - - odb/transaction: make `write_object_stream()` pluggable - - object-file: generalize packfile writes to use odb_write_stream - - object-file: avoid fd seekback by checking object size upfront - - object-file: remove flags from transaction packfile writes - - odb: update `struct odb_write_stream` read() callback - - odb/transaction: use pluggable `begin_transaction()` - - odb: split `struct odb_transaction` into separate header - (this branch is used by ps/odb-in-memory.) + (merged to 'next' on 2026-05-21 at 61108abe4d) + + odb/transaction: make `write_object_stream()` pluggable + + object-file: generalize packfile writes to use odb_write_stream + + object-file: avoid fd seekback by checking object size upfront + + object-file: remove flags from transaction packfile writes + + odb: update `struct odb_write_stream` read() callback + + odb/transaction: use pluggable `begin_transaction()` + + odb: split `struct odb_transaction` into separate header + (this branch is used by ps/odb-in-memory and ps/odb-source-loose.) ODB transaction interface is being reworked to explicitly handle object writes. - Will merge to 'next'. + Will merge to 'master'. source: <20260514183740.1505171-1-jltobler@gmail.com> * sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit - - cat-file: add mailmap subcommand to --batch-command + (merged to 'next' on 2026-05-22 at 197a9bad73) + + cat-file: add mailmap subcommand to --batch-command "git cat-file --batch" learns an in-line command "mailmap" that lets the user toggle use of mailmap. - Will merge to 'next'? + Will merge to 'master'. + cf. source: <20260416033250.4327-2-siddharthasthana31@gmail.com> * tb/incremental-midx-part-3.3 (2026-05-19) 16 commits - - repack: allow `--write-midx=incremental` without `--geometric` - - repack: introduce `--write-midx=incremental` - - repack: implement incremental MIDX repacking - - packfile: ensure `close_pack_revindex()` frees in-memory revindex - - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK` - - repack-geometry: prepare for incremental MIDX repacking - - repack-midx: extract `repack_fill_midx_stdin_packs()` - - repack-midx: factor out `repack_prepare_midx_command()` - - midx: expose `midx_layer_contains_pack()` - - repack: track the ODB source via existing_packs - - midx: support custom `--base` for incremental MIDX writes - - midx: introduce `--no-write-chain-file` for incremental MIDX writes - - midx: use `strvec` for `keep_hashes` - - midx: build `keep_hashes` array in order - - midx: use `strset` for retained MIDX files - - midx-write: handle noop writes when converting incremental chains + (merged to 'next' on 2026-05-21 at 6c11c1a739) + + repack: allow `--write-midx=incremental` without `--geometric` + + repack: introduce `--write-midx=incremental` + + repack: implement incremental MIDX repacking + + packfile: ensure `close_pack_revindex()` frees in-memory revindex + + builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK` + + repack-geometry: prepare for incremental MIDX repacking + + repack-midx: extract `repack_fill_midx_stdin_packs()` + + repack-midx: factor out `repack_prepare_midx_command()` + + midx: expose `midx_layer_contains_pack()` + + repack: track the ODB source via existing_packs + + midx: support custom `--base` for incremental MIDX writes + + midx: introduce `--no-write-chain-file` for incremental MIDX writes + + midx: use `strvec` for `keep_hashes` + + midx: build `keep_hashes` array in order + + midx: use `strset` for retained MIDX files + + midx-write: handle noop writes when converting incremental chains The repacking code has been refactored and compaction of MIDX layers have been implemented, and incremental strategy that does not require all-into-one repacking has been introduced. - Will merge to 'next'. + Will merge to 'master'. source: @@ -1073,29 +993,31 @@ Release tarballs are available at: * ps/setup-wo-the-repository (2026-05-19) 18 commits - - setup: stop using `the_repository` in `init_db()` - - setup: stop using `the_repository` in `create_reference_database()` - - setup: stop using `the_repository` in `initialize_repository_version()` - - setup: stop using `the_repository` in `check_repository_format()` - - setup: stop using `the_repository` in `upgrade_repository_format()` - - setup: stop using `the_repository` in `setup_git_directory()` - - setup: stop using `the_repository` in `setup_git_directory_gently()` - - setup: stop using `the_repository` in `setup_git_env()` - - setup: stop using `the_repository` in `set_git_work_tree()` - - setup: stop using `the_repository` in `setup_work_tree()` - - setup: stop using `the_repository` in `enter_repo()` - - setup: stop using `the_repository` in `verify_non_filename()` - - setup: stop using `the_repository` in `verify_filename()` - - setup: stop using `the_repository` in `path_inside_repo()` - - setup: stop using `the_repository` in `prefix_path()` - - setup: stop using `the_repository` in `is_inside_work_tree()` - - setup: stop using `the_repository` in `is_inside_git_dir()` - - setup: replace use of `the_repository` in static functions + (merged to 'next' on 2026-05-21 at d8fb5a7b3e) + + setup: stop using `the_repository` in `init_db()` + + setup: stop using `the_repository` in `create_reference_database()` + + setup: stop using `the_repository` in `initialize_repository_version()` + + setup: stop using `the_repository` in `check_repository_format()` + + setup: stop using `the_repository` in `upgrade_repository_format()` + + setup: stop using `the_repository` in `setup_git_directory()` + + setup: stop using `the_repository` in `setup_git_directory_gently()` + + setup: stop using `the_repository` in `setup_git_env()` + + setup: stop using `the_repository` in `set_git_work_tree()` + + setup: stop using `the_repository` in `setup_work_tree()` + + setup: stop using `the_repository` in `enter_repo()` + + setup: stop using `the_repository` in `verify_non_filename()` + + setup: stop using `the_repository` in `verify_filename()` + + setup: stop using `the_repository` in `path_inside_repo()` + + setup: stop using `the_repository` in `prefix_path()` + + setup: stop using `the_repository` in `is_inside_work_tree()` + + setup: stop using `the_repository` in `is_inside_git_dir()` + + setup: replace use of `the_repository` in static functions + (this branch is used by ps/setup-centralize-odb-creation.) Many uses of the_repository has been updated to use a more appropriate struct repository instance in setup.c codepath. - Will merge to 'next'? + Will merge to 'master'. source: <20260519-pks-setup-wo-the-repository-v3-0-a00d8ea8b07f@pks.im> @@ -1118,28 +1040,30 @@ Release tarballs are available at: * ps/graph-lane-limit (2026-03-27) 3 commits - - graph: add truncation mark to capped lanes - - graph: add --graph-lane-limit option - - graph: limit the graph width to a hard-coded max + (merged to 'next' on 2026-05-22 at ca1c5e8432) + + graph: add truncation mark to capped lanes + + graph: add --graph-lane-limit option + + graph: limit the graph width to a hard-coded max The graph output from commands like "git log --graph" can now be limited to a specified number of lanes, preventing overly wide output in repositories with many branches. - Will merge to 'next'? + Will merge to 'master'. cf. source: <20260328001113.1275291-1-pabloosabaterr@gmail.com> * jr/bisect-custom-terms-in-output (2026-05-14) 3 commits - - rev-parse: use selected alternate terms to look up refs - - bisect: print bisect terms in single quotes - - bisect: use selected alternate terms in status output + (merged to 'next' on 2026-05-22 at 1ccd1056c9) + + rev-parse: use selected alternate terms to look up refs + + bisect: print bisect terms in single quotes + + bisect: use selected alternate terms in status output "git bisect" now uses the selected terms (e.g., old/new) more consistently in its output. - Will merge to 'next'? + Will merge to 'master'. source: <20260514-bisect-terms-v4-0-b3e3cf1b06ce@schlaraffenlan.de> @@ -1201,37 +1125,23 @@ Release tarballs are available at: * pt/fsmonitor-linux (2026-04-15) 13 commits - - fsmonitor: convert shown khash to strset in do_handle_client - - fsmonitor: add tests for Linux - - fsmonitor: add timeout to daemon stop command - - fsmonitor: close inherited file descriptors and detach in daemon - - run-command: add close_fd_above_stderr option - - fsmonitor: implement filesystem change listener for Linux - - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c - - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c - - fsmonitor: use pthread_cond_timedwait for cookie wait - - compat/win32: add pthread_cond_timedwait - - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon - - fsmonitor: fix khash memory leak in do_handle_client - - t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests + (merged to 'next' on 2026-05-22 at 5d99c1765d) + + fsmonitor: convert shown khash to strset in do_handle_client + + fsmonitor: add tests for Linux + + fsmonitor: add timeout to daemon stop command + + fsmonitor: close inherited file descriptors and detach in daemon + + run-command: add close_fd_above_stderr option + + fsmonitor: implement filesystem change listener for Linux + + fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c + + fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c + + fsmonitor: use pthread_cond_timedwait for cookie wait + + compat/win32: add pthread_cond_timedwait + + fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon + + fsmonitor: fix khash memory leak in do_handle_client + + t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests The fsmonitor daemon has been implemented for Linux. - Will merge to 'next'? + Will merge to 'master'. cf. source: - - -* pw/xdiff-shrink-memory-consumption (2026-05-04) 5 commits - (merged to 'next' on 2026-05-15 at 7a867909d2) - + xdiff: reduce the size of array - + xprepare: simplify error handling - + xdiff: cleanup xdl_clean_mmatch() - + xdiff: reduce size of action arrays - + Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption - - Shrink wasted memory in Myers diff that does not account for common - prefix and suffix removal. - - Will merge to 'master'. - source: