diff --git a/whats-cooking.txt b/whats-cooking.txt index 310e306800..9aec41d8d7 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 (Aug 2026, #11) -X-master-at: f78ce2f7b6df702f93d40b85d6bda92a3f65da79 -X-next-at: 62bdec98f9fa1a58f2e2016932af9bea677139c9 +Subject: What's cooking in git.git (Aug 2026, #12) +X-master-at: c73e85354c275c9d409b26445089bc16940fc527 +X-next-at: 7e5102b832995d91251fb2e4744fc476a8089c99 Bcc: lwn@lwn.net, gitster@pobox.com -What's cooking in git.git (Aug 2026, #11) +What's cooking in git.git (Aug 2026, #12) ----------------------------------------- Here are the topics that have been cooking in my tree. Commits @@ -17,10 +17,10 @@ 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 19th batch of topics have now graduated to the 'master' branch. -We have 563 non-merge commits in 'master' since Git 2.55. There -are 75 non-merge commits cooking in 'next' (note that some have -been reverted), and 209 non-merge commits, including those in and +The 20th batch of topics have now graduated to the 'master' branch. +We have 567 non-merge commits in 'master' since Git 2.55. There +are 76 non-merge commits cooking in 'next' (note that some have +been reverted), and 215 non-merge commits, including those in and out of 'next', in 'seen' as of this writing. Copies of the source code to Git live in many repositories, and the @@ -54,485 +54,82 @@ Release tarballs are available at: -------------------------------------------------- [Graduated to 'master'] -* cc/fast-import-usage (2026-08-11) 12 commits - (merged to 'next' on 2026-08-15 at a0434930b4) - + fast-import: remove useless from_stream argument - + fast-import: use parse_options() for command line options - + fast-import: use callbacks to parse some options - + 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: factor out option_*() functions - + fast-import: use int for some bool flags - + 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 +* kh/format-rev-doc-synopsis (2026-08-17) 2 commits + (merged to 'next' on 2026-08-20 at b9c47eddd0) + + doc: format-rev: use [synopsis] on code block + + doc: format-rev: quote subject placeholder before and after - 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. + The documentation for 'git format-rev' has been updated to use the + [synopsis] block definition on code blocks to properly highlight + placeholders, and a quoting inconsistency in the running text has + been fixed. Graduated to 'master'. - cf. - source: <20260811083314.2023489-1-christian.couder@gmail.com> + cf. + source: -* cc/git-shallow-file-wo-value (2026-08-11) 1 commit - (merged to 'next' on 2026-08-17 at f6a6ff92a6) - + git: avoid segfault on "git --shallow-file" without a value +* sk/object-name-use-after-free (2026-08-17) 1 commit + (merged to 'next' on 2026-08-20 at b0804dff5f) + + object-name: avoid use-after-free in get_oid_with_context_1() - The '--shallow-file' option of 'git' command requires a value, but the - code did not check the presence of a value and instead segfaulted - without one, which has been corrected. + A heap-use-after-free bug in the object name parsing code when + reporting failures with a relative path to a sparse directory has + been corrected. Graduated to 'master'. - cf. - cf. - source: <20260811121446.2080190-1-christian.couder@gmail.com> - - -* ch/chdir-notify-drop-name (2026-08-14) 1 commit - (merged to 'next' on 2026-08-18 at 973cefddd7) - + chdir-notify.h: Removed unused param 'name' - - The unused name parameter in 'struct chdir_notify_entry' has been - removed from chdir_notify_register(), chdir_notify_unregister(), and - related callback signatures across several subsystems, simplifying the - API now that trace output no longer uses it. - - Graduated to 'master'. - cf. <20260815051213.GA26013@coredump.intra.peff.net> - source: <20260814214210.1625-1-colinlewishinton@gmail.com> - - -* en/diff-l-opt-help (2026-08-13) 1 commit - (merged to 'next' on 2026-08-17 at 4b6b3295ed) - + diff: avoid misleading statement about -l option - - The help text for the '-l' option of 'git diff' has been updated. - - Graduated to 'master'. - cf. - source: - - -* en/sequencer-lose-pretty-given (2026-08-11) 1 commit - (merged to 'next' on 2026-08-17 at 82d0706aef) - + sequencer: remove unnecessary variable setting - - The setting of a now-unused member '.pretty_given' in the sequencer - machinery has been removed. - - Graduated to 'master'. - cf. - cf. - source: - - -* en/serve-promisor-remote-fix (2026-08-11) 1 commit - (merged to 'next' on 2026-08-17 at a4d7a9d1d6) - + serve: reject valueless promisor-remote capability - - A client requesting the promisor-remote capability without a value - caused a null pointer dereference, which has been corrected by - rejecting a request without an argument. - - Graduated to 'master'. - cf. - source: - - -* hn/send-email-missing-subject-error (2026-08-10) 1 commit - (merged to 'next' on 2026-08-15 at 6470901400) - + send-email: clarify missing subject error - - The error message given by 'git send-email' when a message file is - missing a 'Subject:' header has been clarified, and the error string - is now terminated with a newline so that Perl avoids appending its - internal source location data. - - Graduated to 'master'. - cf. - source: - - -* jc/complete-checkout (2026-08-13) 4 commits - (merged to 'next' on 2026-08-19 at 758fc8c411) - + completion: 'git checkout' completes untracked paths as a last resort - + completion: complete tracked paths for "git checkout" - + completion: no-op refactoring of checkout completion - + Merge branch 'jc/complete-diff-tracked-paths' into jc/complete-checkout - (this branch uses jc/complete-diff-tracked-paths.) - - 'git -C checkout fi' did not complete, which has been - corrected. - - Graduated to 'master'. - cf. - source: <20260813191234.1066662-1-gitster@pobox.com> - - -* jc/complete-diff-tracked-paths (2026-08-12) 3 commits - (merged to 'next' on 2026-08-19 at 37263f6528) - + completion: 'git diff' completes untracked paths as a last resort - + completion: complete tracked paths for 'git diff' - + completion: no-op refactoring of diff completion - (this branch is used by jc/complete-checkout.) - - 'git -C diff fi' did not complete 'file', which has been - corrected. - - Graduated to 'master'. - cf. - source: <20260812162551.2229680-1-gitster@pobox.com> - - -* js/coverity-unchecked-returns-fix (2026-08-12) 12 commits - (merged to 'next' on 2026-08-17 at 105f002870) - + 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 - + reftable: handle block-writer initialization errors - + 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. - - Graduated to 'master'. - cf. - source: - - -* js/pack-objects-delta-size-t (2026-08-13) 13 commits - (merged to 'next' on 2026-08-17 at b6778ce373) - + packfile: widen `unpack_object_header_buffer()` to `size_t` - + 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. - - Graduated to 'master'. - cf. - source: - - -* js/packfile-fast-append (2026-08-13) 1 commit - (merged to 'next' on 2026-08-18 at cc3da5a03d) - + packfile: fix perf regression with many packs - - The performance of adding numerous new packfiles has been improved - by introducing a fast path for known-new packfiles to skip an - unnecessary traversal in packfile_list_append(), avoiding a - quadratic complexity regression on load. - - Graduated to 'master'. - cf. - cf. - source: - - -* js/sequencer-release-odb-before-commit (2026-08-12) 1 commit - (merged to 'next' on 2026-08-15 at 1c83dffd7a) - + sequencer: release the ODB before spawning git commit - - The sequencer has been updated to release the object database before - spawning 'git commit'. This prevents open file handles from - blocking auto-maintenance tasks, such as repacking, on systems like - Windows where open files cannot be easily unlinked. - - Graduated to 'master'. - cf. - source: - - -* kk/merge-base-exhaustion (2026-08-11) 11 commits - (merged to 'next' on 2026-08-15 at 3f836fa1e4) - + commit-reach: remove commit-date ordering fallback - + commit-reach: move min_generation check into paint_queue_get() - + commit-reach: terminate merge-base walk when one paint side is exhausted - + commit-reach: introduce struct paint_state with per-side counters - + t6600: add clock-skew topologies and step counts for edge cases - + commit-reach: add trace2 instrumentation to paint_down_to_common() - + t6099: add side-exhaustion regression test - + t6600: add test cases for side-exhaustion edge cases - + test-lib-functions: improve diagnostic output for trace2 data assertions - + Documentation/technical: add paint-down-to-common doc - + Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion - - The merge-base computation has been optimized by stopping the walk - early when one side's exclusive commits in the queue are exhausted, - yielding significant speedups for queries with one-sided histories. - - Graduated to 'master'. - cf. - cf. - source: - - -* ps/cat-file-remote-object-info-type (2026-08-07) 11 commits - (merged to 'next' on 2026-08-15 at 3f5daf59a8) - + cat-file: unify default format - + serve: advertise type capability - + fetch-object-info: parse type from server response - + protocol-caps: add type support to object-info - + transport: drop remote object-info fields from transport struct - + fetch-object-info: die() on the remaining error path - + fetch-object-info: use dedicated struct for the results - + fetch-object-info: pass arguments directly instead of a struct - + fetch-object-info: detect malformed server responses - + t5701: use test_file_size() to get the size of a file - + Merge branch 'ps/cat-file-remote-object-info' into ps/cat-file-remote-object-info-type - - The 'remote-object-info' command for 'git cat-file --batch-command' - has been extended to support the '%(objecttype)' placeholder. - - Graduated to 'master'. - cf. <20260808074157.GA2915582@coredump.intra.peff.net> - cf. - cf. - source: <20260808-objecttype-support-v6-0-e5cdaf27a49c@gmail.com> - - -* ps/odb-streams (2026-08-05) 8 commits - (merged to 'next' on 2026-08-15 at a8fbd74d00) - + odb/streaming: unify function names to create new streams - + odb/streaming: rename `struct input_zstream_data` - + odb/streaming: rename `struct read_object_fd_data` - + odb/streaming: consolidate read and write streams - + odb/streaming: rename `struct odb_read_stream` - + odb/streaming: support streaming arbitrary object types - + odb/streaming: drop `is_finished` field - + odb/streaming: track write stream size in the structure - - The 'struct odb_read_stream' and 'struct odb_write_stream' - structures have been consolidated into a single unified 'struct - odb_stream' structure, simplifying object database streaming APIs - and enabling streaming of arbitrary object types. - - Graduated to 'master'. - cf. - source: <20260805-pks-odb-stream-unification-v2-0-b8c369564641@pks.im> - - -* ps/t7900-deflake-maintenance (2026-08-12) 2 commits - (merged to 'next' on 2026-08-17 at 7ef446fd59) - + t7900: fix flaky "maintenance.strategy" test - + t7900: adapt some tests to use a throwaway repository - - Various tests in 't7900-maintenance.sh' have been updated to use a - throwaway repository, and auto-detaching of maintenance tasks is now - disabled for these tests to fix flaky races with concurrent background - maintenance jobs. - - Graduated to 'master'. - cf. - source: <20260812-pks-t7900-fix-flaky-test-v2-0-9ea0e1ac0edd@pks.im> - - -* ss/repack-drop-filtered (2026-08-13) 6 commits - (merged to 'next' on 2026-08-18 at 23ad3f2b76) - + builtin/repack: add guards for --drop-filtered - + builtin/repack: actually drop filtered promisor blobs - + builtin/repack: enumerate promisor blobs for --drop-filtered - + repack-promisor: allow excluding objects from the rebuilt promisor pack - + list-objects-filter: add list_objects_filter__filter_oidset() - + builtin/repack: add --drop-filtered and --dry-run options - - 'git repack' has been taught '--drop-filtered' to delete local - promisor blobs exceeding a limit (currently 'blob:limit=') in partial - clones, reclaiming space. Guards prevent running during other - operations or if referenced by the index. - - Graduated to 'master'. - cf. - source: <20260813200830.84348-1-r.siddharth.shrimali@gmail.com> - - -* ss/submittingpatches-typofix (2026-08-14) 1 commit - (merged to 'next' on 2026-08-18 at b251ddc3d7) - + doc: fix typo in submitting patches - - Typofix. - - Graduated to 'master'. - cf. - source: + cf. + source: <20260817082127.81132-1-diy2903@gmail.com> -------------------------------------------------- [New Topics] -* dw/config-read-both-global (2026-08-23) 3 commits - - config: read global scope via config_sequence - - config: let sequence require a successful file - - path: use forward slashes in XDG config on Windows +* jc/die-for-incompatible-opts (2026-08-27) 1 commit + - die_for_incompatible_opts(): unbounded number of options - The git config --global read operations have been updated to respect - both $HOME/.gitconfig and $XDG_CONFIG_HOME/git/config, fixing an - inconsistency where only the former was read when both configuration - files are present. - - Waiting for response. - cf. - cf. - cf. - cf. - source: <20260823-fix-config-list-global-home-and-xdg-v2-0-b29cc63f017b@microsoft.com> - - -* vv/branch-recurse-no-start-ref (2026-08-21) 2 commits - - branch: allow recursion with no tracking name - - branch: do not track a start point with no ref - - The --recurse-submodules option in 'git branch' has been fixed to - avoid a crash when the start point is not a reference (e.g., a raw - object ID). The creation path now skips setting up tracking and - properly forwards the absent tracking name to the submodule helper. - - Needs review. - source: <20260822-vv-branch-recurse-no-start-ref-v1-0-46dc140acaa8@zitro.id> - - -* kn/reftable-optimize-reloading (2026-08-24) 4 commits - - reftable/stack: avoid reloading the stack when already locked - - reftable/stack: move list lock to `struct reftable_stack` - - reftable/stack: rename reftable_stack_new_addition() - - reftable/stack: remove `REFTABLE_STACK_NEW_ADDITION_RELOAD` - - The reftable code has been optimized to avoid an unnecessary - stat/reload of the stack when an addition already holds the - list_file lock, reducing the number of newfstatat syscalls from - linear to constant when writing refs. + The die_for_incompatible_opt[234]() family of functions has been + generalized to handle an arbitrary number of mutually exclusive + options via a variadic function. Will merge to 'next'? - cf. - cf. <20260824225202.GA190620@coredump.intra.peff.net> - source: <20260824-740-optimize-reloading-the-reftable-stack-v2-0-9c9de2eb0af7@gmail.com> + source: -* kh/format-patch-range-diff-notes (2026-08-24) 3 commits - - format-patch: learn --[no-]range-diff-notes - - revision.h: rename struct member to reflect notes role - - format-patch: simplify get_notes_arg parameters +* jc/you-still-use-that (2026-08-27) 1 commit + - you_still_use_that(): reword the instructions - The 'format-patch' command has been updated with options to - configure notes specifically for range-diff output, allowing them to - differ from the notes displayed on the patches themselves. + The instructions for deprecated commands emitted by + you_still_use_that() have been reworded to clarify that the removal + decision is final and to provide more assertive guidance on finding + a replacement. - Waiting for response. - cf. - source: + Will merge to 'next'? + source: -* jc/rerere-doc-typofix (2026-08-24) 1 commit - (merged to 'next' on 2026-08-25 at 62bdec98f9) - + rerere: technical documentation typofix - - A missing preposition in the rerere technical documentation has been - fixed. - - Will merge to 'master'. - source: - - -* ps/odb-alternates-at-creation (2026-08-25) 8 commits - - odb/source: remove the ability to write alternates - - builtin/clone: write alternates via `odb_create_on_disk()` - - odb/source: support writing alternates when creating the database - - builtin/clone: move setup of alternates for non-shared local clones - - builtin/clone: move setup of alternates for shared local clones - - builtin/clone: refactor handling of "--reference{,-if-able}" - - builtin/clone: move around `setup_reference()` - - builtin/clone: defer setup of the object database - - Merge branch 'ps/odb-eagerly-load-alternates' into ps/odb-alternates-at-creation - (this branch uses ps/odb-eagerly-load-alternates.) - - The setup of alternates has been deferred to object database - creation time during clone, which drops the unused ad-hoc alternate - writing API, simplifying the object database backend interface. +* ws/squelch-svn-migrate (2026-08-27) 2 commits + - Makefile: add NO_GIT_SVN knob to skip building/installing git-svn + - git-svn: don't print v1-layout migration noise when there's nothing to migrate Needs review. - source: <20260825-pks-odb-write-alternates-at-creation-time-v1-0-911513ba95c3@pks.im> - - -* ps/odb-pluggable-fsck (2026-08-25) 10 commits - - builtin/fsck: move loose object verification into the loose source - - builtin/fsck: move multi-pack index verification into the packed source - - builtin/fsck: move bitmap verification into the packed source - - builtin/fsck: move reverse index verification into the packed source - - builtin/fsck: move packfile verification into the packed source - - odb: provide infrastructure for pluggable fsck checks - - builtin/fsck: don't check alternates with "--no-full" - - builtin/fsck: de-globalize option handling - - builtin/fsck: merge `fsck_obj_buffer()` and `fsck_obj()` - - builtin/fsck: use `fsck_obj_buffer()` when checking loose objects - - Merge branch 'ps/odb-eagerly-load-alternates' into ps/odb-pluggable-fsck - - Merge branch 'ps/odb-pluggable-pack-generation' into ps/odb-pluggable-fsck - (this branch uses ps/odb-eagerly-load-alternates and ps/odb-pluggable-pack-generation.) - - The consistency checks for the object database (fsck) have been - decoupled from the generic builtin implementation and moved into the - backend-specific object source layers, making them pluggable for - different object storage formats. - - Needs review. - source: <20260825-pks-odb-source-fsck-v1-0-b756de0bf24f@pks.im> - - -* rs/worktree-add-basename-fixes (2026-08-25) 4 commits - - worktree add: let worktree_basename() return string copy - - worktree add: trim slashes when deriving branch name from path - - worktree add: reject separator-only path - - worktree add: don't read out of bounds in worktree_basename() - - The string extraction logic for the branch name and worktree name - from the given path in 'git worktree add' has been corrected and - simplified to avoid out-of-bounds reads and improper handling of - trailing slashes. - - Waiting for review. - cf. - cf. - source: <20260825180350.2099-1-l.s.r@web.de> - - -* en/no-amend-during-conflicts (2026-08-25) 1 commit - - commit: refuse to amend during conflict resolution - - Teach 'am', 'revert', and 'rebase' that running 'commit --amend' - makes no sense during operations that stop and return control to - the user to resolve conflicts left in the working tree, just like - 'cherry-pick' and 'merge' do. - - Waiting for response. - cf. <4688ee19-b782-456a-bed2-8cd2a4415736@gmail.com> - cf. - source: + source: <20260827234345.1037130-1-wesleys@opperschaap.net> -------------------------------------------------- [Stalled] +* ec/commit-fixup-options (2026-05-26) 2 commits + - commit: allow -c/-C for all kinds of --fixup + - commit: allow -m/-F for all kinds of --fixup + + Support for '-m', '-F', '-c', or '-C' options to supply a commit log + message from outside the editor has been added for all 'git commit + --fixup' variations. + + Waiting for response, stalled. + cf. + source: + + * ps/libgit-in-subdir (2026-07-12) 2 commits . Move libgit.a sources into separate "lib/" directory . t/helper: prepare "test-example-tap.c" for introduction of "lib/" @@ -651,6 +248,165 @@ Release tarballs are available at: -------------------------------------------------- [Cooking] +* dw/config-read-both-global (2026-08-23) 3 commits + - config: read global scope via config_sequence + - config: let sequence require a successful file + - path: use forward slashes in XDG config on Windows + + The git config --global read operations have been updated to respect + both $HOME/.gitconfig and $XDG_CONFIG_HOME/git/config, fixing an + inconsistency where only the former was read when both configuration + files are present. + + Waiting for response. + cf. + cf. + cf. + cf. + source: <20260823-fix-config-list-global-home-and-xdg-v2-0-b29cc63f017b@microsoft.com> + + +* vv/branch-recurse-no-start-ref (2026-08-21) 2 commits + - branch: allow recursion with no tracking name + - branch: do not track a start point with no ref + + The --recurse-submodules option in 'git branch' has been fixed to + avoid a crash when the start point is not a reference (e.g., a raw + object ID). The creation path now skips setting up tracking and + properly forwards the absent tracking name to the submodule helper. + + Needs review. + source: <20260822-vv-branch-recurse-no-start-ref-v1-0-46dc140acaa8@zitro.id> + + +* kn/reftable-optimize-reloading (2026-08-24) 4 commits + (merged to 'next' on 2026-08-28 at d714ed570a) + + reftable/stack: avoid reloading the stack when already locked + + reftable/stack: move list lock to `struct reftable_stack` + + reftable/stack: rename reftable_stack_new_addition() + + reftable/stack: remove `REFTABLE_STACK_NEW_ADDITION_RELOAD` + + The reftable code has been optimized to avoid an unnecessary + stat/reload of the stack when an addition already holds the + list_file lock, reducing the number of newfstatat syscalls from + linear to constant when writing refs. + + Will merge to 'master'. + cf. + cf. <20260824225202.GA190620@coredump.intra.peff.net> + source: <20260824-740-optimize-reloading-the-reftable-stack-v2-0-9c9de2eb0af7@gmail.com> + + +* kh/format-patch-range-diff-notes (2026-08-24) 3 commits + - format-patch: learn --[no-]range-diff-notes + - revision.h: rename struct member to reflect notes role + - format-patch: simplify get_notes_arg parameters + + The 'format-patch' command has been updated with options to + configure notes specifically for range-diff output, allowing them to + differ from the notes displayed on the patches themselves. + + Retracted. + cf. <9335a35f-e9c0-4e62-812c-e5855c201003@app.fastmail.com> + source: + + +* jc/rerere-doc-typofix (2026-08-24) 1 commit + (merged to 'next' on 2026-08-25 at 62bdec98f9) + + rerere: technical documentation typofix + + A missing preposition in the rerere technical documentation has been + fixed. + + Will merge to 'master'. + source: + + +* ps/odb-alternates-at-creation (2026-08-25) 8 commits + - odb/source: remove the ability to write alternates + - builtin/clone: write alternates via `odb_create_on_disk()` + - odb/source: support writing alternates when creating the database + - builtin/clone: move setup of alternates for non-shared local clones + - builtin/clone: move setup of alternates for shared local clones + - builtin/clone: refactor handling of "--reference{,-if-able}" + - builtin/clone: move around `setup_reference()` + - builtin/clone: defer setup of the object database + - Merge branch 'ps/odb-eagerly-load-alternates' into ps/odb-alternates-at-creation + (this branch uses ps/odb-eagerly-load-alternates.) + + The setup of alternates has been deferred to object database + creation time during clone, which drops the unused ad-hoc alternate + writing API, simplifying the object database backend interface. + + Waiting for response. + cf. <874igeuwja.fsf@emacs.iotcl.com> + cf. <8733vyuwid.fsf@emacs.iotcl.com> + source: <20260825-pks-odb-write-alternates-at-creation-time-v1-0-911513ba95c3@pks.im> + + +* ps/odb-pluggable-fsck (2026-08-25) 10 commits + - builtin/fsck: move loose object verification into the loose source + - builtin/fsck: move multi-pack index verification into the packed source + - builtin/fsck: move bitmap verification into the packed source + - builtin/fsck: move reverse index verification into the packed source + - builtin/fsck: move packfile verification into the packed source + - odb: provide infrastructure for pluggable fsck checks + - builtin/fsck: don't check alternates with "--no-full" + - builtin/fsck: de-globalize option handling + - builtin/fsck: merge `fsck_obj_buffer()` and `fsck_obj()` + - builtin/fsck: use `fsck_obj_buffer()` when checking loose objects + - Merge branch 'ps/odb-eagerly-load-alternates' into ps/odb-pluggable-fsck + - Merge branch 'ps/odb-pluggable-pack-generation' into ps/odb-pluggable-fsck + (this branch uses ps/odb-eagerly-load-alternates and ps/odb-pluggable-pack-generation.) + + The consistency checks for the object database (fsck) have been + decoupled from the generic builtin implementation and moved into the + backend-specific object source layers, making them pluggable for + different object storage formats. + + Waiting for response. + cf. + cf. + source: <20260825-pks-odb-source-fsck-v1-0-b756de0bf24f@pks.im> + + +* rs/worktree-add-basename-fixes (2026-08-25) 4 commits + - worktree add: let worktree_basename() return string copy + - worktree add: trim slashes when deriving branch name from path + - worktree add: reject separator-only path + - worktree add: don't read out of bounds in worktree_basename() + + The string extraction logic for the branch name and worktree name + from the given path in 'git worktree add' has been corrected and + simplified to avoid out-of-bounds reads and improper handling of + trailing slashes. + + Waiting for review. + cf. + cf. + source: <20260825180350.2099-1-l.s.r@web.de> + + +* en/no-amend-during-conflicts (2026-08-28) 5 commits + - commit: refuse partial commits during conflict resolution + - commit: refuse to amend during conflict resolution + - commit: reword the empty-commit rebase amend error + - commit: allow a partial commit when a rebase pick becomes empty + - commit: clarify FROM_REBASE_PICK and is_from_rebase() names + + Teach 'am', 'revert', and 'rebase' that running 'commit --amend' or a + partial 'commit ' makes no sense during operations that stop + and return control to the user to resolve conflicts left in the + working tree, just like 'cherry-pick' and 'merge' do. + + Waiting for response. + cf. + cf. + cf. + cf. + source: + + * as/utimensat-utimes (2026-08-21) 3 commits - compat/posix: drop legacy header and shims - treewide: use utimensat(2) instead of legacy utime(3p) @@ -718,7 +474,8 @@ Release tarballs are available at: during a concurrent geometric repack, and 'git replay' has been fixed to not segfault when reading such missing objects. - Needs review. + Expecting a reroll. + cf. source: @@ -729,8 +486,9 @@ Release tarballs are available at: correctly locate the Git command after global options like '-C' by properly skipping them, similar to how the bash completion does. - Needs review. + Will merge to 'next'? cf. + cf. source: @@ -796,7 +554,7 @@ Release tarballs are available at: source: -* yn/worktree-repair-relative (2026-08-21) 1 commit +* yn/worktree-repair-relative (2026-08-28) 1 commit - worktree repair: detect relative path in .git file correctly The git worktree repair command failed to rewrite the .git file of @@ -806,37 +564,9 @@ Release tarballs are available at: the path originally recorded in the file was absolute, and this new capability is used to correctly detect such mismatches. - Needs review. - cf. - source: - - -* sk/object-name-use-after-free (2026-08-17) 1 commit - (merged to 'next' on 2026-08-20 at b0804dff5f) - + object-name: avoid use-after-free in get_oid_with_context_1() - - A heap-use-after-free bug in the object name parsing code when - reporting failures with a relative path to a sparse directory has - been corrected. - - Will merge to 'master'. - cf. - source: <20260817082127.81132-1-diy2903@gmail.com> - - -* kh/format-rev-doc-synopsis (2026-08-17) 2 commits - (merged to 'next' on 2026-08-20 at b9c47eddd0) - + doc: format-rev: use [synopsis] on code block - + doc: format-rev: quote subject placeholder before and after - - The documentation for 'git format-rev' has been updated to use the - [synopsis] block definition on code blocks to properly highlight - placeholders, and a quoting inconsistency in the running text has - been fixed. - - Will merge to 'master'. - cf. - source: + Will merge to 'next'? + cf. + source: * kh/format-rev-more-options (2026-08-18) 5 commits @@ -850,6 +580,7 @@ Release tarballs are available at: formatting options. Needs review. + cf. source: @@ -952,7 +683,8 @@ Release tarballs are available at: TLS handshake via a new 'http.sslVerifyStatus' configuration variable. - Needs review. + Waiting for review. + cf. source: <20260818214858.65122-1-ggordon@gitlab.com> @@ -1060,7 +792,7 @@ Release tarballs are available at: source: -* yn/worktree-ambiguous-remote-advice (2026-08-26) 4 commits +* yn/worktree-ambiguous-remote-advice (2026-08-27) 4 commits - worktree add: treat multiple matches with --guess-remote as an error - worktree add: improve message for ambiguous remote branch name - checkout: improve message for ambiguous remote branch name @@ -1069,8 +801,9 @@ Release tarballs are available at: 'git worktree add' did not prevent DWIM behavior when '-b' or '-B' was specified, which has been corrected. - Needs review. - source: + Will merge to 'next'? + cf. + source: * hn/ci-cancel-stale-pr-runs (2026-07-31) 1 commit @@ -1110,7 +843,8 @@ Release tarballs are available at: visually separates autostash conflict advice from the subsequent branch-switch message. - Needs review. + Waiting for response. + cf. source: @@ -1165,7 +899,7 @@ Release tarballs are available at: Waiting for response. cf. - cf. + cf. <20260827052318.GC176544@coredump.intra.peff.net> source: @@ -1191,22 +925,21 @@ Release tarballs are available at: to spawn a 'git apply' subprocess. Will merge to 'next'? + cf. cf. 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 +* fz/rebase-autosquash-empty (2026-08-27) 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. This topic has been ejected due to conflicts with - 'pw/rebase-drop-notes-with-commit'. + rebase. - Expecting a reroll. - cf. - source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com> + Needs review. + source: <20260827-fz-autosquash-empty-v4-1-f98ffd575780@gmail.com> * mm/lib-httpd-cgi-safe (2026-08-12) 3 commits @@ -1245,6 +978,7 @@ Release tarballs are available at: the header is ultimately rejected. Will discard. + cf. source: <20260702041759.51572-1-zhihao.yao@njit.edu> @@ -1296,8 +1030,9 @@ Release tarballs are available at: above the selected base were incorrectly skipped by the pack exclusion logic, and reachability closure for bitmaps was broken. - Expecting a reroll. - cf. + Waiting for review. + cf. + cf. source: @@ -1325,15 +1060,3 @@ Release tarballs are available at: Expecting a reroll. cf. source: <20260801174156.2998808-1-mmontalbo@gmail.com> - - -* ec/commit-fixup-options (2026-05-26) 2 commits - - commit: allow -c/-C for all kinds of --fixup - - commit: allow -m/-F for all kinds of --fixup - - Support for '-m', '-F', '-c', or '-C' options to supply a commit log - message from outside the editor has been added for all 'git commit - --fixup' variations. - - Needs review. - source: