From: Junio C Hamano Date: Thu, 16 Jul 2026 22:22:24 +0000 (-0700) Subject: What's cooking (2026/07 #07) X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=23297dce5593a9d0530dbccd9a641911f0ab61b2;p=thirdparty%2Fgit.git What's cooking (2026/07 #07) --- diff --git a/whats-cooking.txt b/whats-cooking.txt index bf6eeb2dad..a7c0f03d88 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 (Jul 2026, #06) -X-master-at: 55526a18268bbc1ddaf8a6b7850c33d984eac9e9 -X-next-at: 8e2bf96aa5bacd9f277397638fd9823d0be25e88 +Subject: What's cooking in git.git (Jul 2026, #07) +X-master-at: 44de1520f08d1dfebc3ab2d9f644208eaa5ac925 +X-next-at: 700c83d4f35453396241ab93a8de5d321fb3fa83 Bcc: lwn@lwn.net, gitster@pobox.com -What's cooking in git.git (Jul 2026, #06) +What's cooking in git.git (Jul 2026, #07) ----------------------------------------- Here are the topics that have been cooking in my tree. Commits @@ -51,171 +51,319 @@ Release tarballs are available at: -------------------------------------------------- [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 +* 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 - 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. + A write file stream resource leak has been fixed as part of a code + cleanup. Graduated to 'master'. - source: <20260624093618.17456-1-antonio.destefani08@gmail.com> + cf. + source: -* 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 +* jk/bloom-leak-fixes (2026-06-30) 3 commits + (merged to 'next' on 2026-07-08 at 3b9a1cda3f) + + line-log: drop extra copy of range with bloom filters + + revision: avoid leaking bloom keyvecs with multiple traversals + + bloom: make bloom-filter slab initialization idempotent - 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. + Various memory leaks in the Bloom-filter code paths that are exposed + when running tests with the 'GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1' + environment variable have been plugged. Graduated to 'master'. - cf. - source: + cf. + cf. + source: <20260701063538.GA2579765@coredump.intra.peff.net> -* 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 +* mg/meson-hook-list-buildfix (2026-07-01) 1 commit + (merged to 'next' on 2026-07-08 at 10763a0ebc) + + meson: restore hook-list.h to builtin_sources - 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. + A racy build failure under Meson has been corrected by ensuring that + the generated header file 'hook-list.h' is built before compiling + files in 'builtin_sources' that depend on it. Graduated to 'master'. - cf. - source: <20260630063944.GA3733670@coredump.intra.peff.net> + cf. + source: <20260701193928.358825-1-floppym@gentoo.org> -* jk/reftable-leakfix (2026-06-28) 1 commit - (merged to 'next' on 2026-07-06 at 55ce81f2d5) - + reftable: fix unlikely leak on API error +* ps/history-drop (2026-07-01) 11 commits + (merged to 'next' on 2026-07-08 at 6fb84708a4) + + builtin/history: implement "drop" subcommand + + builtin/history: split handling of ref updates into two phases + + replay: expose `replay_result_queue_update()` + + reset: stop assuming that the caller passes in a clean index + + reset: allow the caller to specify the current HEAD object + + reset: introduce ability to skip updating HEAD + + reset: introduce dry-run mode + + reset: modernize flags passed to `reset_working_tree()` + + reset: rename `reset_head()` + + reset: drop `USE_THE_REPOSITORY_VARIABLE` + + read-cache: split out function to drop unmerged entries to stage 0 - 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. + The experimental 'git history' command has been taught a new 'drop' + subcommand to remove a commit, with its descendants replayed onto its + parent. Graduated to 'master'. - cf. - source: <20260628090314.GA661068@coredump.intra.peff.net> + cf. + cf. + source: <20260701-b4-pks-history-drop-v8-0-19b5cdf1facd@pks.im> -* 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.) +* ps/odb-drop-whence (2026-07-02) 7 commits + (merged to 'next' on 2026-07-08 at f43ee51cc3) + + odb: document object info fields + + odb: drop `whence` field from object info + + treewide: convert users of `whence` to the new source field + + odb: add `source` field to struct object_info_source + + odb: make backend-specific fields optional + + packfile: thread odb_source_packed through packed_object_info() + + 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 + backend-specific object information retrieval has been refactored into + an opt-in 'struct object_info_source' structure. + + Graduated to 'master'. + cf. + source: <20260702-b4-pks-odb-drop-whence-v2-0-b0af7468ad95@pks.im> + + +* ps/refs-writing-subcommands (2026-07-06) 5 commits + (merged to 'next' on 2026-07-08 at f001147283) + + builtin/refs: add "rename" subcommand + + builtin/refs: add "create" subcommand + + builtin/refs: add "update" subcommand + + builtin/refs: add "delete" subcommand + + builtin/refs: drop `the_repository` + (this branch is used by ps/refs-wo-the-repository.) - 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. + The 'git refs' toolbox has been extended with new 'create', 'delete', + 'update', and 'rename' subcommands to create, delete, update, and + rename references, respectively. Graduated to 'master'. - cf. - source: + source: <20260706-pks-refs-writing-subcommands-v4-0-d51f6ce7f830@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 +* rs/blame-abbrev-marks (2026-07-06) 1 commit + (merged to 'next' on 2026-07-08 at e4962bd3d5) + + blame: reserve mark column only if necessary - 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. + The alignment of commit object name abbreviations in 'git blame' + output has been optimized to reserve a column for marks (caret, + question mark, or asterisk) only when such marks are actually shown. Graduated to 'master'. - cf. <87ik704f1j.fsf@emacs.iotcl.com> - source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im> + cf. + source: <92991b5e-0667-4315-89d5-1514a5499297@web.de> -------------------------------------------------- [New Topics] -* 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 - - 'git send-pack' has been taught to refrain from sending 'REF_DELTA' - encoded packfiles when the other side asks it to. +* js/coverity-unchecked-returns-fix (2026-07-14) 11 commits + - bisect: handle dup() failure when redirecting stdout + - bisect: check get_terms return at all call sites + - bisect: check strbuf_getline_lf return when reading terms + - transport-helper: warn when export-marks file cannot be finalized + - transport-helper: check dup() return in get_exporter + - compat/pread: check initial lseek for errors + - last-modified: handle repo_parse_commit() failures + - reftable tests: check reftable_table_init_ref_iterator() return + - reftable/block: check deflateInit() return value + - config: propagate launch_editor() failure in show_editor() + - http: die on curl_easy_duphandle failure in get_active_slot + + A handful of code paths have been corrected to check return values + from functions like 'curl_easy_duphandle()', 'deflateInit()', + 'lseek()', 'dup()', and 'strbuf_getline_lf()', resolving several + Coverity warnings about unchecked returns. + + Waiting for response. + cf. + cf. + cf. + cf. + source: + + +* jk/diff-relative-cached-unmerged (2026-07-14) 1 commit + - diff: ignore unmerged paths outside prefix with --relative --cached + + 'git diff --relative' running with '--cached' has been corrected to + avoid a segfault when encountering unmerged paths outside the + prefix. Needs review. - source: + source: <20260715060523.GA517940@coredump.intra.peff.net> -* cc/doc-fast-export-synopsis-fix (2026-07-13) 1 commit - - fast-export: standardize usage string and SYNOPSIS +* jc/submodule-helper-avoid-zu (2026-07-15) 1 commit + - submodule--helper: avoid use of %zu for now - The usage string and SYNOPSIS for 'git fast-export' have been - standardized to make them consistent with each other and with other - commands. + An accidental use of '%zu' format flag in 'git submodule--helper' + has been corrected to use 'PRIuMAX' and cast the value to + 'uintmax_t', to avoid portability issues. Will merge to 'next'? - cf. - source: <20260713124153.245268-1-christian.couder@gmail.com> + cf. <87a4rrxg3r.fsf@gentoo.mail-host-address-is-not-set> + source: -* sk/t1100-modernize (2026-07-14) 2 commits - - t1100: move creation of expected output into setup test - - t1100: modernize test style +* sk/t7614-do-not-hide-git-exit-status (2026-07-15) 1 commit + (merged to 'next' on 2026-07-16 at 0d143986e7) + + t7614: avoid hiding git's exit code in a pipe - 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. + The test script 't/t7614-merge-signoff.sh' has been updated to avoid + suppressing the exit code of 'git' commands in a pipe. - Will merge to 'next'? - cf. - source: <20260714122033.61947-1-diy2903@gmail.com> + Will merge to 'master'. + cf. + source: <20260715113344.3490-1-diy2903@gmail.com> -* 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 +* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit + - trace2: tolerate failed timestamp formatting - 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. + The trace2 telemetry library has been updated to tolerate failures + from system calls like 'gettimeofday()' and datetime formatting + functions, replacing potential program crashes with blank placeholder + timestamps in the traces. - Expecting a reroll. - cf. - source: + Needs review. + source: -* rs/strbuf-avoid-redundant-reset (2026-07-14) 1 commit - - strbuf: avoid redundant reset in strbuf_getwholeline() +* mm/revision-pure-get-commit-action (2026-07-15) 1 commit + - revision: make get_commit_action() a pure predicate - 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. + The 'get_commit_action()' function has been refactored to be a pure + predicate by moving the side-effecting line-level log range folding to + 'simplify_commit()'. This ensures that evaluating a commit's action + before the walk reaches it does not prematurely mutate its tracked + line ranges, making it safer for potential lookahead evaluations. + + Needs review. + source: + + +* rs/remote-curl-simplify-push-specs (2026-07-14) 1 commit + - remote-curl: simplify passing of push specs + + The passing of push destination specifications in the 'remote-curl' + helper has been simplified by removing the explicit 'count' parameter + and relying on the NULL-termination of the array. Will merge to 'next'? - cf. - source: + cf. + cf. + source: <935883f3-3be4-4c51-9711-5208b9ef9ca1@web.de> -* 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}() +* js/wincred-fixes (2026-07-16) 2 commits + (merged to 'next' on 2026-07-16 at 8c5927f06f) + + wincred: prevent silent credential loss when storing OAuth tokens + + wincred: avoid memory corruption when erasing a credential - 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. + The wincred credential helper has been updated to avoid memory + corruption when erasing credentials and to prevent silent + credential loss when storing OAuth tokens, by correcting buffer + allocations and arguments passed to safe-CRT APIs. + + Will merge to 'master'. + source: + + +* kk/no-walk-pathspec-fix (2026-07-16) 2 commits + - revision: fix --no-walk path filtering regression + - Merge branch 'kk/streaming-walk-pqueue' into kk/no-walk-pathspec-fix + + The 'git rev-list --no-walk' command lost pathspec filtering when the + streaming walk was refactored, which has been corrected. + + Will merge to 'next'. + source: + + +* cc/fast-import-usage (2026-07-16) 7 commits + - fast-import: use struct option for usage string + - fast-import: move command state globals into 'struct fast_import_state' + - fast-import: introduce 'struct fast_import_state' + - fast-import: localize 'i' into the 'for' loops using it + - api-parse-options.adoc: document hidden and OPT_*_F option macros + - api-parse-options.adoc: document per-option flags + - parse-options: introduce OPT_HIDDEN_GROUP + + The usage string of 'git fast-import' has been updated to use the + 'parse_options' API for displaying help, and its SYNOPSIS in the + documentation has been standardized to match. Needs review. - source: <20260714175956.54601-1-l.s.r@web.de> + cf. + cf. + source: <20260716165517.433849-1-christian.couder@gmail.com> + + +* ps/copy-wo-the-repository (2026-07-16) 1 commit + - copy: drop dependency on `the_repository` + + The 'copy_file()' and 'copy_file_with_time()' functions have been + refactored to take a repository parameter, allowing the removal of the + implicit dependency on the global 'the_repository' variable in + 'copy.c'. + + Needs review. + source: <20260716-pks-copy-wo-the-repository-v2-1-8f5e32942929@pks.im> + + +* ps/refspec-wo-the-repository (2026-07-16) 3 commits + - refspec: stop depending on `the_repository` + - refspec: let callers pass in hash algorithm when parsing items + - refspec: group related structures and functions + + The dependency on the global 'the_repository' variable in the + 'refspec.c' API has been removed by passing the hash algorithm + explicitly to refspec-parsing functions and storing it in 'struct + refspec'. + + Needs review. + source: <20260716-pks-refspec-wo-the-repository-v1-0-aa40844d067f@pks.im> + + +* ps/writev (2026-07-16) 5 commits + - fast-import: use writev(3p) to send cat-blob responses + - sideband: use writev(3p) to send pktlines + - wrapper: properly handle MAX_IO_SIZE in writev(3p) + - wrapper: introduce writev(3p) wrappers + - compat/posix: introduce writev(3p) wrapper + + A compatibility wrapper for 'writev(3p)' has been reintroduced, + including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop. + Calls to 'write(3p)' in 'send_sideband()' and 'cat_blob()' have been + refactored to use 'writev(3p)' wrappers to reduce syscall overhead. + + Needs review. + cf. + cf. + source: <20260716-pks-reintroduce-writev-v1-0-ea9038c884bc@pks.im> + + +* sc/wt-status-avoid-quadratic-insertion (2026-07-16) 1 commit + - wt-status: avoid quadratic insertion for untracked paths + + The enumeration of untracked and ignored files in 'git status' has + been optimized by avoiding quadratic complexity insertion into string + lists, reducing the construction cost from O(n^2) to O(n log n). + + Needs review. + source: <20260716185045.229320-1-sahityajb@gmail.com> -------------------------------------------------- [Stalled] @@ -250,7 +398,7 @@ Release tarballs are available at: the current branch are skipped and duplicate updates are avoided to prevent failures when branch aliases are present. - Waiting for response(s) to review comment(s) for too long, stalled. + Waiting for response for too long, stalled. cf. source: @@ -275,13 +423,99 @@ Release tarballs are available at: period, avoiding failures when multiple processes attempt to update the configuration simultaneously. - Waiting for response(s) to review comment(s) for too long, stalled. + Waiting for response for too long, stalled. cf. source: <20260517132111.1014901-1-joerg@thalheim.io> -------------------------------------------------- [Cooking] +* 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 + + 'git send-pack' has been taught to refrain from sending 'REF_DELTA' + encoded packfiles when the other side asks it to. + + Needs review. + source: + + +* cc/doc-fast-export-synopsis-fix (2026-07-13) 1 commit + (merged to 'next' on 2026-07-16 at b1dbc0cb3f) + + fast-export: standardize usage string and SYNOPSIS + + 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 'master'. + cf. + cf. + source: <20260713124153.245268-1-christian.couder@gmail.com> + + +* sk/t1100-modernize (2026-07-14) 2 commits + (merged to 'next' on 2026-07-16 at 621ca4ca5f) + + t1100: move creation of expected output into setup test + + t1100: modernize test style + + 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 'master'. + cf. + source: <20260714122033.61947-1-diy2903@gmail.com> + + +* 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 + + 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 + (merged to 'next' on 2026-07-16 at f258ce38ba) + + 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 afterward. + + Will merge to 'master'. + cf. + cf. <20260714214941.GB4095533@coredump.intra.peff.net> + 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. + + Waiting for response. + cf. + source: <20260714175956.54601-1-l.s.r@web.de> + + * 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` @@ -296,7 +530,7 @@ Release tarballs are available at: - 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 + 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. @@ -327,9 +561,7 @@ Release tarballs are available at: 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 +* pz/fetch-submodule-errors-config (2026-07-16) 2 commits - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal - submodule: fix premature failure in recursive submodule fetch @@ -343,8 +575,7 @@ Release tarballs are available at: also fails. Needs review. - cf. - source: <20260714132959.3368867-1-paulius.zaleckas@gmail.com> + source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com> * gr/add-e-use-apply-api (2026-07-10) 1 commit @@ -366,19 +597,20 @@ Release tarballs are available at: '--empty' option, allowing it to be dropped, kept, or to halt the rebase. - Expecting a reroll. - cf. + Waiting for response. + cf. <690b965e-5f07-4aa4-a64c-96e60a86d73b@gmail.com> 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 + (merged to 'next' on 2026-07-15 at 55ef0fb748) + + submodule--helper: accept '-i' shorthand for update --init The '-i' shorthand for the '--init' option, which was accepted by the 'git submodule update' command until it was broken in a modernization of the option-parsing code, has been restored. - Will merge to 'next'. + Will merge to 'master'. cf. source: <20260708-submodule-init-v1-1-719456077262@atmark-techno.com> @@ -491,7 +723,7 @@ Release tarballs are available at: files object database source, enabling future alternative object database backends to implement their own housekeeping services. - Needs review. + Waiting for response. cf. source: <20260713-b4-pks-odb-optimize-v2-0-9c2c3ee94b38@pks.im> @@ -549,18 +781,18 @@ Release tarballs are available at: source: -* 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.) +* ps/odb-for-each-object-filter (2026-07-14) 10 commits + (merged to 'next' on 2026-07-16 at 8f30e80d33) + + 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 The object database enumeration interface 'odb_for_each_object()' has been taught to accept object filters, allowing the underlying @@ -569,21 +801,19 @@ Release tarballs are available at: to use this generic interface, simplifying its code and avoiding direct access to ODB backend internals. - Will merge to 'next'? - cf. - source: <20260713-pks-odb-for-each-object-filter-v3-0-b3c65c641073@pks.im> + Will merge to 'master'. + cf. <874ii0h2uf.fsf@emacs.iotcl.com> + source: <20260715-pks-odb-for-each-object-filter-v4-0-616d7adf7fb7@pks.im> -* ps/refs-wo-the-repository (2026-07-09) 8 commits +* ps/refs-wo-the-repository (2026-07-15) 7 commits - refs: remove remaining uses of `the_repository` - worktree: pass repository to public functions - worktree: pass repository to file-local functions - worktree: refactor code to use available repositories - refs/files: drop `USE_THE_REPOSITORY_VARIABLE` - - refs/packed: drop `USE_THE_REPOSITORY_VARIABLE` - refs/packed: de-globalize handling of "core.packedRefsTimeout" - Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository - (this branch uses ps/refs-writing-subcommands.) The ref subsystem and the worktree API have been refactored to pass a repository pointer down the call chain, allowing them to drop @@ -591,9 +821,9 @@ Release tarballs are available at: the handling of the 'core.packedRefsTimeout' configuration has been moved into the per-repository ref store structure. - Expecting a reroll. - cf. - source: <20260709-pks-refs-wo-the-repository-v1-0-1ad6f27529c9@pks.im> + Will merge to 'next'? + cf. + source: <20260716-pks-refs-wo-the-repository-v3-0-db0a804e0224@pks.im> * kk/commit-graph-topo-levels-fix (2026-07-09) 2 commits @@ -652,19 +882,6 @@ Release tarballs are available at: source: -* rs/blame-abbrev-marks (2026-07-06) 1 commit - (merged to 'next' on 2026-07-08 at e4962bd3d5) - + blame: reserve mark column only if necessary - - The alignment of commit object name abbreviations in 'git blame' - output has been optimized to reserve a column for marks (caret, - question mark, or asterisk) only when such marks are actually shown. - - Will merge to 'master'. - cf. - source: <92991b5e-0667-4315-89d5-1514a5499297@web.de> - - * jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit - t0213: skip ancestry tests under user-mode emulation @@ -694,19 +911,6 @@ Release tarballs are available at: source: <20260708001557.3581080-1-sandals@crustytoothpaste.net> -* mg/meson-hook-list-buildfix (2026-07-01) 1 commit - (merged to 'next' on 2026-07-08 at 10763a0ebc) - + meson: restore hook-list.h to builtin_sources - - A racy build failure under Meson has been corrected by ensuring that - the generated header file 'hook-list.h' is built before compiling - files in 'builtin_sources' that depend on it. - - Will merge to 'master'. - cf. - source: <20260701193928.358825-1-floppym@gentoo.org> - - * zy/apply-abandoned-header-fix (2026-07-01) 1 commit - apply: avoid leaking abandoned git-header state @@ -744,14 +948,15 @@ Release tarballs are available at: * ml/t9811-replace-test-f (2026-07-11) 2 commits - - t9811: replace 'test -f' and '! test -f' with 'test_path_*' - - t9811: break long && chains into multiple lines + (merged to 'next' on 2026-07-15 at ffb7fcad15) + + t9811: replace 'test -f' and '! test -f' with 'test_path_*' + + t9811: break long && chains into multiple lines The test script 't/t9811-git-p4-label-import.sh' has been modernized to use 'test_path_is_file' and 'test_path_is_missing' instead of raw 'test -f' and '! test -f' calls. - Will merge to 'next'? + Will merge to 'master'. cf. source: <20260711160447.99708-1-marcelomlage@usp.br> @@ -811,14 +1016,15 @@ Release tarballs are available at: * cl/conditional-config-on-worktree-path (2026-07-09) 2 commits - - config: add "worktree" and "worktree/i" includeIf conditions - - config: refactor include_by_gitdir() into include_by_path() + (merged to 'next' on 2026-07-15 at 86ca33c437) + + 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 been taught to use the location of the worktree in its condition. - Will merge to 'next'? + Will merge to 'master'. cf. source: <20260710-includeif-worktree-v8-0-04686d8a616c@black-desk.cn> @@ -847,7 +1053,7 @@ Release tarballs are available at: 'test_path_is_missing' helper functions instead of raw 'test -[fde]' commands. - Waiting for response(s) to review comment(s). + Waiting for response. cf. source: <20260630020220.1559190-1-bblima@usp.br> @@ -883,16 +1089,15 @@ 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-07-13) 10 commits +* pw/rebase-drop-notes-with-commit (2026-07-15) 9 commits - sequencer: do not record dropped commits as rewritten - sequencer: use an enum to represent result of picking a commit - sequencer: simplify pick_one_commit() - sequencer: remove unnecessary condition in pick_one_commit() - - sequencer: simplify handing of fixup with conflicts + - sequencer: simplify handling of fixup with conflicts - sequencer: remove unnecessary "or" in pick_one_commit() - sequencer: never reschedule on failed commit - sequencer: be more careful with external merge - - 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 @@ -901,24 +1106,7 @@ Release tarballs are available at: its notes from being copied to an unrelated commit. Needs review. - cf. - source: - - -* jk/bloom-leak-fixes (2026-06-30) 3 commits - (merged to 'next' on 2026-07-08 at 3b9a1cda3f) - + line-log: drop extra copy of range with bloom filters - + revision: avoid leaking bloom keyvecs with multiple traversals - + bloom: make bloom-filter slab initialization idempotent - - Various memory leaks in the Bloom-filter code paths that are exposed - when running tests with the 'GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1' - environment variable have been plugged. - - Will merge to 'master'. - cf. - cf. - source: <20260701063538.GA2579765@coredump.intra.peff.net> + source: * js/ci-dockerized-pid-limit (2026-07-04) 1 commit @@ -975,53 +1163,34 @@ Release tarballs are available at: geometric repack as usual, while a separate cruft pack is written to collect unreachable objects. - Waiting for response(s) to review comment(s). + Waiting for response. cf. source: * 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 - - odb/transaction: introduce ODB transaction flags - - odb/transaction: add transaction env interface - - odb/transaction: propagate commit errors - - odb/transaction: propagate begin errors - - object-file: propagate files transaction errors - - object-file: drop check for inflight transactions - - object-file: embed transaction flush logic in commit function - - object-file: rename files transaction fsync function - - object-file: rename files transaction prepare function + (merged to 'next' on 2026-07-15 at aba57e3365) + + builtin/receive-pack: stage incoming objects via ODB transactions + + builtin/receive-pack: drop redundant tmpdir env + + odb/transaction: introduce ODB transaction flags + + odb/transaction: add transaction env interface + + odb/transaction: propagate commit errors + + odb/transaction: propagate begin errors + + object-file: propagate files transaction errors + + object-file: drop check for inflight transactions + + object-file: embed transaction flush logic in commit function + + object-file: rename files transaction fsync function + + object-file: rename files transaction prepare function 'git receive-pack' has been refactored to use ODB transaction interfaces instead of directly managing 'tmp_objdir' for staging incoming objects, bringing it closer to being ODB backend agnostic. - Will merge to 'next'. + Will merge to 'master'. cf. source: <20260710163722.2962278-1-jltobler@gmail.com> -* ps/odb-drop-whence (2026-07-02) 7 commits - (merged to 'next' on 2026-07-08 at f43ee51cc3) - + odb: document object info fields - + odb: drop `whence` field from object info - + treewide: convert users of `whence` to the new source field - + odb: add `source` field to struct object_info_source - + odb: make backend-specific fields optional - + packfile: thread odb_source_packed through packed_object_info() - + 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 - backend-specific object information retrieval has been refactored into - an opt-in 'struct object_info_source' structure. - - Will merge to 'master'. - cf. - source: <20260702-b4-pks-odb-drop-whence-v2-0-b0af7468ad95@pks.im> - - * ps/reftable-hardening (2026-07-03) 12 commits (merged to 'next' on 2026-07-10 at b8f4dd0ab9) + reftable/table: fix OOB read on truncated table @@ -1046,18 +1215,6 @@ Release tarballs are available at: source: <20260703-pks-reftable-hardening-v3-0-b87c555b9920@pks.im> -* 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 - - A write file stream resource leak has been fixed as part of a code - cleanup. - - Will merge to 'master'. - cf. - source: - - * 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 @@ -1090,15 +1247,17 @@ Release tarballs are available at: * 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 + . 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 The source files for 'libgit.a' have been moved into a new 'lib/' directory to clean up the top-level directory and clearly separate library code. - Needs review. + Ejected for now, as it causes too many evil merges with other topics. + + Waiting for response. cf. source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im> @@ -1134,7 +1293,7 @@ Release tarballs are available at: source: -* hn/history-squash (2026-07-10) 5 commits +* hn/history-squash (2026-07-15) 5 commits - history: re-edit a squash with every message - sequencer: share the squash message marker helpers and flags - history: add squash subcommand to fold a range @@ -1145,26 +1304,8 @@ Release tarballs are available at: subcommand to fold a range of commits into a single commit, with any descendants replayed on top. - Expecting a reroll. - cf. - source: - - -* ps/refs-writing-subcommands (2026-07-06) 5 commits - (merged to 'next' on 2026-07-08 at f001147283) - + builtin/refs: add "rename" subcommand - + builtin/refs: add "create" subcommand - + builtin/refs: add "update" subcommand - + builtin/refs: add "delete" subcommand - + builtin/refs: drop `the_repository` - (this branch is used by ps/refs-wo-the-repository.) - - The 'git refs' toolbox has been extended with new 'create', 'delete', - 'update', and 'rename' subcommands to create, delete, update, and - rename references, respectively. - - Will merge to 'master'. - source: <20260706-pks-refs-writing-subcommands-v4-0-d51f6ce7f830@pks.im> + Needs review. + source: * wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit @@ -1225,8 +1366,8 @@ Release tarballs are available at: 'git tag --contains', significantly speeding up connectivity checks across many candidate refs with shared history. - Needs review. - cf. + Will merge to 'next'? + cf. <20260716091924.GB1212956@coredump.intra.peff.net> source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com> @@ -1246,7 +1387,7 @@ Release tarballs are available at: source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com> -* ps/cat-file-remote-object-info (2026-07-14) 13 commits +* ps/cat-file-remote-object-info (2026-07-15) 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 @@ -1268,18 +1409,21 @@ Release tarballs are available at: filtered on the client based on server-advertised capabilities, returning empty strings for inapplicable or unsupported fields. - Needs review. - cf. - source: <20260714-ps-eric-work-rebase-v17-0-afabfc83260e@gmail.com> + Expecting a reroll. + cf. + source: <20260715-ps-eric-work-rebase-v18-0-34d7adb051bb@gmail.com> -* mm/diff-process-hunks (2026-06-14) 6 commits - - blame: consult diff process for no-hunk detection - - diff: bypass diff process with --no-ext-diff and in format-patch - - diff: add long-running diff process via diff..process - - sub-process: separate process lifecycle from hashmap management - - userdiff: add diff..process config - - xdiff: support external hunks via xpparam_t +* mm/diff-process-hunks (2026-07-15) 9 commits + . line-log: consult diff process for range tracking + . diff: consult diff process for --stat counts + . blame: consult diff process for no-hunk detection + . diff: bypass diff process with --no-ext-diff and in format-patch + . diff: add long-running diff process via diff..process + . sub-process: separate process lifecycle from hashmap management + . userdiff: add diff..process config + . xdiff: support external hunks via xpparam_t + . gitattributes: document how external diff drivers relate to diff features A new 'diff..process' configuration has been introduced to allow a long-running external process to act as a hunk provider, @@ -1287,12 +1431,16 @@ Release tarballs are available at: while leaving all output formatting (word diff, color, blame, etc.) to Git's standard pipeline. - Expecting a reroll for too long, stalled. - cf. - source: + Ejected for now, as conflicts badly with mm/line-log-limited-ops. + + Expecting a reroll. + cf. + cf. + source: -* ty/migrate-trust-executable-bit (2026-06-19) 3 commits +* ty/migrate-trust-executable-bit (2026-07-16) 4 commits + - environment: move has_symlinks into repo_config_values - environment: move trust_executable_bit into repo_config_values - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c' - read-cache: remove redundant extern declarations @@ -1302,32 +1450,8 @@ Release tarballs are available at: to a specific repository instance. Needs review. - cf. - source: <20260619162105.648495-1-cat@malon.dev> - - -* ps/history-drop (2026-07-01) 11 commits - (merged to 'next' on 2026-07-08 at 6fb84708a4) - + builtin/history: implement "drop" subcommand - + builtin/history: split handling of ref updates into two phases - + replay: expose `replay_result_queue_update()` - + reset: stop assuming that the caller passes in a clean index - + reset: allow the caller to specify the current HEAD object - + reset: introduce ability to skip updating HEAD - + reset: introduce dry-run mode - + reset: modernize flags passed to `reset_working_tree()` - + reset: rename `reset_head()` - + reset: drop `USE_THE_REPOSITORY_VARIABLE` - + read-cache: split out function to drop unmerged entries to stage 0 - - The experimental 'git history' command has been taught a new 'drop' - subcommand to remove a commit, with its descendants replayed onto its - parent. - - Will merge to 'master'. - cf. - cf. - source: <20260701-b4-pks-history-drop-v8-0-19b5cdf1facd@pks.im> + cf. + source: <20260716084941.1101918-1-cat@malon.dev> * za/completion-hide-dotfiles (2026-06-20) 2 commits @@ -1338,7 +1462,7 @@ Release tarballs are available at: updated to hide dotfiles by default unless the user explicitly starts the path with a dot, matching standard shell-completion behavior. - Waiting for response(s) to review comment(s), stalled. + Waiting for response, stalled. cf. source: @@ -1364,7 +1488,7 @@ Release tarballs are available at: Documentation for 'git replay' has been updated to refer to its configuration variables. - Waiting for response(s) to review comment(s). + Waiting for response for too long, stalled. cf. <87cxwxofgv.fsf@emacs.iotcl.com> source: @@ -1393,8 +1517,7 @@ Release tarballs are available at: The 'git checkout --track=...' command has been taught to optionally fetch the branch from the remote the new branch will work with. - Waiting for response(s) to review comment(s). - cf. + Needs review. source: @@ -1412,7 +1535,8 @@ Release tarballs are available at: simplification) by indenting them, preventing them from appearing falsely related to unrelated commits rendered immediately above them. - Needs review. + Will merge to 'next'? + cf. source: <20260714-ps-pre-commit-indent-v12-0-d50938e006df@gmail.com>