From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from fhigh-a2-smtp.messagingengine.com (fhigh-a2-smtp.messagingengine.com [103.168.172.153]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E4FBB175A92 for ; Fri, 26 Jun 2026 00:30:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.153 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782433823; cv=none; b=iU3cXCrwn8ZJUj96HMRGANcm0yzPzogwTlrnazgWnzDlHzWKMGF0o1kq7NI/wFcYEvpT0WugkgNcFnrQJK4hhJe8Yl1tNKzmddCLIyKDgWhTi2as+aWtrvG27Ey8pAWJGHNzom7FL7LqFjRMJvKusDz9rpsqsBaNUmUtLyZIkts= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782433823; c=relaxed/simple; bh=1tfnOn1I5uljlNSsLn7Ybm7C4iuaO4C5MSUoPublhco=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=iwCv/iJyBR+w+0JRtB8xFVa9KRyUQ3riCJi0oUXPKKSdEZhXyXqcB76eiNMoqsGXpfsY1w0dofgySzdUV9hHkbMY2R7PYNGv4ySte+qkbXBMOEBfzcC+J+haR55ThDE0J77ogWWIIRbWHqBoXbMuvziDgmEwlxBG8OjG99XIYR4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=pobox.com; spf=pass smtp.mailfrom=pobox.com; dkim=pass (2048-bit key) header.d=pobox.com header.i=@pobox.com header.b=Nnsrbs7f; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=T+uyb7oQ; arc=none smtp.client-ip=103.168.172.153 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=pobox.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pobox.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pobox.com header.i=@pobox.com header.b="Nnsrbs7f"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="T+uyb7oQ" Received: from phl-compute-10.internal (phl-compute-10.internal [10.202.2.50]) by mailfhigh.phl.internal (Postfix) with ESMTP id 0346914000E7; Thu, 25 Jun 2026 20:30:19 -0400 (EDT) Received: from phl-frontend-02 ([10.202.2.161]) by phl-compute-10.internal (MEProxy); Thu, 25 Jun 2026 20:30:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pobox.com; h=cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:message-id:mime-version:reply-to:subject :subject:to:to; s=fm3; t=1782433818; x=1782520218; bh=ACCp3Z+Q5F Kj0x9mSpgdEQH5eyJHZXPaNXd7STiU17Q=; b=Nnsrbs7f2cBkoXqgCOMyMAUyMc eXq40+AJpKZKUvvjSxD3cEHyuhip1N5dTgHL1P0oKHog9CnCl2aV2lRH7z/j3oXx bzTRbIwbj13pwcOS2w0X+bzJcY1/R1P3+84+4MfVocEqh9BxE6mHL2GJSBCged+K GYH/Seu5m7m10X61d46kFQ/Y8UyEcdoLDRUnM66LVm/FR20Ah3cuGnfnb5amR9+T PexMvpgLWma4eFBYOK6NoQ0n3wFxAXjaM9UF9XHf2+f0tc3MyHanES4JS7Nx0lbp gpw+4ciFVGpYZIzH/F15tlJQQMX/NivDzvrAvzHIQ6ToyddegliIOplxQKFg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:message-id:mime-version:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1782433818; x=1782520218; bh=ACCp3Z+Q5FKj0x9mSpgdEQH5eyJHZXPaNXd 7STiU17Q=; b=T+uyb7oQJT6J/rRK6NOsjK1DcwwqTmbEp2VCmnYHke+g1aaDeni 1uTHPMps3MkKUr4ykFEk2iwzl0KVAcAj2TGcj+CKf5ixFvN6DXjH9coJs2RfEcg5 Id4byeu0nIWrlzz4ebu779zCLna087NuQUv7/qDETcPBgMs1NdhX9tvBEJFbKKr4 hD2i0TSrkp4RSnkv+yXMg9AWUVgYUzg7eH5C5NVHvQoxf1Rohb+0TGEh/HWa9YnK FebykWcoNOvtfXYpdvsH48wzLjBXCMFInxSn75ET/fERqxfYBeu2IEe1hrS5lvfr /0Eo1D0JQOvKYq4mSPT/YseGQcQ6RIjK9cw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTE/p8JFNBBZjwRczS/bFfQGLh838PSudS5SdS1peCu6rIDT8jTK/9m6vitUW/6zsg rJnSNaaVxLlwB3OEnqwNLWeh3ug5UCkg50vYiUO5rPw2VJv3bCZZ7qsMbN9yziNyZmVO0S afj7SESo/E/TdPg+lnDh0Q6Wekx7OL9Ot92Sv5GTatU2tMDiQqe955jXCrR5hBsihH1Dbz quLdJG+Y1R9ICQ4LVMOgLjIlPObJRxzkxzwXbj/yNDJE2mHOJUXts2swv3d6fQFcm+Tboz BT9YigH4VNcMxukKGA2B2noi9f2TEr12mkz5QjOym3aWCQxDSGJxR496xc0yheZwztp2gn kkN2O0oy7gmfrQMkg+i2m4ZzWenO/nPGNoWbU3pGLW4+Sx1Nex9S1uRnZps3g2Xz2nAtEZ 57VXgpz4a/xLhas2KdwRgei3x2O+xMyGbu9XWpa/adcBB3ezKVpqSKylhkO9GfcUwKH+yn KU6io2GcHgPOZcXvMFAQenQb9c7NiothMXoHy0QKcyR1HAgD4G3coOWwA7rl1rI/8M+GXi xYTRfvb1MyS55+mO9YMwM3UeAS60vtiTBaua2YwckWvd8mZpeq53f69kFKpZ44K1QPZfri gY9aiMm8DmtKGpZRw45xgLYcOYgYztJu9do5ZAT6nlBRBcPDaoGSpzRq1hGw X-ME-Proxy: Feedback-ID: if26b431b:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 25 Jun 2026 20:30:18 -0400 (EDT) From: Junio C Hamano To: git@vger.kernel.org Subject: What's cooking in git.git (Jun 2026, #10) X-master-at: ab776a62a78576513ee121424adb19597fbb7613 X-next-at: 42296fc12ea8e7025714869d102fa1a8ccc844f5 Date: Thu, 25 Jun 2026 17:30:16 -0700 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Here are the topics that have been cooking in my tree. Commits prefixed with '+' are in 'next' (being in 'next' is a sign that a topic is stable enough to be used and is a candidate to be in a future release). Commits prefixed with '-' are only in 'seen', and aren't considered "accepted" at all and may be annotated with a URL to a message that raises issues but they are by no means exhaustive. A topic without enough support may be discarded after a long period of no activity (of course they can be resubmitted when new interests arise). Git 2.55-rc2 has been tagged. The tree is in deep feature-freeze, and remaining topics in 'next' will stay in "Will cook in 'next'" instead of "Will merge to 'master'" state, until Git 2.55 final. Copies of the source code to Git live in many repositories, and the following is a list of the ones I push into or their mirrors. Some repositories have only a subset of branches. With maint, master, next, seen, todo: git://git.kernel.org/pub/scm/git/git.git/ git://repo.or.cz/alt-git.git/ https://kernel.googlesource.com/pub/scm/git/git/ https://github.com/git/git/ https://gitlab.com/git-scm/git/ With all the integration branches and topics broken out: https://github.com/gitster/git/ Even though the preformatted documentation in HTML and man format are not sources, they are published in these repositories for convenience (replace "htmldocs" with "manpages" for the manual pages): git://git.kernel.org/pub/scm/git/git-htmldocs.git/ https://github.com/gitster/git-htmldocs.git/ Release tarballs are available at: https://www.kernel.org/pub/software/scm/git/ -------------------------------------------------- [New Topics] * ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit - gpg-interface: fix strip_cr_before_lf to only remove CR before LF The GPG and SSH signature parsing code has been corrected to strip carriage return characters only when they immediately precede line feeds, instead of unconditionally stripping all carriage returns. Needs review. source: <20260624093618.17456-1-antonio.destefani08@gmail.com> * jt/receive-pack-use-odb-transactions (2026-06-23) 6 commits - builtin/receive-pack: stage incoming objects via ODB transactions - odb/transaction: add transaction env interface - odb/transaction: propagate commit errors - odb/transaction: propagate begin errors - object-file: propagate files transaction errors - 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. Waiting for response(s) to review comment(s). cf. source: <20260624041920.2601961-1-jltobler@gmail.com> * ps/odb-drop-whence (2026-06-24) 7 commits - 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 uses ps/odb-source-packed.) The whence field in struct object_info has been removed, refactoring backend-specific object information retrieval into an opt-in struct object_info_source structure. Needs review. source: <20260624-b4-pks-odb-drop-whence-v1-0-8d1877b790ac@pks.im> * ps/reftable-hardening (2026-06-24) 11 commits - reftable/table: fix OOB read on truncated table - reftable/table: fix NULL pointer access when seeking to bogus offsets - reftable/block: fix OOB read with bogus restart offset - reftable/block: fix use of uninitialized memory when binsearch fails - reftable/block: fix OOB read with bogus restart count - reftable/block: fix OOB read with bogus block size - reftable/block: fix OOB write with bogus inflated log size - reftable/record: don't abort when decoding invalid ref value type - reftable/basics: fix OOB read on binary search of empty range - oss-fuzz: add fuzzer for parsing reftables - meson: support building fuzzers with libFuzzer The reftable code has been hardened against corrupted tables by fixing out-of-bounds writes, out-of-bounds reads, and abort calls during parsing. Needs review. source: <20260624-pks-reftable-hardening-v1-0-66e4ce87c6b9@pks.im> * hn/branch-push-slip-advice (2026-06-24) 3 commits - SQUASH??? use test_grep - push: suggest for a slash slip - branch: suggest / on upstream slip "git push origin/main" and "git branch origin main" could both be an obvious typo, in which case offer the obvious typofix. Waiting for response(s) to review comment(s). cf. source: * jc/history-message-prep-fix (2026-06-25) 1 commit - history: streamline message preparation and plug file stream leak Code clean-up with leakfix for a write file stream. Needs review. source: * ty/migrate-excludes-file (2026-06-25) 2 commits - environment: move excludes_file into repo_config_values - dir: encapsulate excludes_file lazy-load Move excludes_file global variable into per-repository structure. Waiting for response(s) to review comment(s). cf. source: <20260625161845.7543-1-cat@malon.dev> -------------------------------------------------- [Stalled] * jt/config-lock-timeout (2026-05-17) 1 commit - config: retry acquiring config.lock, configurable via core.configLockTimeout Configuration file locking now retries for a short period, avoiding failures when multiple processes attempt to update the configuration simultaneously. Waiting for response(s) to review comment(s) for too long, stalled. cf. source: <20260517132111.1014901-1-joerg@thalheim.io> * js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits - SQUASH??? - doc: document autocorrect API - parseopt: add tests for subcommand autocorrection - parseopt: enable subcommand autocorrection for git-remote and git-notes - parseopt: autocorrect mistyped subcommands - autocorrect: provide config resolution API - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT - autocorrect: use mode and delay instead of magic numbers - help: move tty check for autocorrection to autocorrect.c - help: make autocorrect handling reusable - parseopt: extract subcommand handling from parse_options_step() The parse-options library learned to auto-correct misspelled subcommand names. Waiting for response(s) to review comment(s) for too long, stalled. cf. cf. source: * cl/conditional-config-on-worktree-path (2026-05-24) 2 commits - config: add "worktree" and "worktree/i" includeIf conditions - config: refactor include_by_gitdir() into include_by_path() The [includeIf "condition"] conditional inclusion facility for configuration files has learned to use the location of worktree in its condition. Waiting for response(s) to review comment(s) for too long, stalled. cf. source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn> -------------------------------------------------- [Cooking] * kk/merge-base-exhaustion (2026-06-24) 7 commits - commit-reach: terminate merge-base walk when one paint side is exhausted - commit-reach: remove unused nonstale_queue dedup wrappers - commit-reach: introduce struct paint_state with per-side counters - commit-reach: add trace2 instrumentation to paint_down_to_common() - t6099, t6600: add side-exhaustion regression tests - t6600: add test cases for side-exhaustion edge cases - Documentation/technical: add paint-down-to-common doc 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. Expecting a reroll. cf. source: * dk/meson-enable-use-nsec-build (2026-06-20) 1 commit - meson: wire up USE_NSEC build knob The USE_NSEC build knob, which enables support for sub-second file timestamp resolution, has been wired up to the Meson build system. Waiting for response(s) to review comment(s). cf. source: * ps/connected-generic-promisor-checks (2026-06-25) 5 commits - connected: search promisor objects generically - connected: split out promisor-based connectivity check - odb/source-packed: support flags when iterating an object prefix - odb/source-packed: extract logic to skip certain packs - Merge branch 'ps/odb-source-packed' into ps/connected-generic-promisor-checks (this branch uses ps/odb-source-packed.) The connectivity check has been refactored to search for promisor objects in a generic way using the object database interface, rather than iterating packfiles directly. This allows connectivity checks to work properly in repositories that do not use packfiles. Will merge to 'next'? cf. source: <20260625-pks-connected-generic-promisor-checks-v3-0-7308f3b9dc44@pks.im> * ps/libgit-in-subdir (2026-06-22) 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 (this branch uses ps/odb-source-packed.) 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. source: <20260622-pks-libgit-in-subdir-v2-0-cb946c51ee7b@pks.im> * ps/odb-generalize-prepare (2026-06-22) 3 commits - odb: introduce `odb_prepare()` - odb/source: generalize `reprepare()` callback - Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare (this branch uses ps/odb-source-packed.) 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. Needs review. source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im> * jc/submittingpatches-design-critiques (2026-06-20) 1 commit (merged to 'next' on 2026-06-22 at 7495b5f9d6) + SubmittingPatches: address design critiques The documentation in SubmittingPatches has been updated to clarify how patch contributors should respond to design and viability critiques, and how the resolution of such critiques should be recorded in the final commit messages. Will cook in 'next'. cf. source: * wy/doc-clarify-review-replies (2026-06-21) 2 commits - doc: advise batching patch rerolls - doc: encourage review replies before rerolling Documentation on community contribution guidelines has been updated to encourage replying to review comments before rerolling, and to advise a default limit of at most one reroll per day to give reviewers across different time zones enough time to participate. Will merge to 'next'? cf. source: * ty/migrate-ignorecase (2026-06-19) 2 commits - config: use repo_ignore_case() to access core.ignorecase - environment: move ignore_case into repo_config_values The global configuration variable ignore_case (representing the core.ignorecase configuration) has been migrated into struct repo_config_values to tie it to a specific repository instance. Waiting for comments from Johannes. cf. source: <20260619155152.642760-1-cat@malon.dev> * mm/line-log-limited-ops (2026-06-18) 7 commits - diffcore-pickaxe: scope -G to the -L tracked range - diff: support --check with -L line ranges - line-log: support diff stat formats with -L - diff: extract a line-range diff helper for reuse - diff: emit -L hunk headers via xdiff's formatter - diff: simplify the line-range filter by classifying removals immediately - diff: rename and group the line-range filter for clarity "git log -L:" learned to limit various "diff" operations like --stat, --check, -G, to the specified range:path. Expecting a reroll. cf. source: * hn/history-squash (2026-06-24) 4 commits - history: re-edit a squash with every message - history: add squash subcommand to fold a range - history: give commit_tree_ext a message template - history: extract helper for a commit's parent tree The experimental "git history" command has been taught a new "squash" subcommand to fold a range of commits into a single commit, replaying any descendants on top. Needs review. source: * ps/t4216-tap-fix (2026-06-19) 1 commit (merged to 'next' on 2026-06-25 at 42296fc12e) + t4216: fix no-op test that breaks TAP output TAP output breakage fix. Will merge to 'master'. cf. source: <20260619-pks-t4216-drop-unused-prereq-v1-1-2ce0d7bea088@pks.im> * mh/fetch-follow-remote-head-config (2026-06-19) 8 commits (merged to 'next' on 2026-06-22 at 423079e1c8) + fetch: fixup a misaligned comment + fetch: add configuration variable fetch.followRemoteHEAD + fetch: refactor do_fetch handling of followRemoteHEAD + fetch: return 0 on known git_fetch_config + fetch: rename function report_set_head + t5510: cleanup remote in followRemoteHEAD dangling ref test + doc: explain fetchRemoteHEADWarn advice + fetch: fixup set_head advice for warn-if-not-branch The `fetch.followRemoteHEAD` configuration variable has been added to provide a default for the per-remote `remote..followRemoteHEAD` setting. Will cook in 'next'. cf. source: <20260619094751.2996804-1-m@lfurio.us> * ps/refs-writing-subcommands (2026-06-17) 5 commits - 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` The "git refs" toolbox has been extended with new "create", "delete", "update", and "rename" subcommands to create, delete, update, and rename references, respectively. Needs review. source: <20260617-pks-refs-writing-subcommands-v2-0-07f3d18336f9@pks.im> * po/hash-object-size-t (2026-06-16) 6 commits (merged to 'next' on 2026-06-21 at b780a276b9) + hash-object: add a >4GB/LLP64 test case using filtered input + hash-object: add another >4GB/LLP64 test case + hash-object --stdin: verify that it works with >4GB/LLP64 + hash algorithms: use size_t for section lengths + object-file.c: use size_t for header lengths + hash-object: demonstrate a >4GB/LLP64 problem Support for hashing loose or packed objects larger than 4GB on Windows and other LLP64 platforms has been improved by converting object header buffers and data-handling functions from 'unsigned long' to 'size_t'. Will cook in 'next'. cf. source: * kh/submittingpatches-trailers (2026-06-18) 5 commits (merged to 'next' on 2026-06-22 at 2cd4a152c9) + SubmittingPatches: note that trailer order matters + SubmittingPatches: be consistent with trailer markup + SubmittingPatches: document Based-on-patch-by trailer + SubmittingPatches: discourage common Linux trailers + SubmittingPatches: encourage trailer use for substantial help The trailer sections in SubmittingPatches have been updated to encourage use of standard trailers. Will cook in 'next'. cf. source: * mv/log-follow-mergy (2026-06-21) 1 commit (merged to 'next' on 2026-06-22 at f7e984a003) + log: improve --follow following renames for non-linear history "git log --follow" has been updated to handle non-linear history, in which the path being tracked gets renamed differently in multiple history lines, better. Will cook in 'next'. source: * wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit - MyFirstContribution: mention trimming quoted text in replies The contributor guide has been updated to advise new contributors to trim irrelevant quoted text when replying to review comments, matching the existing advice given to reviewers. Comments? cf. source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org> * tb/midx-incremental-custom-base (2026-06-12) 3 commits - midx-write: include packs above custom incremental base - midx: pass custom '--base' through incremental writes - t5334: expose shared `nth_line()` helper The `git multi-pack-index write --incremental` command has been corrected to properly honor the `--base` option. Previously, the custom base was ignored by the normal write path, and the pack exclusion logic incorrectly skipped packs from layers above the selected base, breaking reachability closure for bitmaps. Needs review. source: * mm/test-grep-lint (2026-06-12) 6 commits - t: add greplint to detect bare grep assertions - t: convert grep assertions to test_grep - t: fix Lexer line count for $() inside double-quoted strings - t: extract chainlint's parser into shared module - t: fix grep assertions missing file arguments - t/README: document test_grep helper Needs review. source: * rs/cat-file-default-format-optim (2026-06-14) 1 commit (merged to 'next' on 2026-06-17 at 43ed8b3969) + cat-file: speed up default format Will cook in 'next'. cf. <20260615165326.GA91269@coredump.intra.peff.net> source: <5a7ed929-6fe0-496c-83bd-65dee57c2241@web.de> * kk/prio-queue-get-put-fusion (2026-06-08) 2 commits - prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion - prio-queue: rename .nr to .nr_ and add accessor helpers 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. On hold, waiting for kk/prio-queue-get-put-fusion to land first. cf. source: * td/ref-filter-memoize-contains (2026-06-12) 3 commits - commit-reach: die on contains walk errors - ref-filter: memoize --contains with generations - commit-reach: reject cycles in contains walk 'git branch --contains' and 'git for-each-ref --contains' have been optimized to use the memoized commit traversal previously used only by 'git tag --contains', significantly speeding up connectivity checks across many candidate refs with shared history. Needs review. source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com> * tc/replay-linearize (2026-06-22) 3 commits - replay: offer an option to linearize the commit topology - replay: add helper to put entry into mapped_commits - replay: refactor enum replay_mode into a bool git replay learns --linearize option to drop merge commits and linearize the replayed history, mimicking git rebase --no-rebase-merges. Expecting a reroll. cf. <87tsqrycke.fsf@emacs.iotcl.com> source: <20260622-toon-git-replay-drop-merges-v4-0-ff257f534319@iotcl.com> * ps/setup-drop-global-state (2026-06-10) 8 commits (merged to 'next' on 2026-06-15 at d9a8b88d47) + treewide: drop USE_THE_REPOSITORY_VARIABLE + environment: stop using `the_repository` in `is_bare_repository()` + environment: split up concerns of `is_bare_repository_cfg` + builtin/init: stop modifying `is_bare_repository_cfg` + setup: remove global `git_work_tree_cfg` variable + builtin/init: simplify logic to configure worktree + builtin/init: stop modifying global `git_work_tree_cfg` variable + Merge branch 'ps/setup-centralize-odb-creation' into ps/setup-drop-global-state Continuation of "setup.c" refactoring to drop remaining global state (`git_work_tree_cfg`, `is_bare_repository_cfg`). The most notable outcome is that `is_bare_repository()` has been updated to no longer implicitly rely on `the_repository`. Will cook in 'next'. cf. cf. <87ldckyygk.fsf@emacs.iotcl.com> source: <20260611-b4-pks-setup-drop-global-state-v2-0-a6f7269c841d@pks.im> * ps/refs-avoid-chdir-notify-reparent (2026-06-25) 12 commits - refs: protect against chicken-and-egg recursion - refs/reftable: lazy-load configuration to fix chicken-and-egg - reftable: split up write options - refs/files: lazy-load configuration to fix chicken-and-egg - refs: move parsing of "core.logAllRefUpdates" back into ref stores - repository: free main reference database - chdir-notify: drop unused `chdir_notify_reparent()` - refs: unregister reference stores from "chdir_notify" - setup: don't apply "GIT_REFERENCE_BACKEND" without a repository - setup: stop applying repository format twice - setup: inline `check_and_apply_repository_format()` - Merge branch 'ps/setup-centralize-odb-creation' into ps/refs-avoid-chdir-notify-reparent The reference backends have been converted to always use absolute paths internally. This allows dropping the calls to `chdir_notify_reparent()` and fixes a memory leak in how the reference database is constructed with an "onbranch" condition. Will merge to 'next'? cf. source: <20260625-b4-pks-refs-avoid-chdir-notify-reparent-v6-0-41fbca3cf5e3@pks.im> * ps/odb-source-packed (2026-06-16) 18 commits (merged to 'next' on 2026-06-19 at dcf0c084e4) + odb/source-packed: drop pointer to "files" parent source + midx: refactor interfaces to work on "packed" source + odb/source-packed: stub out remaining functions + odb/source-packed: wire up `freshen_object()` callback + odb/source-packed: wire up `find_abbrev_len()` callback + odb/source-packed: wire up `count_objects()` callback + odb/source-packed: wire up `for_each_object()` callback + odb/source-packed: wire up `read_object_stream()` callback + odb/source-packed: wire up `read_object_info()` callback + packfile: use higher-level interface to implement `has_object_pack()` + odb/source-packed: wire up `reprepare()` callback + odb/source-packed: wire up `close()` callback + odb/source-packed: start converting to a proper `struct odb_source` + odb/source-packed: store pointer to "files" instead of generic source + packfile: move packed source into "odb/" subsystem + packfile: split out packfile list logic + packfile: rename `struct packfile_store` to `odb_source_packed` + Merge branch 'ps/odb-source-loose' into ps/odb-source-packed (this branch is used by ps/connected-generic-promisor-checks, ps/libgit-in-subdir, ps/odb-drop-whence and ps/odb-generalize-prepare.) The packed object source has been refactored into a proper struct odb_source. Will cook in 'next'. cf. source: <20260617-pks-odb-source-packed-v3-0-b5c7583cd795@pks.im> * td/ref-filter-restore-prefix-iteration (2026-06-12) 1 commit (merged to 'next' on 2026-06-19 at a19dbb4193) + ref-filter: restore prefix-scoped iteration Commands that list branches and tags (like git branch and git tag) have been optimized to pass the namespace prefix when initializing their ref iterator, avoiding a loose-ref scaling regression in repositories with many unrelated loose references. Will cook in 'next'. cf. source: <20260612-fix-git-branch-regression-v4-1-f150038c02f4@gmail.com> * ty/move-protect-hfs-ntfs (2026-06-20) 2 commits (merged to 'next' on 2026-06-20 at d8ca0d5180) + environment: use 'repo->initialized' for repo_protect_hfs() and repo_protect_ntfs() (merged to 'next' on 2026-06-15 at c2a30ca954) + environment: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values' The global configuration variables protect_hfs and protect_ntfs have been migrated into struct repo_config_values to tie them to per-repository configuration state. Will cook in 'next'. cf. cf. source: <20260610124353.149874-2-cat@malon.dev> source: <20260620140957.667820-1-cat@malon.dev> * ps/cat-file-remote-object-info (2026-06-25) 13 commits - cat-file: make remote-object-info allow-list dynamic - cat-file: validate remote atoms with allow_list - cat-file: add remote-object-info to batch-command - transport: add client support for object-info - serve: advertise object-info feature - fetch-pack: move fetch initialization - connect: refactor packet writing - fetch-pack: move function to connect.c - fetch-pack: prepare function to be moved - t1006: split test utility functions into new "lib-cat-file.sh" - cat-file: declare loop counter inside for() - git-compat-util: add strtoul_szt() with error handling - transport-helper: fix memory leak of helper on disconnect The `remote-object-info` command has been added to `git cat-file --batch-command`, allowing clients to request object metadata (currently size) from a remote server via protocol v2 without downloading the entire object. The client dynamically filters format placeholders based on server-advertised capabilities and safely returns empty strings for inapplicable or unsupported fields. Waiting for response(s) to review comment(s). cf. source: <20260625-ps-eric-work-rebase-v14-0-09f7ffe21a53@gmail.com> * ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit - http: preserve wwwauth_headers across redirects When cURL follows a redirect, the WWW-Authenticate headers from the redirect target were lost because credential_from_url() cleared the credential state. This has been fixed by preserving the collected headers across the redirect update. Expecting a reroll. cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com> source: <20260602161150.1527493-1-aplattner@nvidia.com> * ps/doc-recommend-b4 (2026-06-15) 3 commits (merged to 'next' on 2026-06-17 at dd9a463369) + b4: introduce configuration for the Git project + MyFirstContribution: recommend the use of b4 + MyFirstContribution: recommend shallow threading of cover letters Project-specific configuration for b4 has been introduced, and the documentation has been updated to recommend using it as a streamlined method for submitting patches. Will cook in 'next'. cf. <87eci7yomp.fsf@emacs.iotcl.com> source: <20260615-pks-b4-v4-0-22cfca8f19c5@pks.im> * sn/rebase-update-refs-symrefs (2026-06-03) 1 commit - rebase: skip branch symref aliases "git rebase --update-refs" has been taught to resolve local branch symrefs to their referents before queuing updates. This correctly skips aliases of the current branch and avoids duplicate updates for underlying real branches, fixing failures when branch aliases (like a default branch rename) are present. Waiting for response(s) to review comment(s). cf. source: * 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 A new `diff..process` configuration has been introduced to allow a long-running external process to act as a hunk provider to allows external tools to control which lines Git considers changed while leaving all output formatting (word diff, color, blame, etc.) to Git's standard pipeline. Expecting a reroll. cf. source: * tb/pack-path-walk-bitmap-delta-islands (2026-06-21) 5 commits (merged to 'next' on 2026-06-22 at 59cf1663e7) + pack-objects: support `--delta-islands` with `--path-walk` + pack-objects: extract `record_tree_depth()` helper + pack-objects: support reachability bitmaps with `--path-walk` + t/perf: drop p5311's lookup-table permutation + Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands The pack-objects command now supports using reachability bitmaps and delta-islands concurrently with the `--path-walk` option, allowing faster packaging by falling back to path-walk when bitmaps cannot fully satisfy the request. Will cook in 'next'. cf. source: * ty/migrate-trust-executable-bit (2026-06-19) 3 commits - 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 The 'trust_executable_bit' (coming from 'core.filemode' configuration) has been migrated into 'repo_config_values' to tie it to a specific repository instance. Needs review. source: <20260619162105.648495-1-cat@malon.dev> * kk/prio-queue-cascade-sift (2026-06-01) 1 commit - prio-queue: use cascade-down for faster extract-min prio_queue_get() has been optimized by using a cascade-down approach (promoting the smaller child at each level and sifting up the last element from the leaf vacancy), which halves the number of comparisons per extract-min operation in the common case. On hold, waiting for kk/prio-queue-get-put-fusion to land first. cf. source: * jk/repo-info-path-keys (2026-06-23) 3 commits - repo: add path.gitdir with absolute and relative suffix formatting - repo: add path.commondir with absolute and relative suffix formatting - path: extract format_path() and use in rev-parse The "git repo info" command has been taught new keys to output both absolute and relative paths for "gitdir" and "commondir", supported by a new path-formatting helper extracted from "git rev-parse". Will merge to 'next'? cf. source: <20260624033748.108281-1-jayatheerthkulkarni2005@gmail.com> * ps/history-drop (2026-06-15) 10 commits - builtin/history: implement "drop" subcommand - builtin/history: split handling of ref updates into two phases - 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 and replay its descendants onto its parent. Waiting for response(s) to review comment(s). cf. source: <20260615-b4-pks-history-drop-v6-0-2e329e536d78@pks.im> * jk/setup-gitfile-diag-fix (2026-06-16) 1 commit (merged to 'next' on 2026-06-18 at b63b3d1f25) + read_gitfile(): simplify NOT_A_REPO error message A regression in the error diagnosis code for invalid .git files has been fixed, avoiding a potential NULL-pointer crash when reporting that a .git file does not point to a valid repository. Will cook in 'next'. cf. source: <20260616123516.GA2301231@coredump.intra.peff.net> * kh/doc-trailers (2026-06-10) 10 commits - doc: interpret-trailers: document comment line treatment - doc: interpret-trailers: commit to “trailer block” term - doc: interpret-trailers: join new-trailers again - doc: interpret-trailers: add key format example - doc: interpret-trailers: explain key format - doc: interpret-trailers: explain the format after the intro - doc: interpret-trailers: not just for commit messages - doc: interpret-trailers: use “metadata” in Name as well - doc: interpret-trailers: replace “lines” with “metadata” - doc: interpret-trailers: stop fixating on RFC 822 Documentation updates. Expecting a reroll. cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com> source: * za/completion-hide-dotfiles (2026-06-20) 2 commits - completion: hide dotfiles by default for path completion - completion: hide dotfiles for selected path completion The path completion for commands like `git rm` and `git mv`, is being 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). cf. source: * 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 The -m/-F/-c/-C options to supply commit log message from outside the editor are now supported for all "git commit --fixup" variations. Needs review. source: * kh/doc-replay-config (2026-06-05) 4 commits - doc: replay: move “default” to the right-hand side - doc: replay: use a nested description list - doc: replay: improve config description - doc: link to config for git-replay(1) Doc update for "git replay" to actually refer to its configuration variables. Needs review. source: * hn/status-pull-advice-qualified (2026-05-21) 1 commit (merged to 'next' on 2026-06-15 at 898a4df940) + remote: qualify "git pull" advice for non-upstream compareBranches Advice shown by "git status" when the local branch is behind or has diverged from its push branch has been updated to suggest "git pull ". Will cook in 'next'. cf. source: * hn/branch-delete-merged (2026-06-24) 7 commits - branch: add --dry-run for --delete-merged - branch: add branch..deleteMerged opt-out - branch: add --delete-merged - branch: prepare delete_branches for a bulk caller - branch: let delete_branches skip unmerged branches on bulk refusal - branch: convert delete_branches() to a flags argument - branch: add --forked filter for --list mode "git branch" command learned "--delete-merged" option to remove local branches that have already been merged to the remote-tracking branches they track. Needs review. source: * cc/promisor-auto-config-url-more (2026-05-27) 8 commits (merged to 'next' on 2026-06-15 at d1c99e75cc) + doc: promisor: improve acceptFromServer entry + promisor-remote: auto-configure unknown remotes + promisor-remote: trust known remotes matching acceptFromServerUrl + promisor-remote: introduce promisor.acceptFromServerUrl + promisor-remote: add 'local_name' to 'struct promisor_info' + urlmatch: add url_normalize_pattern() helper + urlmatch: change 'allow_globs' arg to bool + t5710: simplify 'mkdir X' followed by 'git -C X init' The handling of promisor-remote protocol capability has been loosened to allow the other side to add to the list of promisor remotes via the promisor.acceptFromServerURL configuration variable. Will cook in 'next'. cf. <877bo7294j.fsf@emacs.iotcl.com> cf. source: <20260527140820.1438165-1-christian.couder@gmail.com> * hn/checkout-track-fetch (2026-06-24) 2 commits - checkout: extend --track with a "fetch" mode to refresh start-point - branch: expose helpers for finding the remote owning a tracking ref "git checkout --track=..." learned to optionally fetch the branch from the remote the new branch will work with. Waiting for response(s) to review comment(s). cf. <12998c3a-ff69-4a98-9ed6-18aa0224e75e@gmail.com> source: * en/ort-harden-against-corrupt-trees (2026-06-13) 5 commits (merged to 'next' on 2026-06-18 at e51bee59ca) + cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts + merge-ort: abort merge when trees have duplicate entries + merge-ort: free diff pairs queue in clear_or_reinit_internal_opts() + merge-ort: drop unnecessary show_all_errors from collect_merge_info() + merge-ort: propagate callback errors from traverse_trees_wrapper() "ort" merge backend handles merging corrupt trees better by aborting when it should. Will cook in 'next'. cf. source: * pw/status-rebase-todo (2026-06-23) 2 commits (merged to 'next' on 2026-06-23 at a0fcde09dc) + status: improve rebase todo list parsing + sequencer: factor out parsing of todo commands The display of the rebase todo list in "git status" has been improved to correctly abbreviate object IDs for more commands and avoid misinterpreting refs as object IDs. Will cook in 'next'. source: * ps/shift-root-in-graph (2026-06-20) 3 commits - graph: indent visual root in graph - revision: add peek functions for lookahead - lib-log-graph: move check_graph function "git log --graph" has been modified to visually distinguish parentless "root" commits (and commits that become roots due to history simplification) by indenting them, preventing them from appearing falsely related to unrelated commits rendered immediately above them. Waiting for response(s) to review comment(s). The peek-ahead approach may need to be scratched. cf. cf. source: <20260620-ps-pre-commit-indent-v6-0-cdc6d8fd5fbc@gmail.com>