diff --git a/whats-cooking.txt b/whats-cooking.txt index 18c733698e..bf6eeb2dad 100644 --- a/whats-cooking.txt +++ b/whats-cooking.txt @@ -1,23 +1,24 @@ To: git@vger.kernel.org -Subject: What's cooking in git.git (Jul 2026, #05) -X-master-at: f60db8d575adb79761d363e026fb49bddf330c73 -X-next-at: 8d093f411df65440e1ddb297f1180711f28b7488 +Subject: What's cooking in git.git (Jul 2026, #06) +X-master-at: 55526a18268bbc1ddaf8a6b7850c33d984eac9e9 +X-next-at: 8e2bf96aa5bacd9f277397638fd9823d0be25e88 Bcc: lwn@lwn.net, gitster@pobox.com -What's cooking in git.git (Jul 2026, #05) +What's cooking in git.git (Jul 2026, #06) ----------------------------------------- Here are the topics that have been cooking in my tree. Commits prefixed with '+' are in 'next' (being in 'next' is a sign that a topic is stable enough to be used and is a candidate to be in a future release). Commits prefixed with '-' are only in 'seen', and -aren't considered "accepted" at all. They may be annotated with a URL +aren't considered "accepted" at all. They may be annotated with a URL to a message that raises issues but they are by no means exhaustive. A topic without enough support may be discarded after a long period of no activity (of course, it can be resubmitted when new interest arises). -The first batch of topics have now graduated to the 'master' branch. +The second batch of topics have now graduated to the 'master' +branch. Copies of the source code to Git live in many repositories, and the following is a list of the ones I push into or their mirrors. Some @@ -47,91 +48,174 @@ Release tarballs are available at: https://www.kernel.org/pub/software/scm/git/ +-------------------------------------------------- +[Graduated to 'master'] + +* ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit + (merged to 'next' on 2026-07-06 at b099249efd) + + gpg-interface: fix strip_cr_before_lf to only remove CR before LF + + The GPG and SSH signature parsing code has been corrected to strip + carriage return characters only when they immediately precede line + feeds, instead of unconditionally stripping all carriage returns. + + Graduated to 'master'. + source: <20260624093618.17456-1-antonio.destefani08@gmail.com> + + +* hn/branch-push-slip-advice (2026-06-27) 2 commits + (merged to 'next' on 2026-07-06 at acdff65ac5) + + push: suggest for a slash slip + + branch: suggest / on upstream slip + + When 'git push origin/main' or 'git branch origin main' is run, the + command is now recognized as a potential typo, and advice has been + added to offer a typo fix. + + Graduated to 'master'. + cf. + source: + + +* jk/format-patch-leakfix (2026-06-29) 2 commits + (merged to 'next' on 2026-07-06 at 35aff0d609) + + format-patch: fix leak of rev_info in prepare_bases() + + t: move LSan errors from stdout to stderr + + A memory leak in the '--base' handling of 'git format-patch' has been + plugged, and the leak reporting of the test suite when running under a + TAP harness has been improved. + + Graduated to 'master'. + cf. + source: <20260630063944.GA3733670@coredump.intra.peff.net> + + +* jk/reftable-leakfix (2026-06-28) 1 commit + (merged to 'next' on 2026-07-06 at 55ce81f2d5) + + reftable: fix unlikely leak on API error + + A memory leak in the 'reftable_writer_new()' initialization function + has been fixed by delaying the allocation of 'struct reftable_writer' + until after input options are validated. + + Graduated to 'master'. + cf. + source: <20260628090314.GA661068@coredump.intra.peff.net> + + +* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits + (merged to 'next' on 2026-07-06 at aa748c4564) + + prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion + + prio-queue: rename .nr to .nr_ and add accessor helpers + (this branch is used by kk/prio-queue-cascade-sift.) + + The lazy priority queue optimization pattern (deferring actual removal + in 'prio_queue_get()' to allow get+put fusion) has been folded + directly into 'prio_queue' itself, speeding up commit traversal + workflows and simplifying callers. + + Graduated to 'master'. + cf. + source: + + +* ps/odb-generalize-prepare (2026-06-22) 3 commits + (merged to 'next' on 2026-07-06 at 6132517517) + + odb: introduce `odb_prepare()` + + odb/source: generalize `reprepare()` callback + + Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare + + The 'reprepare()' callback for object database sources has been + generalized into a 'prepare()' callback with an optional flush cache + flag, and a new 'odb_prepare()' wrapper has been introduced to allow + pre-opening object database sources. + + Graduated to 'master'. + cf. <87ik704f1j.fsf@emacs.iotcl.com> + source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im> + -------------------------------------------------- [New Topics] -* js/pack-objects-delta-size-t (2026-07-09) 12 commits - - git-zlib: widen `git_deflate_bound()` to `size_t` - - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t` - - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t` - - diff: widen `deflate_it()`'s bound local from int to `size_t` - - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t` - - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t` - - delta: widen `create_delta()` and `diff_delta()` to `size_t` - - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t` - - pack-objects: widen `free_unpacked()` return to `size_t` - - pack-objects: widen delta-cache accounting to `size_t` - - delta: widen `create_delta_index()` parameter to `size_t` - - diff-delta: widen `struct delta_index`' size fields to `size_t` +* tb/send-pack-no-ref-delta (2026-07-12) 4 commits + - send-pack: honor `no-ref-delta` capability + - pack-objects: support reuse with `--no-ref-delta` + - pack-objects: introduce `--no-ref-delta` + - t/helper: teach pack-deltas to list delta entries - The pack-objects and delta-encoding code paths have been updated to - use 'size_t' instead of 'unsigned long' for object sizes and offset - limits, avoiding potential truncation issues on 64-bit Windows. + 'git send-pack' has been taught to refrain from sending 'REF_DELTA' + encoded packfiles when the other side asks it to. Needs review. - source: + source: -* cl/b4-cover-change-id (2026-07-10) 1 commit - - b4: include change-id in cover template +* cc/doc-fast-export-synopsis-fix (2026-07-13) 1 commit + - fast-export: standardize usage string and SYNOPSIS - The in-tree 'b4' cover letter template has been updated to include the - 'change-id' trailer, ensuring that sent tags generated by 'b4' contain - the required tracking information for subsequent runs. + The usage string and SYNOPSIS for 'git fast-export' have been + standardized to make them consistent with each other and with other + commands. - Will merge to 'next'. - source: <20260710-add-change-id-to-b4-template-v1-1-1bd37a25064e@black-desk.cn> + Will merge to 'next'? + cf. + source: <20260713124153.245268-1-christian.couder@gmail.com> -* ps/odb-stream-double-close-fix (2026-07-10) 1 commit - - object-file: fix closing object stream twice +* sk/t1100-modernize (2026-07-14) 2 commits + - t1100: move creation of expected output into setup test + - t1100: modernize test style - The stream-based object signature verification path has been - corrected to avoid double-closing the stream on read errors. + The test script 't/t1100-commit-tree-options.sh' has been modernized + by converting test cases to the modern style (using single quotes and + tab indentation) and moving the creation of the expected file inside + the setup test so it runs under the protection of the test harness. - Will merge to 'next'. - source: <20260710-pks-odb-stream-double-close-v1-1-d5fa233a37c7@pks.im> + Will merge to 'next'? + cf. + source: <20260714122033.61947-1-diy2903@gmail.com> -* pz/fetch-submodule-errors-config (2026-07-11) 3 commits - - fixup! fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal - - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal - - submodule: fix premature failure in recursive submodule fetch +* tn/packfile-uri-concurrency (2026-07-13) 2 commits + - fetch-pack: accept "pack" output for packfile URIs + - http: use unique tempfiles for packfile URI downloads - The 'git fetch' command has been updated to allow configuring how - submodule fetch errors are handled. A new configuration variable - 'fetch.submoduleErrors' and a corresponding '--submodule-errors' - command-line option have been introduced, allowing users to make - submodule fetch errors non-fatal (warn instead of fail). Additionally, - a premature failure during recursive submodule fetches has been fixed - by deferring the error until the OID-based retry phase also fails. + Concurrent downloads of packfiles via packfile URIs have been + supported by using unique temporary files, preventing corruption when + multiple processes fetch the same pack. The 'fetch-pack' command has + also been updated to tolerate pre-existing '.keep' files. + + Expecting a reroll. + cf. + source: + + +* rs/strbuf-avoid-redundant-reset (2026-07-14) 1 commit + - strbuf: avoid redundant reset in strbuf_getwholeline() + + A redundant 'strbuf_reset()' call in the 'HAVE_GETDELIM' path of + 'strbuf_getwholeline()' has been removed, as 'getdelim()' overwrites + the buffer and the length is updated afterwards. + + Will merge to 'next'? + cf. + source: + + +* rs/tempfile-wo-the-repository (2026-07-14) 5 commits + - use repo_hold_lock_file_for_update{,_mode,_timeout}() with custom repos + - tempfile: stop using the_repository + - lockfile: add repo_hold_lock_file_for_update{,_timeout}{,_mode}() + - refs/packed: use repo_create_tempfile() + - tempfile: add repo_create_tempfile{,_mode}() + + The tempfile and lockfile APIs have been refactored to stop depending + on the 'the_repository' global variable, and their callers have been + updated to use the repository-aware variants. Needs review. - source: <20260710122655.3066377-1-paulius.zaleckas@gmail.com> - - -* gr/add-e-use-apply-api (2026-07-10) 1 commit - - builtin/add.c: replace run_command() with direct apply_all_patches() call - - The application of the edited patch in 'git add -e' has been - refactored to use the internal apply API directly, avoiding the need - to spawn a 'git apply' subprocess. - - Needs review. - source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com> - - -* fz/rebase-autosquash-empty (2026-07-11) 1 commit - . sequencer: honor --empty when a fixup!/squash! empties its target - - A commit that is emptied by melding a 'fixup!' or 'squash!' commit - during 'git rebase --autosquash' is now handled according to the - '--empty' option, allowing it to be dropped, kept, or to halt the - rebase. - - Waiting for response(s) to review comment(s). - cf. - source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com> + source: <20260714175956.54601-1-l.s.r@web.de> -------------------------------------------------- [Stalled] @@ -198,6 +282,95 @@ Release tarballs are available at: -------------------------------------------------- [Cooking] +* js/pack-objects-delta-size-t (2026-07-09) 12 commits + - git-zlib: widen `git_deflate_bound()` to `size_t` + - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t` + - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t` + - diff: widen `deflate_it()`'s bound local from int to `size_t` + - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t` + - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t` + - delta: widen `create_delta()` and `diff_delta()` to `size_t` + - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t` + - pack-objects: widen `free_unpacked()` return to `size_t` + - pack-objects: widen delta-cache accounting to `size_t` + - delta: widen `create_delta_index()` parameter to `size_t` + - diff-delta: widen `struct delta_index`' size fields to `size_t` + + The pack-objects and delta-encoding code paths have been updated to + use 'size_t' instead of 'unsigned long' for object sizes and offset + limits, avoiding potential truncation issues on 64-bit Windows. + + Needs review. + source: + + +* cl/b4-cover-change-id (2026-07-10) 1 commit + (merged to 'next' on 2026-07-13 at 15c7ad9a3f) + + b4: include change-id in cover template + + The in-tree 'b4' cover letter template has been updated to include the + 'change-id' trailer, ensuring that sent tags generated by 'b4' contain + the required tracking information for subsequent runs. + + Will merge to 'master'. + source: <20260710-add-change-id-to-b4-template-v1-1-1bd37a25064e@black-desk.cn> + + +* ps/odb-stream-double-close-fix (2026-07-10) 1 commit + (merged to 'next' on 2026-07-13 at dd2c5795b7) + + object-file: fix closing object stream twice + + The stream-based object signature verification path has been + corrected to avoid double-closing the stream on read errors. + + Will merge to 'master'. + source: <20260710-pks-odb-stream-double-close-v1-1-d5fa233a37c7@pks.im> + + +* pz/fetch-submodule-errors-config (2026-07-14) 4 commits + - fixup! fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal + - fixup! fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal + - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal + - submodule: fix premature failure in recursive submodule fetch + + The 'git fetch' command has been updated to allow configuring how + submodule fetch errors are handled. A new configuration variable + 'fetch.submoduleErrors' and a corresponding '--submodule-errors' + command-line option have been introduced, allowing users to make + submodule fetch errors non-fatal (warn instead of fail). + Additionally, a premature failure during recursive submodule fetches + has been fixed by deferring the error until the OID-based retry phase + also fails. + + Needs review. + cf. + source: <20260714132959.3368867-1-paulius.zaleckas@gmail.com> + + +* gr/add-e-use-apply-api (2026-07-10) 1 commit + - builtin/add.c: replace run_command() with direct apply_all_patches() call + + The application of the edited patch in 'git add -e' has been + refactored to use the internal apply API directly, avoiding the need + to spawn a 'git apply' subprocess. + + Needs review. + source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com> + + +* fz/rebase-autosquash-empty (2026-07-11) 1 commit + . sequencer: honor --empty when a fixup!/squash! empties its target + + A commit that is emptied by melding a 'fixup!' or 'squash!' commit + during 'git rebase --autosquash' is now handled according to the + '--empty' option, allowing it to be dropped, kept, or to halt the + rebase. + + Expecting a reroll. + cf. + source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com> + + * dm/submodule-update-i-shorthand (2026-07-07) 1 commit - submodule--helper: accept '-i' shorthand for update --init @@ -205,7 +378,8 @@ Release tarballs are available at: 'git submodule update' command until it was broken in a modernization of the option-parsing code, has been restored. - Needs review. + Will merge to 'next'. + cf. source: <20260708-submodule-init-v1-1-719456077262@atmark-techno.com> @@ -296,7 +470,7 @@ Release tarballs are available at: source: <20260513070803.163546-1-grawity@nullroute.lt> -* ps/odb-pluggable-housekeeping (2026-07-07) 11 commits +* ps/odb-pluggable-housekeeping (2026-07-12) 12 commits - odb: make optimizations pluggable - builtin/gc: fix signedness issues in ODB-related functionality - builtin/gc: refactor ODB optimizations to operate on "files" source @@ -308,17 +482,18 @@ Release tarballs are available at: - builtin/gc: extract object database optimizations into separate function - builtin/gc: move worktree and rerere tasks before object optimizations - odb: run "pre-auto-gc" hook for all maintenance tasks + - t7900: simplify how we check for maintenance tasks Object database housekeeping in 'git gc' and 'git maintenance' has - been refactored to be pluggable. The files-backend specific logic, + been refactored to be pluggable. The files-backend specific logic, including incremental and geometric repacking as well as object pruning, has been moved out of the command implementation and into the files object database source, enabling future alternative object database backends to implement their own housekeeping services. - Expecting a reroll. - cf. - source: <20260707-b4-pks-odb-optimize-v1-0-aae607667be4@pks.im> + Needs review. + cf. + source: <20260713-b4-pks-odb-optimize-v2-0-9c2c3ee94b38@pks.im> * tc/bundle-uri-empty-fix (2026-07-08) 2 commits @@ -326,11 +501,11 @@ Release tarballs are available at: + bundle-uri: stop sending invalid bundle configuration + bundle-uri: drain remaining response on invalid bundle-uri lines - The client-side parser of server-advertised bundle-URI list has been - updated to drain the remaining response in order to avoid protocol - desynchronization when the server sends a misconfigured list. Also, - the server-side has been taught to omit empty configuration values - instead of sending invalid key-value lines. + The client-side parser of the server-advertised bundle-URI list has + been updated to drain the remaining response in order to avoid + protocol desynchronization when the server sends a misconfigured list. + Also, the server-side has been taught to omit empty configuration + values instead of sending invalid key-value lines. Will merge to 'master'. cf. @@ -374,27 +549,29 @@ Release tarballs are available at: source: -* ps/odb-for-each-object-filter (2026-07-10) 9 commits +* ps/odb-for-each-object-filter (2026-07-13) 10 commits - builtin/cat-file: filter objects via object database - odb: introduce object filters to `odb_for_each_object()` - pack-bitmap: introduce function to open bitmap for a single source - pack-bitmap: drop `_1` suffix from functions that open bitmaps - pack-bitmap: iterate object sources when opening bitmaps - pack-bitmap: allow aborting iteration of bitmapped objects + - pack-objects: drop unused return value from add_object_entry() - pack-bitmap: mark object filter as `const` - odb/source-packed: improve lookup when enumerating objects - Merge branch 'ps/odb-drop-whence' into ps/odb-for-each-object-filter (this branch uses ps/odb-drop-whence.) - The object database enumeration interface 'odb_for_each_object()' has - been taught to accept object filters, allowing the underlying backends - to optimize the traversal by using reachability bitmaps when - available. 'git cat-file --batch-all-objects' has been updated to - use this generic interface, simplifying its code and avoiding direct - access to ODB backend internals. + The object database enumeration interface 'odb_for_each_object()' + has been taught to accept object filters, allowing the underlying + backends to optimize the traversal by using reachability bitmaps + when available. 'git cat-file --batch-all-objects' has been updated + to use this generic interface, simplifying its code and avoiding + direct access to ODB backend internals. - Needs review. - source: <20260710-pks-odb-for-each-object-filter-v2-0-3710a9cc165a@pks.im> + Will merge to 'next'? + cf. + source: <20260713-pks-odb-for-each-object-filter-v3-0-b3c65c641073@pks.im> * ps/refs-wo-the-repository (2026-07-09) 8 commits @@ -410,7 +587,7 @@ Release tarballs are available at: The ref subsystem and the worktree API have been refactored to pass a repository pointer down the call chain, allowing them to drop - references to the global 'the_repository' variable. As part of this, + references to the global 'the_repository' variable. As part of this, the handling of the 'core.packedRefsTimeout' configuration has been moved into the per-repository ref store structure. @@ -426,7 +603,7 @@ Release tarballs are available at: The 'topo_levels' slab was propagated only to the topmost layer of a split commit-graph chain, causing topological levels for commits in - base layers to be recomputed during incremental writes. This has been + base layers to be recomputed during incremental writes. This has been corrected. Will merge to 'master'. @@ -574,7 +751,8 @@ Release tarballs are available at: modernized to use 'test_path_is_file' and 'test_path_is_missing' instead of raw 'test -f' and '! test -f' calls. - Needs review. + Will merge to 'next'? + cf. source: <20260711160447.99708-1-marcelomlage@usp.br> @@ -593,8 +771,8 @@ Release tarballs are available at: Various test scripts have been updated to clean up large temporary files and repositories, reducing peak disk usage during testing. Also, expensive tests have been disabled on platforms that lack - sufficient resources (like 32-bit platforms and Windows CI - runners), and the long test suite has been enabled in GitLab CI. + sufficient resources (like 32-bit platforms and Windows CI runners), + and the long test suite has been enabled in GitLab CI. Will merge to 'master'. cf. <20260707043026.GB677056@coredump.intra.peff.net> @@ -624,7 +802,7 @@ Release tarballs are available at: The build system has been updated to support building universal macOS binaries when 'Rust' is enabled, by compiling separate static archives for each target triple listed in 'RUST_TARGETS' and combining them - using the macOS 'lipo' tool. The 'git-credential-osxkeychain' helper + using the macOS 'lipo' tool. The 'git-credential-osxkeychain' helper has been updated to link against '$(RUST_LIB)' when 'Rust' is enabled. Will merge to 'master'. @@ -640,7 +818,8 @@ Release tarballs are available at: configuration files has been taught to use the location of the worktree in its condition. - Needs review. + Will merge to 'next'? + cf. source: <20260710-includeif-worktree-v8-0-04686d8a616c@black-desk.cn> @@ -673,20 +852,6 @@ Release tarballs are available at: source: <20260630020220.1559190-1-bblima@usp.br> -* jk/format-patch-leakfix (2026-06-29) 2 commits - (merged to 'next' on 2026-07-06 at 35aff0d609) - + format-patch: fix leak of rev_info in prepare_bases() - + t: move LSan errors from stdout to stderr - - A memory leak in the '--base' handling of 'git format-patch' has been - plugged, and the leak-reporting of the test suite when running under a - TAP harness has been improved. - - Will merge to 'master'. - cf. - source: <20260630063944.GA3733670@coredump.intra.peff.net> - - * ps/setup-split-discovery-and-setup (2026-07-07) 16 commits (merged to 'next' on 2026-07-10 at 1691a942ab) + setup: mark `set_git_work_tree()` as file-local @@ -707,7 +872,7 @@ Release tarballs are available at: + Merge branch 'ps/refs-onbranch-fixes' into ps/setup-split-discovery-and-setup The repository discovery and repository configuration phases, which - were previously intertwined in 'setup.c', have been split. Repository + were previously intertwined in 'setup.c', have been split. Repository discovery has been updated to populate a 'struct repo_discovery' without modifying the repository state, which is then taken by repository configuration to initialize the repository, paving the way @@ -718,14 +883,9 @@ Release tarballs are available at: source: <20260707-pks-setup-split-discovery-and-setup-v2-0-aab372cd227c@pks.im> -* pw/rebase-drop-notes-with-commit (2026-06-30) 15 commits - - amend! sequencer: simplify pick_one_commit() - - amend! sequencer: remove unnecessary "or" in pick_one_commit() - - fixup! sequencer: never reschedule on failed commit - - fixup! sequencer: be more careful with external merge +* pw/rebase-drop-notes-with-commit (2026-07-13) 10 commits - sequencer: do not record dropped commits as rewritten - sequencer: use an enum to represent result of picking a commit - - sequencer: return early from pick_one_commit() on success - sequencer: simplify pick_one_commit() - sequencer: remove unnecessary condition in pick_one_commit() - sequencer: simplify handing of fixup with conflicts @@ -735,14 +895,14 @@ Release tarballs are available at: - sequencer: move definition of is_final_fixup() - t3400: restore coverage for note copying with apply backend - The rebase post-rewrite notes-copying logic has been corrected. When a - commit is dropped during rebase (e.g., because its changes are already - upstream), it is no longer recorded as rewritten, preventing its notes - from being copied to an unrelated commit. + The rebase post-rewrite notes-copying logic has been corrected. When + a commit is dropped during rebase (e.g., because its changes are + already upstream), it is no longer recorded as rewritten, preventing + its notes from being copied to an unrelated commit. - Expecting a reroll. - cf. - source: + Needs review. + cf. + source: * jk/bloom-leak-fixes (2026-06-30) 3 commits @@ -811,7 +971,7 @@ Release tarballs are available at: - repack: unconditionally exclude non-kept packs 'git repack' has been taught to accept '--geometric' and '--cruft' - together. When both are given, non-cruft packs are rolled up by the + together. When both are given, non-cruft packs are rolled up by the geometric repack as usual, while a separate cruft pack is written to collect unreachable objects. @@ -820,31 +980,6 @@ Release tarballs are available at: source: -* jk/reftable-leakfix (2026-06-28) 1 commit - (merged to 'next' on 2026-07-06 at 55ce81f2d5) - + reftable: fix unlikely leak on API error - - A memory leak in the 'reftable_writer_new()' initialization function - has been fixed by delaying the allocation of 'struct reftable_writer' - until after input options are validated. - - Will merge to 'master'. - cf. - source: <20260628090314.GA661068@coredump.intra.peff.net> - - -* ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit - (merged to 'next' on 2026-07-06 at b099249efd) - + gpg-interface: fix strip_cr_before_lf to only remove CR before LF - - The GPG and SSH signature parsing code has been corrected to strip - carriage return characters only when they immediately precede line - feeds, instead of unconditionally stripping all carriage returns. - - Will merge to 'master'. - source: <20260624093618.17456-1-antonio.destefani08@gmail.com> - - * jt/receive-pack-use-odb-transactions (2026-07-10) 11 commits - builtin/receive-pack: stage incoming objects via ODB transactions - builtin/receive-pack: drop redundant tmpdir env @@ -862,7 +997,8 @@ Release tarballs are available at: interfaces instead of directly managing 'tmp_objdir' for staging incoming objects, bringing it closer to being ODB backend agnostic. - Needs review. + Will merge to 'next'. + cf. source: <20260710163722.2962278-1-jltobler@gmail.com> @@ -877,7 +1013,7 @@ Release tarballs are available at: + Merge branch 'ps/odb-source-packed' into ps/odb-drop-whence (this branch is used by ps/odb-for-each-object-filter.) - The 'whence' field in 'struct object_info' has been removed. The + The 'whence' field in 'struct object_info' has been removed. The backend-specific object information retrieval has been refactored into an opt-in 'struct object_info_source' structure. @@ -910,20 +1046,6 @@ Release tarballs are available at: source: <20260703-pks-reftable-hardening-v3-0-b87c555b9920@pks.im> -* hn/branch-push-slip-advice (2026-06-27) 2 commits - (merged to 'next' on 2026-07-06 at acdff65ac5) - + push: suggest for a slash slip - + branch: suggest / on upstream slip - - When 'git push origin/main' or 'git branch origin main' is run, the - command is now recognized as a potential typo, and advice has been - added to offer a typo fix. - - Will merge to 'master'. - cf. - source: - - * jc/history-message-prep-fix (2026-06-29) 1 commit (merged to 'next' on 2026-07-06 at 00534a21ce) + history: streamline message preparation and plug file stream leak @@ -936,7 +1058,8 @@ Release tarballs are available at: source: -* ty/migrate-excludes-file (2026-07-12) 9 commits +* ty/migrate-excludes-file (2026-07-13) 10 commits + - repository: adjust the comment of config_values_private_ - environment: move object_creation_mode into repo_config_values - environment: move autorebase into repo_config_values - environment: move push_default into repo_config_values @@ -951,9 +1074,8 @@ Release tarballs are available at: (including 'editor_program', 'pager_program', 'askpass_program', and 'push_default') have been migrated into the per-repository structure. - Expecting a reroll. - cf. <2a39cee9-1082-48aa-b42e-e12c34fa0e29@malon.dev> - source: <20260712111734.1073514-1-cat@malon.dev> + Needs review. + source: <20260714032525.1611141-1-cat@malon.dev> * dk/meson-enable-use-nsec-build (2026-06-20) 1 commit @@ -963,12 +1085,11 @@ Release tarballs are available at: timestamp resolution, has been wired up to the Meson build system. Will discard. - cf. + cf. <45F2C180-1DE1-4371-869B-BF605B64E01A@gmail.com> source: -* ps/libgit-in-subdir (2026-07-10) 4 commits - - fixup! Move libgit.a sources into separate "lib/" directory +* ps/libgit-in-subdir (2026-07-12) 3 commits - Move libgit.a sources into separate "lib/" directory - t/helper: prepare "test-example-tap.c" for introduction of "lib/" - Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir @@ -977,25 +1098,9 @@ Release tarballs are available at: directory to clean up the top-level directory and clearly separate library code. - Waiting for response(s) to review comment(s). - cf. <0c94331b-7eb1-4116-afa5-811082ad5854@ramsayjones.plus.com> - source: <20260701-pks-libgit-in-subdir-v3-0-5e4860056094@pks.im> - - -* ps/odb-generalize-prepare (2026-06-22) 3 commits - (merged to 'next' on 2026-07-06 at 6132517517) - + odb: introduce `odb_prepare()` - + odb/source: generalize `reprepare()` callback - + Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare - - The 'reprepare()' callback for object database sources has been - generalized into a 'prepare()' callback with an optional flush cache - flag, and a new 'odb_prepare()' wrapper has been introduced to allow - pre-opening object database sources. - - Will merge to 'master'. - cf. <87ik704f1j.fsf@emacs.iotcl.com> - source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im> + Needs review. + cf. + source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im> * ty/migrate-ignorecase (2026-06-19) 2 commits @@ -1040,7 +1145,8 @@ Release tarballs are available at: subcommand to fold a range of commits into a single commit, with any descendants replayed on top. - Needs review. + Expecting a reroll. + cf. source: @@ -1080,7 +1186,7 @@ Release tarballs are available at: - t5334: expose shared `nth_line()` helper The 'git multi-pack-index write --incremental' command has been - corrected to properly honor the '--base' option. Previously, the + corrected to properly honor the '--base' option. Previously, the custom base was ignored by the normal write path; packs from layers above the selected base were incorrectly skipped by the pack exclusion logic, and reachability closure for bitmaps was broken. @@ -1100,7 +1206,7 @@ Release tarballs are available at: The test suite has been updated to use the 'test_grep' helper instead of bare 'grep' for test assertions, allowing file contents to be - printed on failure for easier debugging. A new 'greplint' linter has + printed on failure for easier debugging. A new 'greplint' linter has been introduced to detect and prevent new bare 'grep' assertions from being added to the test suite. @@ -1109,22 +1215,6 @@ Release tarballs are available at: source: -* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits - (merged to 'next' on 2026-07-06 at aa748c4564) - + prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion - + prio-queue: rename .nr to .nr_ and add accessor helpers - (this branch is used by kk/prio-queue-cascade-sift.) - - The lazy priority queue optimization pattern (deferring actual removal - in 'prio_queue_get()' to allow get+put fusion) has been folded - directly into 'prio_queue' itself, speeding up commit traversal - workflows and simplifying callers. - - Will merge to 'master'. - cf. - source: - - * td/ref-filter-memoize-contains (2026-06-12) 3 commits - commit-reach: die on contains walk errors - ref-filter: memoize --contains with generations @@ -1150,12 +1240,13 @@ Release tarballs are available at: drop merge commits and linearize the replayed history, mimicking 'git rebase --no-rebase-merges'. - Will merge to 'master'. + Will merge to 'master'? cf. + cf. source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com> -* ps/cat-file-remote-object-info (2026-07-10) 13 commits +* ps/cat-file-remote-object-info (2026-07-14) 13 commits - cat-file: make remote-object-info allow-list dynamic - cat-file: validate remote atoms with an allow-list - cat-file: add remote-object-info to batch-command @@ -1173,13 +1264,13 @@ Release tarballs are available at: The 'remote-object-info' command has been added to 'git cat-file --batch-command', allowing clients to request object metadata (currently size) from a remote server via protocol v2 without - downloading the entire object. Format placeholders are dynamically + downloading the entire object. Format placeholders are dynamically filtered on the client based on server-advertised capabilities, returning empty strings for inapplicable or unsupported fields. - Will merge to 'next'? - cf. - source: <20260710-ps-eric-work-rebase-v16-0-66e07b58a8fe@gmail.com> + Needs review. + cf. + source: <20260714-ps-eric-work-rebase-v17-0-afabfc83260e@gmail.com> * mm/diff-process-hunks (2026-06-14) 6 commits @@ -1192,7 +1283,7 @@ Release tarballs are available at: A new 'diff..process' configuration has been introduced to allow a long-running external process to act as a hunk provider, - allowing external tools to control which lines Git considers changed + enabling external tools to control which lines Git considers changed while leaving all output formatting (word diff, color, blame, etc.) to Git's standard pipeline. @@ -1278,7 +1369,7 @@ Release tarballs are available at: source: -* hn/branch-delete-merged (2026-06-24) 7 commits +* hn/branch-delete-merged (2026-07-14) 7 commits - branch: add --dry-run for --delete-merged - branch: add branch..deleteMerged opt-out - branch: add --delete-merged @@ -1291,9 +1382,8 @@ Release tarballs are available at: to remove local branches that are already merged to their tracked remote-tracking branches. - Expecting a reroll. - cf. - source: + Needs review. + source: * hn/checkout-track-fetch (2026-06-24) 2 commits @@ -1304,11 +1394,14 @@ Release tarballs are available at: fetch the branch from the remote the new branch will work with. Waiting for response(s) to review comment(s). - cf. + cf. source: -* ps/shift-root-in-graph (2026-07-11) 4 commits +* ps/shift-root-in-graph (2026-07-14) 7 commits + - graph: add --[no-]graph-indent and log.graphIndent + - graph: move config reading into graph_read_config() + - graph: wrap cascading commits after 4 columns - graph: indent visual root in graph - graph: add a 2 commit buffer for lookahead - revision: add next_commit_to_show() @@ -1320,7 +1413,7 @@ Release tarballs are available at: falsely related to unrelated commits rendered immediately above them. Needs review. - source: <20260711-ps-pre-commit-indent-v9-0-eab6676e82f7@gmail.com> + source: <20260714-ps-pre-commit-indent-v12-0-d50938e006df@gmail.com> * kk/merge-base-exhaustion (2026-07-11) 11 commits @@ -1351,7 +1444,6 @@ Release tarballs are available at: . prio-queue: use cascade for unfused gets . prio-queue: extract sift_up() from prio_queue_put() . Merge branch 'kk/prio-queue-get-put-fusion' into kk/prio-queue-cascade-sift - (this branch uses kk/prio-queue-get-put-fusion.) 'prio_queue_get()' has been optimized by using a cascade-down approach (promoting the smaller child at each level and sifting up the last