{"thread":{"id":"66337","subject":"What's cooking in git.git (Sep 2026, #07)","startedAt":"2026-09-16T19:07:39Z","lastAt":"2026-09-17T15:52:42Z","messageCount":3,"participants":["Junio C Hamano","SZEDER Gábor"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"552796","messageId":"xmqqzexhuia0.fsf@gitster.g","threadId":"66337","inReplyTo":null,"subject":"What's cooking in git.git (Sep 2026, #07)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2026-09-16T19:07:35Z","receivedAt":"2026-09-16T19:07:39Z","isPatch":false,"body":"Here are the topics that have been cooking in my tree.  Commits\nprefixed with '+' are in 'next' (being in 'next' is a sign that a\ntopic is stable enough to be used and is a candidate to be in a\nfuture release).  Commits prefixed with '-' are only in 'seen', and\naren't considered \"accepted\" at all.  They may be annotated with a URL\nto a message that raises issues but they are by no means exhaustive.\nA topic without enough support may be discarded after a long period\nof no activity (of course, it can be resubmitted when new interest\narises).\n\nGit 2.56-rc1 has been tagged.  We have about 87 non-merge commits\non 'next' and 166 non-merge commits on 'seen'.  We may merge last\nminute fixes before Git 2.56 final, but otherwise I do not expect\nany new feature topics to be ready before the final, so most of the\nin-flight topics will stay cooking in 'next' until then.\n\nCopies of the source code to Git live in many repositories, and the\nfollowing is a list of the ones I push into or their mirrors.  Some\nrepositories have only a subset of branches.\n\nWith maint, master, next, seen, todo:\n\n\tgit://git.kernel.org/pub/scm/git/git.git/\n\tgit://repo.or.cz/alt-git.git/\n\thttps://kernel.googlesource.com/pub/scm/git/git/\n\thttps://github.com/git/git/\n\thttps://gitlab.com/git-scm/git/\n\nWith all the integration branches and topics broken out:\n\n\thttps://github.com/gitster/git/\n\nEven though the preformatted documentation in HTML and man format\nare not sources, they are published in these repositories for\nconvenience (replace \"htmldocs\" with \"manpages\" for the manual\npages):\n\n\tgit://git.kernel.org/pub/scm/git/git-htmldocs.git/\n\thttps://github.com/gitster/git-htmldocs.git/\n\nRelease tarballs are available at:\n\n\thttps://www.kernel.org/pub/software/scm/git/\n\n--------------------------------------------------\n[New Topics]\n\n* jc/advice-config-set-global (2026-09-14) 1 commit\n - advice: give cut-and-pasteable advice to squelch\n\n The advice subsystem has been updated to suggest using the\n '--global' option when recommending a command snippet to squelch\n future advice messages, since global configuration is generally\n more appropriate for user-level preferences than per-repository\n settings.\n\n Needs review.\n source: <xmqq33vb4hma.fsf@gitster.g>\n\n\n* sg/precompile-git-compat-util (2026-09-14) 4 commits\n - Makefile: precompile \"git-compat-util.h\"\n - Makefile: reintroduce REFTABLE_OBJS\n - cmake: remove any \"$(*_OBJS)\" variables when parsing Makefile for sources\n - Makefile: remove XDIFF_OBJS initialization\n\n The 'Makefile' has been taught to precompile 'git-compat-util.h'\n with GCC to speed up overall compilation, while excluding sources\n that do not include the compatibility header.\n\n Will merge to 'next'?\n source: <20260915060952.569535-1-szeder.dev@gmail.com>\n\n\n* of/commit-reach-repo-awareness (2026-09-16) 1 commit\n - commit-reach: parse commits in the given repository\n\n The can_all_from_reach() and can_all_from_reach_with_flag()\n functions have been updated to accept a repository context,\n preventing bugs where submodule merging incorrectly reads from the\n superproject's commit-graph.\n\n Will merge to 'next'?\n source: <20260916134632.1424829-1-orestisflo@gmail.com>\n\n--------------------------------------------------\n[Graduated to 'master']\n\n* hn/checkout-m-autostash-refine (2026-09-03) 2 commits\n  (merged to 'next' on 2026-09-07 at 1bc4ba5725)\n + checkout: separate autostash conflict advice from branch-switch message\n + stash: reserve exit status 1 for conflicts\n\n The autostash fallback in 'git checkout -m' has been refined to only\n retry when there are local changes.  Additionally, a blank line now\n visually separates autostash conflict advice from the subsequent\n branch-switch message.\n\n Graduated to 'master'.\n cf. <xmqq7bl2b1zs.fsf@gitster.g>\n source: <pull.2364.v5.git.git.1788446398.gitgitgadget@gmail.com>\n\n\n* jc/rust-cargo-build-target (2026-09-10) 1 commit\n  (merged to 'next' on 2026-09-15 at e01fbae88c)\n + rust: respect CARGO_BUILD_TARGET when locating build output\n\n When cross-compiling with Cargo, the output artifact is placed in a\n target-specific subdirectory, which causes the build system to fail\n to locate it.  The build system has been updated to respect the\n 'CARGO_BUILD_TARGET' environment variable.\n\n Graduated to 'master'.\n source: <20260910102013.1235066-2-chewi@gentoo.org>\n\n\n* js/mingw-test-fixes-around-perl (2026-09-13) 2 commits\n  (merged to 'next' on 2026-09-13 at c797ae17e4)\n + t9129: skip UTF-8 tests on Windows\n + t9700: accommodate for MSYS2 Perl reporting as `cygwin`\n\n Correct tests that depend on Perl running on MinGW\n\n Graduated to 'master'.\n source: <pull.2227.git.1789326667.gitgitgadget@gmail.com>\n\n\n* js/rust-in-windows-ci (2026-09-13) 2 commits\n  (merged to 'next' on 2026-09-13 at fb3c42e1d9)\n + ci(windows): build with Rust\n + rust: pick a GCC-compatible Cargo target under MSYS2/MinGW\n\n Update Windows CI build to support Rust.\n\n Graduated to 'master'.\n cf. <xmqq33vc932l.fsf@gitster.g>\n source: <pull.2213.v4.git.1789315032.gitgitgadget@gmail.com>\n\n\n* js/win-cmake-use-ucrt64 (2026-09-13) 1 commit\n  (merged to 'next' on 2026-09-13 at eab79407f2)\n + cmake(windows): accommodate for Git for Windows' migration to UCRT64\n\n Windows build switches from MINGW64 to URCR64 runtime starting Git\n 2.56.0; switch the cmake based build at the same time.\n\n Graduated to 'master'.\n source: <pull.2228.git.1789332072051.gitgitgadget@gmail.com>\n\n\n* ks/history-commit-leakfix (2026-09-15) 1 commit\n  (merged to 'next' on 2026-09-15 at a115e8173a)\n + builtin/history: unuse the commit buffer after use\n\n The memory leak caused by not unusing the commit buffer returned by\n repo_logmsg_reencode() during the rewording operation in 'git\n history' has been plugged.\n\n Graduated to 'master'.\n cf. <20260910160254.GB251185@coredump.intra.peff.net>\n cf. <xmqqv78df57r.fsf@gitster.g>\n source: <20260915082943.117985-1-kaartic.sivaraam@gmail.com>\n\n\n* mm/lib-httpd-cgi-safe (2026-09-01) 3 commits\n  (merged to 'next' on 2026-09-07 at 9ceb1bfd64)\n + t/lib-httpd: document writing concurrency-safe CGI helpers\n + t/lib-httpd: make http-429 first-request check atomic\n + t/lib-httpd: fix apply-one-time-script race under concurrent requests\n\n CGI helper scripts used by HTTP-related test scripts have been updated\n to use atomic filesystem operations, preventing race conditions when\n Apache handles concurrent requests.\n\n Graduated to 'master'.\n cf. <apkFyvN4hcEOadQq@pks.im>\n source: <pull.2171.v5.git.1788277983.gitgitgadget@gmail.com>\n\n\n* ps/odb-pluggable-fsck (2026-09-11) 10 commits\n  (merged to 'next' on 2026-09-13 at ea4130138d)\n + builtin/fsck: move loose object verification into the loose source\n + builtin/fsck: move multi-pack index verification into the packed source\n + builtin/fsck: move bitmap verification into the packed source\n + builtin/fsck: move reverse index verification into the packed source\n + builtin/fsck: move packfile verification into the packed source\n + odb: provide infrastructure for pluggable fsck checks\n + builtin/fsck: don't check alternates with \"--no-full\"\n + builtin/fsck: de-globalize option handling\n + builtin/fsck: merge `fsck_obj_buffer()` and `fsck_obj()`\n + builtin/fsck: use `fsck_obj_buffer()` when checking loose objects\n + Merge branch 'ps/odb-eagerly-load-alternates' into ps/odb-pluggable-fsck\n + Merge branch 'ps/odb-pluggable-pack-generation' into ps/odb-pluggable-fsck\n\n The consistency checks for the object database (fsck) have been\n decoupled from the generic builtin implementation and moved into the\n backend-specific object source layers, making them pluggable for\n different object storage formats.\n\n Graduated to 'master'.\n cf. <CAOLa=ZSi1TiTZ=i=SQp+pmjTOm2_wY-NiCotx66+M6VDKx=ZXg@mail.gmail.com>\n source: <20260911-pks-odb-source-fsck-v3-0-ef2fdc085e38@pks.im>\n\n\n* ps/odb-stop-registering-in-memory-sources (2026-09-10) 13 commits\n  (merged to 'next' on 2026-09-11 at 77bc48c97c)\n + odb: remove the ability to link sources ad-hoc\n + t/helper: stop registering alternates in \"ref-store\" command\n + t/helper: adapt read-midx to not link ad-hoc source anymore\n + builtin/multi-pack-index: refuse unknown sources with \"--object-dir=\"\n + odb/packed: fix memory leaks when freeing source\n + tmp-objdir: drop unused function to register alternate\n + odb: remove infrastructure to register submodule sources\n + builtin/grep: stop registering submodule ODB as source\n + submodule-config: stop registering submodule sources\n + submodule-config: stop using `the_hash_algo`\n + submodule-config: remove uses of `the_repository`\n + cache-tree: remove dependency on `the_repository`\n + cache-tree: drop `the_repository` in `cache_tree_fully_valid()`\n + Merge branch 'ty/repository-fetch-if-missing' into ps/ps/odb-stop-registering-in-memory-sources\n\n The mechanism to register in-memory alternate object sources has\n been removed, as submodule object databases are now accessed\n natively via their own repository structures.  This simplifies\n object database management and prepares the codebase for migrating\n alternate tracking into the files backend.\n\n Graduated to 'master'.\n source: <20260911-pks-odb-registering-in-memory-sources-v3-0-447e6882ed14@pks.im>\n\n\n* ps/tune-rerere-gc (2026-09-04) 2 commits\n  (merged to 'next' on 2026-09-07 at 6524063269)\n + builtin/maintenance: improve heuristic for \"rerere gc\"\n + rerere: extract logic to determine whether entries are stale\n\n \"git maintenance\" triggered \"rerere gc\" in unappropriate times and\n interfered with \"git rebase\" etc. too much.  The conditions \"rerere\n gc\" gets triggered have been tweaked.\n\n Graduated to 'master'.\n cf. <15a488b2-b4ae-4ac8-8cb3-f06ef5bbb52b@gmail.com>\n cf. <CAA0xjtrL8DJp61jp7s0L6L+RviwQz=-PEo7qZvCTh+8nT2cdfw@mail.gmail.com>\n source: <20260904-b4-pks-maintenance-rerere-gc-heuristic-v2-0-b1691121fe1c@pks.im>\n\n\n* sa/rev-list-missing-only (2026-09-03) 1 commit\n  (merged to 'next' on 2026-09-07 at b21b667619)\n + rev-list: add --missing-only option to filter output\n\n The git rev-list command has been augmented with a '--missing-only'\n option that filters the output to only show missing objects,\n stripping the leading '?' character and suppressing present objects,\n which is useful when used in combination with '--missing=print' or\n '--missing=print-info'.\n\n Graduated to 'master'.\n source: <20260903204551.65592-2-siddharthasthana31@gmail.com>\n\n\n* wf/imap-send-draft (2026-09-01) 1 commit\n  (merged to 'next' on 2026-09-07 at 8a2a1bb827)\n + imap-send: add --draft to set IMAP \\Draft flag\n\n The 'git imap-send' command has been taught to take the '--draft'\n option to mark uploaded messages as drafts, which helps some email\n clients render them properly for editing and sending.\n\n Graduated to 'master'.\n cf. <xmqq8q5kl4gq.fsf@gitster.g>\n cf. <31d24dc3-3ef6-41cb-acbd-4cb4fb0d2338@app.fastmail.com>\n source: <761c3f1b-e280-48b1-a2ad-770b68be3434@slotpi01m90>\n\n--------------------------------------------------\n[Cooking]\n\n* hn/range-diff-matched-only (2026-09-15) 1 commit\n - range-diff: add --matched-only to skip one-sided commits\n\n The 'git range-diff' command has been augmented with a\n '--matched-only' option to skip commits that are only present on\n one side, allowing users to easily focus on only the commits that\n have been retained.\n\n Needs review.\n source: <pull.2401.v3.git.git.1789458703432.gitgitgadget@gmail.com>\n\n\n* jc/cocci-free-updates (2026-09-11) 2 commits\n  (merged to 'next' on 2026-09-16 at 35b8bafa06)\n + cocci: FREE_AND_NULL(E) is safe to call on NULL\n + cocci: remove risky \"if (!E) free(E)\" conversion\n\n Updates to Coccinelle semantic patches to correctly handle the\n 'FREE_AND_NULL()' macro and avoid generating broken transformations\n for negated pointer checks.\n\n Will cook in 'next'.\n cf. <96aca004-0df4-4e21-b60a-0288239122cc@web.de>\n source: <xmqqld978mok.fsf@gitster.g>\n source: <xmqqh5jv8m4w.fsf@gitster.g>\n\n\n* jt/object-file-batch-fsync-fix (2026-09-13) 2 commits\n - object-file: flush transaction packfile before migrating objects\n - object-file: lift ODB reprepare out of packfile flush\n\n When 'core.fsyncMethod' is set to 'batch', the ODB transaction\n failed to properly flush large blob packfiles residing in the\n temporary directory before migrating the directory's contents to the\n main object store.  The execution sequence has been corrected by\n performing the packfile flush before the temporary directory\n migration, averting failure.\n\n Waiting for review.\n cf. <CAOLa=ZRCyowPgMABwsQBYTbW1cEf8PBBSszOEYQ4TKwLVKQfFA@mail.gmail.com>\n cf. <aqkGPcJdw3QagN0B@jtobler--20250820-SHC54>\n source: <cover.1789328612.git.jltobler@gmail.com>\n\n\n* ak/refs-files-root-ref-lock (2026-09-11) 1 commit\n  (merged to 'next' on 2026-09-16 at c8568ea3e1)\n + refs/files: avoid packed-refs lock for root ref deletion\n\n The files backend has been updated to avoid unconditionally locking\n the 'packed-refs' file when deleting a root ref (which are never\n packed).\n\n Will cook in 'next'.\n cf. <aqeLMG7lTJy3bM-h@pks.im>\n source: <20260912014609.535922-1-skariel@gmail.com>\n\n\n* tb/rerere-wait-for-merge-rr-lock (2026-09-14) 2 commits\n - rerere: go on at a conflict when the lock stays busy\n - rerere: wait for MERGE_RR.lock, and let the gc skip it\n\n Instead of failing to record conflicts to be resolved immediately,\n wait while \"rerere gc\" is ongoing.\n\n Needs review.\n source: <pull.2214.v4.git.1789373061.gitgitgadget@gmail.com>\n\n\n* tz/doc-pack-refs-and-refs-fixes (2026-09-15) 2 commits\n  (merged to 'next' on 2026-09-16 at 127f3b13fa)\n + doc/refs: backtick-quote commands and options consistently\n + doc/pack-refs: convert synopsis and options to new style\n\n Doc updates.\n\n Will merge to 'master'.\n source: <20260912191509.844954-1-tmz@pobox.com>\n\n\n* pp/midx-write-skip-empty (2026-09-08) 1 commit\n - midx-write: skip writes with no object entries\n\n The `git multi-pack-index write` command has been updated to\n silently return success when there are no object entries to index.\n This avoids writing empty `multi-pack-index` layers, which\n previously caused subsequent incremental midx writes using the\n `--bitmap` option to fail when attempting to load the missing\n reverse index.\n\n Waiting for review.\n cf. <aqAkfGZtLJ97nG1m@com-79390>\n cf. <CAOWp8q5UqPrJQosjypdcq=KX1TKcVenAOoZUYfTBDKbRUwazTw@mail.gmail.com>\n source: <eef33827000cf106544174ed000129c2989af1cd.1788851232.git.pia@pierre.co>\n\n\n* jk/merge-ll-tempfile-cleanup (2026-09-11) 3 commits\n - merge-ll: use tempfile API for external driver files\n - merge-ll: catch close() errors when writing external tempfiles\n - merge-ll: use strbuf to read back external merge result\n\n The external merge driver in 'git merge' now uses the tempfile API\n to create its temporary files.  This ensures that these temporaries\n are reliably cleaned up even when the merge driver or its parent Git\n process is terminated abruptly.\n\n Expecting a reroll.\n cf. <20260914165350.GA32247@peff.net>\n source: <20260911171044.GA1609692@coredump.intra.peff.net>\n\n\n* mh/rust-crate-subdir (2026-09-10) 1 commit\n . Move rust gitcore crate to a different subdirectory\n\n The Rust code and its 'Cargo.toml' file have been moved from the\n top-level repository root and 'src/' directory into a dedicated\n 'rust/' subdirectory.  This avoids confusing Cargo's packaging\n mechanism when the Git repository is included as a submodule in\n other Rust projects.\n\n Needs review (Broken???)\n cf. <xmqq5x0df19l.fsf@gitster.g>\n source: <20260910121056.2749578-1-mh@glandium.org>\n\n\n* ps/ref-storage-format (2026-09-09) 13 commits\n  (merged to 'next' on 2026-09-16 at 8937a6240b)\n + setup: allow \"--ref-storage-format=\" to specify a payload\n + setup: rename \"init.defaultRefFormat\" to \"init.defaultRefStorageFormat\"\n + t: rename GIT_TEST_DEFAULT_REF_FORMAT\n + setup: rename ref storage format environment variables\n + setup: refactor how we configure the ref storage format\n + refs: expose function to parse reference URIs\n + help: rename \"default-ref-format\" to \"default-ref-storage-format\"\n + builtin/rev-parse: rename \"--show-ref-format\" to \"--show-ref-storage-format\"\n + builtin/submodule: rename \"--ref-format=\" to \"--ref-storage-format=\"\n + builtin/refs: rename \"--ref-format=\" to \"--ref-storage-format=\"\n + builtin/clone: rename \"--ref-format=\" to \"--ref-storage-format=\"\n + builtin/init: rename \"--ref-format=\" to \"--ref-storage-format=\"\n + parse-options: allow for hidden aliases\n\n The terminology regarding reference storage formats has been unified\n across command-line options, environment variables, configuration\n variables, and source code, standardizing on the phrase \"ref storage\n format\" (e.g., `--ref-storage-format`, `'GIT_REF_STORAGE_FORMAT'`).\n Additionally, the `--ref-storage-format` option has been updated to\n accept payloads in the form `<format>://<payload>`.\n\n Will cook in 'next'.\n cf. <CAOLa=ZRxXimh8W-QBJB3VhbHOZWMEfWXB0ST0a=dOi+PNiR6sQ@mail.gmail.com>\n cf. <5e062976-d584-496d-84e0-e4b59c8f6876@gmail.com>\n source: <20260909-b4-pks-unify-ref-storage-format-v3-0-ca041fb40ad8@pks.im>\n\n\n* ta/command-list-guides-sync-lint (2026-09-10) 2 commits\n - lint-docs: check the guide list in command-list.txt\n - command-list.txt: add gitformat-loose(5) and gitpacking(7)\n - Merge branch 'kh/doc-datamodel' into ta/command-list-guides-sync-lint\n\n A new linter test has been added to Documentation/lint-manpages.sh\n to ensure that all non-command manual pages (guides and developer\n interfaces) listed in Documentation/Makefile are present in\n command-list.txt, replacing an older comment that reminded\n developers to keep them in sync.\n\n Needs review.\n cf. <xmqq1pb2s33e.fsf@gitster.g>\n source: <20260910194351.20809-1-taahol@utu.fi>\n\n\n* ap/var-broken-down-idents (2026-09-14) 1 commit\n - var: support broken-down idents, signing key, multiple args, and -z\n\n The 'git var' command has been extended to expose individual\n identity components ('GIT_AUTHOR_NAME', etc.) and the commit\n signing key, and can now accept multiple variables to query at\n once, safely formatting the output with a new '-z' option.\n\n Expecting a reroll.\n cf. <20260915220228.42819-1-andrewpleeter@gmail.com>\n source: <pull.2388.v8.git.git.1789426226860.gitgitgadget@gmail.com>\n\n\n* tc/push-force-if-includes-fixes (2026-09-15) 3 commits\n - push: --force-if-includes should allow fast-forward\n - push: fix --force-if-includes non-branch advice\n - push: check pushed ref for --force-if-includes\n\n The --force-if-includes protection for git push has been updated to\n consult the reflog of the local branch being pushed, rather than\n incorrectly checking the reflog of a local branch that shares the\n name of the remote destination branch.  The push advice for detached\n HEAD scenarios has also been adjusted to indicate that the remote\n ref cannot be verified locally.\n\n Expecting a reroll.\n cf. <CAHLx=On9sSTR+Ei2FmV7YSDtJ85SAzL3x=ALns1vsotn6c8Fiw@mail.gmail.com>\n source: <20260915233305.334115-1-tyler@tylercipriani.com>\n\n\n* as/push-force-if-includes-no-reflog (2026-09-05) 1 commit\n - push: fix --force-if-includes when remote-tracking ref has no reflog\n\n The timestamp used for checking the reflog of a remote-tracking\n branch during 'git push --force-if-includes' was left uninitialized\n when the reflog was completely empty, which has been corrected.\n\n Waiting for review.\n cf. <xmqqjyowz9oq.fsf@gitster.g>\n cf. <20260909065639.47316-1-f@lex.la>\n source: <20260905171330.34646-1-f@lex.la>\n\n\n* tb/rerere-lock-grace (2026-09-09) 3 commits\n - sequencer: disable auto maintenance in spawned commands\n - rebase, cherry-pick, revert: run auto maintenance when done\n - config: add git_config_append_parameter()\n\n The sequencer machinery (used by 'git rebase', 'git cherry-pick', and\n 'git revert') has been updated to defer automatic maintenance tasks\n until the end of the operation, preventing nested 'git commit', 'git\n merge', and 'exec' commands from triggering GC operations that could\n contend for locks or delete open packs while the sequence is in\n progress.\n\n Expecting a reroll.\n cf. <CAA0xjtr+GiweJL7K0g=Wg0D=Surm906Q2Z==Jh8ROGnc1=TYPg@mail.gmail.com>\n cf. <CAA0xjtr6FjdsfhfDbBW6OaxUqKpUo0prWE_SrLD_-0UBGfDAGQ@mail.gmail.com>\n source: <pull.2217.v4.git.1788942331.gitgitgadget@gmail.com>\n\n\n* cc/lazy-fetch-trusted-bit (2026-09-08) 5 commits\n - builtin/upload-pack: set GIT_NO_LAZY_FETCH to 0 on trusted repo\n - promisor-remote: prevent infinite recursion when lazy fetching\n - upload-pack: read uploadpack.lazyFetchTrusted\n - setup: extract path_allowlist_apply()\n - promisor-remote: factor out lazy_fetch_objects()\n\n A new 'uploadpack.lazyFetchTrusted' configuration variable has been\n introduced to allow 'upload-pack' to lazily fetch missing objects from\n configured promisor remotes when serving trusted repositories.\n\n Waiting for response.\n cf. <xmqq7bkvy74h.fsf@gitster.g>\n cf. <xmqqqzj3wr24.fsf@gitster.g>\n cf. <xmqqmrtrwq0k.fsf@gitster.g>\n source: <20260908164129.560396-1-christian.couder@gmail.com>\n\n\n* yt/pathspec-negative-prefix (2026-09-14) 2 commits\n  (merged to 'next' on 2026-09-16 at f4f244ea28)\n + dir: preserve pathspec prefix optimization with leading excludes\n + dir: do not apply prefix to negative pathspecs\n + Merge branch 'jc/pathspec-match-const' into yt/pathspec-negative-prefix\n\n The pathspec matching logic has been updated to avoid out-of-bounds\n memory accesses when a negative pathspec is shorter than the common\n prefix of positive pathspecs.\n\n Will merge to 'master'.\n source: <7CB757FB-1F2D-4EE6-8C31-8C2CD6D42397@ytausch.de>\n\n\n* cc/early-scan-options (2026-09-02) 6 commits\n - fast-import: use early_scan_options() for --allow-unsafe-features\n - parse-options: build early scan options from a struct option array\n - parse-options: add parse_options_takes_argument()\n - rev-parse: fix \"--\" detection when it is an option value\n - bisect: fix \"--\" detection when a term name is \"--\"\n - parse-options: add early_scan_options()\n\n The process of parsing command-line options in commands that\n perform an early scan over their arguments (such as 'git bisect',\n 'git rev-parse', and 'git fast-import') has been unified using a\n new early-scan sub-API, which parses and skips known options taking\n separate values to prevent logic bugs.\n\n Waiting for response.\n cf. <xmqqpkyviizc.fsf@gitster.g>\n source: <20260902161047.476753-1-christian.couder@gmail.com>\n\n\n* ec/commit-fixup-options (2026-05-26) 2 commits\n - commit: allow -c/-C for all kinds of --fixup\n - commit: allow -m/-F for all kinds of --fixup\n\n Support for '-m', '-F', '-c', or '-C' options to supply a commit log\n message from outside the editor has been added for all 'git commit\n --fixup' variations.\n\n Expecting a reroll.\n cf. <CA+JQ7M__GOnM9LHt0txry-G2z2CKhdZr0b-rU=Yd_A0gCEwmaQ@mail.gmail.com>\n source: <cover.1779792311.git.erik@cervined.in>\n\n\n* jc/checkout-refactor (2026-08-30) 8 commits\n - checkout: move post_checkout_hook() to checkout.c\n - checkout: wrap overly long lines\n - checkout: restructure switch, restore, and checkout entrypoints\n - checkout: extract branch setup and tracking helpers\n - checkout: extract option validation and pathspec helpers\n - checkout: validate stage and merge option compatibility in checkout_paths()\n - checkout: validate new branch name in checkout_branch()\n - checkout: pass cb_option explicitly to branch name parsers\n\n The front-end code for 'git checkout', 'git switch', and 'git\n restore' has been restructured to cleanly separate their pathspec\n and branch handling, eliminating a common bottleneck and paving the\n way to libify utility helpers.\n\n Waiting for response.\n cf. <xmqqo6el1xz0.fsf@gitster.g>\n cf. <xmqqse3x1y20.fsf@gitster.g>\n source: <20260830204835.1040408-1-gitster@pobox.com>\n\n\n* ll/doc-pushcert-if-asked (2026-08-29) 1 commit\n - doc: remote-helpers: option pushcert if-asked\n\n The remote helper documentation for the 'pushcert' option has been\n updated to mention that it can also take 'if-asked', reflecting the\n existing implementation in the code.\n\n Needs review.\n source: <20260829183659.29947-1-lorenz.leutgeb@posteo.eu>\n\n\n* ws/squelch-svn-migrate (2026-08-27) 2 commits\n - Makefile: add NO_GIT_SVN knob to skip building/installing git-svn\n - git-svn: don't print v1-layout migration noise when there's nothing to migrate\n\n Needs review.\n source: <20260827234345.1037130-1-wesleys@opperschaap.net>\n\n\n* dw/config-read-both-global (2026-08-23) 3 commits\n - config: read global scope via config_sequence\n - config: let sequence require a successful file\n - path: use forward slashes in XDG config on Windows\n\n The git config --global read operations have been updated to respect\n both $HOME/.gitconfig and $XDG_CONFIG_HOME/git/config, fixing an\n inconsistency where only the former was read when both configuration\n files are present.\n\n Expecting a reroll.\n cf. <aqIvJhLLcCSnyaL4-delilahwu@linux.microsoft.com>\n source: <20260823-fix-config-list-global-home-and-xdg-v2-0-b29cc63f017b@microsoft.com>\n\n\n* vv/branch-recurse-no-start-ref (2026-08-21) 2 commits\n - branch: allow recursion with no tracking name\n - branch: do not track a start point with no ref\n\n The --recurse-submodules option in 'git branch' has been fixed to\n avoid a crash when the start point is not a reference (e.g., a raw\n object ID).  The creation path now skips setting up tracking and\n properly forwards the absent tracking name to the submodule helper.\n\n Needs review.\n source: <20260822-vv-branch-recurse-no-start-ref-v1-0-46dc140acaa8@zitro.id>\n\n\n* ps/odb-alternates-at-creation (2026-09-10) 9 commits\n  (merged to 'next' on 2026-09-15 at 4acaa6a8aa)\n + odb/source: remove the ability to write alternates\n + builtin/clone: write alternates via `odb_create_on_disk()`\n + odb/source: support writing alternates when creating the database\n + builtin/clone: move setup of alternates for non-shared local clones\n + builtin/clone: move setup of alternates for shared local clones\n + builtin/clone: refactor handling of \"--reference{,-if-able}\"\n + builtin/clone: move around `setup_reference()`\n + builtin/clone: defer setup of the object database\n + setup: split up concerns of `init_db()`\n + Merge branch 'ps/odb-eagerly-load-alternates' into ps/odb-alternates-at-creation\n\n The setup of alternates has been deferred to object database\n creation time during clone, which drops the unused ad-hoc alternate\n writing API, simplifying the object database backend interface.\n\n Will cook in 'next'.\n cf. <CAOLa=ZRYsJL_0sKnfHD0PJO+5c+BKSMiuN20PeQHKJin82TJDw@mail.gmail.com>\n source: <20260910-pks-odb-write-alternates-at-creation-time-v5-0-8d10c4238edc@pks.im>\n\n\n* as/utimensat-utimes (2026-08-21) 3 commits\n - compat/posix: drop legacy <utime.h> header and shims\n - treewide: use utimensat(2) instead of legacy utime(3p)\n - compat/posix: introduce utimensat(2) wrapper\n\n The codebase has been updated to use the newer utimensat() POSIX\n function instead of the obsolescent utime(), allowing\n high-precision timestamps while preserving fallback compatibility.\n\n Waiting for response.\n cf. <aonIVn-ZQoMKWCAd@fruit.crustytoothpaste.net>\n source: <pull.2209.git.1787322203.gitgitgadget@gmail.com>\n\n\n* kn/receive-report-hook (2026-09-14) 5 commits\n  (merged to 'next' on 2026-09-15 at aa6cbdb87e)\n + receive-pack: coccinelle fix\n + hook: introduce the receive-report hook\n + receive-pack: move message generation to separate function\n + receive-pack: drop static variables to track report status version\n + doc: add proc-receive hook info in 'git-receive-pack.adoc'\n\n A new hook 'report' is added to 'git receive-pack', which runs after\n reference updates and allows the server to filter or modify the\n packet-line status report sent back to the client.\n\n Will cook in 'next'.\n source: <20260910-758-introduce-hook-v10-0-06f9c506631c@gmail.com>\n source: <xmqqwlsn31gq.fsf_-_@gitster.g>\n\n\n* ap/http-preserve-wwwauth-redirect (2026-08-19) 1 commit\n - http: preserve wwwauth_headers across redirects\n\n When an HTTP request triggers a redirect and the target yields an\n authentication challenge, the WWW-Authenticate headers received\n during the redirect are now explicitly preserved across the\n credential URL update, fixing an issue where they were incorrectly\n cleared.\n\n Needs review.\n source: <20260819-http-preserve-wwwauth-redirect-v2-1-4c61039432b0@nvidia.com>\n\n\n* kh/format-rev-more-options (2026-08-18) 5 commits\n - format-rev: learn --abbrev, --color, and --date\n - doc: rev-list-options.adoc: factor out --date alts\n - format-rev: factor option variables into a struct\n - format-rev: place BUG calls first in callback\n - format-rev: use lower case for opts description\n\n The experimental 'git format-rev' has been taught a few more\n formatting options.\n\n Needs review.\n source: <V2_CV_format-rev_three_more_opts.bd3@msgid.xyz>\n\n\n* gg/http-ssl-verify-status (2026-09-15) 1 commit\n - http: add http.sslVerifyStatus to check stapled OCSP responses\n\n The HTTP transport has been taught to check the revocation status of\n the server certificate using the stapled OCSP response during the\n TLS handshake via a new 'http.sslVerifyStatus' configuration\n variable.\n\n Needs review.\n source: <20260915162348.97792-1-ggordon@gitlab.com>\n\n\n* ty/repo-config-cleanups (2026-08-07) 3 commits\n - environment: remove inaccurate repo_config_values comments\n - environment: clarify repository config getter documentation\n - environment: drop redundant NULL checks in config getters\n\n Repository configuration getters in 'environment.c' have been\n simplified by removing redundant NULL checks.  The documentation for\n these getters in 'environment.h' has been clarified, and inaccurate\n section comments inside 'struct repo_config_values' have been removed.\n\n Waiting for response.\n cf. <aqOeHlPWer60LcoO@pks.im>\n source: <20260807085932.3958759-1-cat@malon.dev>\n\n\n* dk/use-nsec-runtime (2026-09-11) 3 commits\n  (merged to 'next' on 2026-09-15 at 67ef6d82ef)\n + core: convert build-time USE_NSEC into runtime core.useNanosec\n + environment: align repo_config_values_init with struct declaration\n + meson: expose knob for xmlto relative links in manuals\n\n The build-time knob 'USE_NSEC' for nanosecond stat precision has been\n converted to a runtime configuration 'core.useNanosec', allowing\n distributions to bundle one binary that adapts to filesystem\n capabilities dynamically.\n\n Will cook in 'next'.\n cf. <apVJCt4prIi2GgXp@pks.im>\n source: <cover.1789129924.git.ben.knoble@gmail.com>\n\n\n* bc/restrict-hex-to-lowercase (2026-09-07) 7 commits\n - hex: allow only lowercase object IDs in breaking changes mode\n - t5324: adjust tests for corrupt commit-graph\n - object-name: use hexval\n - hex: label usages of hex parsing for object IDs\n - hex: make hex_to_bytes accept kind of hex to use\n - hex: allow specifying hex type with hex2chr\n - hex: add functionality for lowercase-only hex\n\n The parser for hex object names has been updated to reject uppercase\n hexadecimal characters when running in the breaking changes mode, in\n preparation for Git 3.0.\n\n Needs review.\n source: <20260907195941.1024289-1-sandals@crustytoothpaste.net>\n\n\n* kj/repo-info-more-path-keys (2026-09-11) 7 commits\n - repo: add path.cdup\n - repo: add path.git-prefix\n - repo: add path.grafts with absolute and relative suffixes\n - repo: add path.index with absolute and relative suffixes\n - repo: add path.hooks with absolute and relative suffixes\n - repo: add path.superproject-root with absolute and relative suffixes\n - repo: add path.toplevel with absolute and relative suffix formatting\n\n The 'git repo info' command has been taught more keys to output\n paths of various repository components (such as the working tree\n root, superproject working tree, object database, etc.), supporting\n both absolute and relative path formats.\n\n Waiting for response.\n cf. <xmqqse3fbudk.fsf@gitster.g>\n cf. <xmqqcxujbser.fsf@gitster.g>\n source: <20260911144519.1011780-1-jayatheerthkulkarni2005@gmail.com>\n\n\n* tc/last-modified-bloom (2026-09-01) 6 commits\n - last-modified: keep per-path Bloom filters for wildcard pathspecs\n - last-modified: check pathspec against Bloom filter first\n - revision: add Bloom check that includes parent directories\n - bloom: add helper to check if any key in a vector is present\n - revision: expose check for paths maybe changed in Bloom filter\n - revision: move bloom keyvec precondition into function\n\n The 'git last-modified' command has been optimized by using Bloom\n filters.  It now reuses revision walk filtering logic from 'git log'\n to pre-filter commits, and maintains per-path Bloom filters even when\n wildcard pathspecs are used.\n\n Waiting for response.\n cf. <aqJWihcFmX7tPio5@pks.im>\n cf. <aqJWX0INerT8F687@pks.im>\n source: <20260901-toon-speed-up-last-modified-v4-0-a09949800404@iotcl.com>\n\n\n* ds/trace2-tolerate-failed-timestamp (2026-08-31) 7 commits\n - trace2: remove use of xcalloc()\n - trace2: remove use of ALLOC_GROW()\n - trace2: remove use of xstrfmt()\n - trace2: remove use of ALLOC_ARRAY()\n - trace2: remove use of xstrdup()\n - trace2: tolerate failed timestamp formatting\n - banned-die: create header for banning of functions\n\n Functions like `xstrfmt()` and `xcalloc()` have been banned from use\n in the trace2 API codebase to prevent calls to `die()` which lead to\n unwanted process exits and recursion when memory allocation fails.\n\n Needs review.\n source: <pull.2178.v3.git.1788197143.gitgitgadget@gmail.com>\n\n\n* pz/fetch-submodule-errors-config (2026-07-16) 2 commits\n - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal\n - submodule: fix premature failure in recursive submodule fetch\n\n The 'git fetch' command can now configure how submodule fetch errors\n are handled via 'fetch.submoduleErrors' and '--submodule-errors',\n making them non-fatal.  A premature failure during recursive submodule\n fetches has been fixed by deferring the error until the OID-based\n retry phase fails.\n\n Needs review.\n source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>\n\n\n* fz/rebase-autosquash-empty (2026-08-27) 1 commit\n - sequencer: honor --empty when a fixup!/squash! empties its target\n\n A commit that is emptied by melding a 'fixup!' or 'squash!' commit\n during 'git rebase --autosquash' is now handled according to the\n '--empty' option, allowing it to be dropped, kept, or to halt the\n rebase.\n\n Waiting for response.\n cf. <511300fe-112d-4f20-bd3f-e401e68c4a27@gmail.com>\n source: <20260827-fz-autosquash-empty-v4-1-f98ffd575780@gmail.com>\n\n\n* ij/subtree-reject-v2-config (2026-07-06) 2 commits\n - git-subtree: Bail out if we find output from Rust rewrite (test)\n - git-subtree: Bail out if we find output from Rust rewrite\n\n The shell script implementation of 'git subtree' has been updated to\n check for the presence of the configuration file of the new Rust\n implementation, preventing users from accidentally running the old\n script on repositories already managed by the new tool.\n\n Expecting a reroll.\n cf. <27219.20156.438730.881821@chiark.greenend.org.uk>\n source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>\n\n\n* mm/line-log-limited-ops (2026-09-02) 7 commits\n - diffcore-pickaxe: limit -G to the -L tracked range\n - diff: support --check with -L line ranges\n - diff: support stat formats with -L\n - diff: extract a line-range diff helper for reuse\n - diff: emit -L hunk headers via xdiff's formatter\n - diff: simplify the line-range filter by classifying removals immediately\n - diff: rename line-range filter struct and clarify fields\n (this branch is used by mm/diff-process-hunks.)\n\n The 'git log -L<range>:<path>' command has been taught to limit\n various 'diff' operations, such as '--stat', '--check', and '-G', to\n the specified range and path.\n\n Needs review.\n source: <pull.2152.v3.git.1788411919.gitgitgadget@gmail.com>\n\n\n* hn/history-squash (2026-09-08) 8 commits\n  (merged to 'next' on 2026-09-15 at 28dd773b8b)\n + history: support editing squashed commit messages\n + history: create squashed commits without editing\n + history: protect branches when squashing a range\n + history: validate squash revision ranges\n + history: add skeleton for squash subcommand\n + sequencer: share the squash message marker helpers and flags\n + history: give commit_tree_ext a message template\n + history: extract helper for a commit's parent tree\n\n The experimental 'git history' command has been taught a new 'squash'\n subcommand to fold a range of commits into a single commit, with any\n descendants replayed on top.\n\n Will cook in 'next'.\n cf. <xmqqik4fv4v1.fsf@gitster.g>\n source: <pull.2337.v15.git.git.1788900119.gitgitgadget@gmail.com>\n\n\n* tb/midx-incremental-custom-base (2026-06-12) 3 commits\n - midx-write: include packs above custom incremental base\n - midx: pass custom '--base' through incremental writes\n - t5334: expose shared `nth_line()` helper\n\n The 'git multi-pack-index write --incremental' command has been\n corrected to properly honor the '--base' option.  Previously, the\n custom base was ignored by the normal write path; packs from layers\n above the selected base were incorrectly skipped by the pack exclusion\n logic, and reachability closure for bitmaps was broken.\n\n Expecting a reroll.\n cf. <an4uIQA09rDCwwBp@com-79390>\n cf. <apUbQ4S-zJGtBeu2@pks.im>\n source: <cover.1781294771.git.me@ttaylorr.com>\n\n\n* mm/diff-process-hunks (2026-08-13) 11 commits\n - fixup! diff: consult oid-only hunk providers via diff.<driver>.process\n - diff: consult oid-only hunk providers via diff.<driver>.process\n - userdiff: add diff.<driver>.process config\n - sub-process: add a gentle status read\n - sub-process: separate process lifecycle from hashmap management\n - blame: read precomputed hunks\n - diff: read precomputed hunks for stat output\n - diff: record precomputed hunks during stat output\n - diff-hunks: add the store format, library, and command\n - diff: introduce a hunk provider interface\n - gitattributes: document how external diff drivers relate to diff features\n - Merge branch 'mm/line-log-limited-ops' into mm/diff-process-hunks\n (this branch uses mm/line-log-limited-ops.)\n\n A new 'diff.<driver>.process' configuration has been introduced to\n allow a long-running external process to act as a hunk provider,\n enabling external tools to control which lines Git considers changed\n while leaving all output formatting (word diff, color, blame, etc.) to\n Git's standard pipeline.\n\n Expecting a reroll.\n cf. <CAC2Qwm+kzT_3_GKrpay=JLGYsxS10oWCg2MJPHrCVogFHA0OdA@mail.gmail.com>\n source: <20260801174156.2998808-1-mmontalbo@gmail.com>\n\n\n* kh/format-patch-range-diff-notes (2026-08-24) 3 commits\n . format-patch: learn --[no-]range-diff-notes\n . revision.h: rename struct member to reflect notes role\n . format-patch: simplify get_notes_arg parameters\n\n The 'format-patch' command has been updated with options to\n configure notes specifically for range-diff output, allowing them to\n differ from the notes displayed on the patches themselves.\n\n Expecting a reroll.\n cf. <8f0a076b-4822-44e2-a842-cc1e39ae1c1d@app.fastmail.com>\n source: <CV_format-patch_learn_--range-diff-notes.c57@msgid.xyz>\n\n--------------------------------------------------\n[Discarded]\n\n* vm/advice-config-global-hint (2027-08-28) 1 commit\n . advice: use global config for default branch name\n\n Some advice messages would never trigger once a repository is\n initialized (e.g., advice.defaultBranchName).  Update hint to\n disable them in per-user configuration file.\n\n Superseded by jc/advice-config-set-global.\n source: <20270829004959.90983-1-ub4nal@mail.ru>\n"},{"id":"552803","messageId":"aqt/ceazKbzzmZBC@szeder.dev","threadId":"66337","inReplyTo":"xmqqzexhuia0.fsf@gitster.g","subject":"Re: What's cooking in git.git (Sep 2026, #07)","fromName":"SZEDER Gábor","fromEmail":"szeder.dev@gmail.com","sentAt":"2026-09-17T05:49:37Z","receivedAt":"2026-09-17T05:49:40Z","isPatch":false,"body":"On Wed, Sep 16, 2026 at 12:07:35PM -0700, Junio C Hamano wrote:\n> * sg/precompile-git-compat-util (2026-09-14) 4 commits\n>  - Makefile: precompile \"git-compat-util.h\"\n>  - Makefile: reintroduce REFTABLE_OBJS\n>  - cmake: remove any \"$(*_OBJS)\" variables when parsing Makefile for sources\n>  - Makefile: remove XDIFF_OBJS initialization\n> \n>  The 'Makefile' has been taught to precompile 'git-compat-util.h'\n>  with GCC to speed up overall compilation, while excluding sources\n>  that do not include the compatibility header.\n\nIt works with Clang (and probably with other LLVM-based compilers; I\ntried the Intel oneAPI compiler) as well.\n\n"},{"id":"552816","messageId":"xmqqtsnnub7b.fsf@gitster.g","threadId":"66337","inReplyTo":"aqt/ceazKbzzmZBC@szeder.dev","subject":"Re: What's cooking in git.git (Sep 2026, #07)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2026-09-17T15:52:40Z","receivedAt":"2026-09-17T15:52:42Z","isPatch":false,"body":"SZEDER Gábor <szeder.dev@gmail.com> writes:\n\n> On Wed, Sep 16, 2026 at 12:07:35PM -0700, Junio C Hamano wrote:\n>> * sg/precompile-git-compat-util (2026-09-14) 4 commits\n>>  - Makefile: precompile \"git-compat-util.h\"\n>>  - Makefile: reintroduce REFTABLE_OBJS\n>>  - cmake: remove any \"$(*_OBJS)\" variables when parsing Makefile for sources\n>>  - Makefile: remove XDIFF_OBJS initialization\n>> \n>>  The 'Makefile' has been taught to precompile 'git-compat-util.h'\n>>  with GCC to speed up overall compilation, while excluding sources\n>>  that do not include the compatibility header.\n>\n> It works with Clang (and probably with other LLVM-based compilers; I\n> tried the Intel oneAPI compiler) as well.\n\nThanks.\n"}]}