git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: git@vger.kernel.org
Subject: What's cooking in git.git (Nov 2025, #05; Mon, 17)
Date: Mon, 17 Nov 2025 09:18:34 -0800	[thread overview]
Message-ID: <xmqqcy5gmvbp.fsf@gitster.g> (raw)

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 are 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 an URL
to a message that raises issues but they are no means exhaustive.  A
topic without enough support may be discarded after a long period of
no activity (of course they can be resubmit when new interests
arise).

Git 2.52 (final) has been tagged.  We'll see if there is a need for
a quick brown paper bag fix necessary for some days and then reopen
the tree for the 2.53 cycle, to start merging topics that have been
cooking in "next" down to "master".

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/

--------------------------------------------------
[Graduated to 'master']

* jc/ci-use-arm64-p4-on-macos (2025-11-16) 1 commit
  (merged to 'next' on 2025-11-16 at c784b1ea9f)
 + Use Perforce arm64 binary on macOS CI jobs

 We replaced deprecated macos-13 with macos-14 image in GitHub
 Actions CI, but we forgot that the image is for arm64.  We have
 been seeing a lot of test failures ever since.  Switch to arm64
 binary for Perforce tests.
 source: <xmqqy0o5bml7.fsf@gitster.g>

--------------------------------------------------
[New Topics]

* jc/submodule-add (2025-11-15) 1 commit
 - submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.

 Comments?
 source: <xmqqv7jacvdq.fsf@gitster.g>

--------------------------------------------------
[Cooking]

* rs/diff-quiet-no-rename (2025-11-09) 1 commit
  (merged to 'next' on 2025-11-14 at 2d94808185)
 + diff: disable rename detection with --quiet

 As "git diff --quiet" only cares about the existence of any
 changes, disable rename/copy detection to skip more expensive
 processing whose result will be discarded anyway.

 Will cook in 'next'.
 source: <8796cd59-2335-4674-823d-d682ce7b7f8e@web.de>


* jc/gitattributes-whitespace-no-indent-fix (2025-11-11) 1 commit
  (merged to 'next' on 2025-11-14 at 230fcf2819)
 + .gitattributes: remove misspelled no-op whitespace attribute

 Ever since we added whitespace rules for this project, we misspelt
 an entry, which has been corrected.

 Will cook in 'next'.
 source: <xmqqv7jgwgxb.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-13) 2 commits
 - fetch: fix non-conflicting tags not being committed
 - fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Will merge to 'next'?
 cf. <xmqqtsytbk5w.fsf@gitster.g>
 source: <20251113-fix-tags-not-fetching-v5-0-371ea7ec638d@gmail.com>


* jk/asan-bonanza (2025-11-12) 10 commits
 - amend! Makefile: turn on NO_MMAP when building with ASan
 - t: enable ASan's strict_string_checks option
 - fsck: avoid parse_timestamp() on buffer that isn't NUL-terminated
 - fsck: remove redundant date timestamp check
 - fsck: avoid strcspn() in fsck_ident()
 - fsck: assert newline presence in fsck_ident()
 - cache-tree: avoid strtol() on non-string buffer
 - Makefile: turn on NO_MMAP when building with ASan
 - pack-bitmap: handle name-hash lookups in incremental bitmaps
 - compat/mmap: mark unused argument in git_munmap()

 Various issues detected by Asan have been corrected.

 Expecting a reroll?
 cf. <aRbToFLhzewwBaSv@pks.im>
 source: <20251112075522.GA978866@coredump.intra.peff.net>


* jk/attr-macroexpand-wo-recursion (2025-11-11) 1 commit
  (merged to 'next' on 2025-11-16 at c4e4a7348e)
 + attr: avoid recursion when expanding attribute macros

 The code to expand attribute macros has been rewritten to avoid
 recursion to avoid running out of stack space in an uncontrolled
 way.

 Will cook in 'next'.
 source: <20251111223647.GA4055973@coredump.intra.peff.net>


* bc/submodule-force-same-hash (2025-11-14) 2 commits
  (merged to 'next' on 2025-11-16 at aa765fefd0)
 + read-cache: drop submodule check from add_to_cache()
 + object-file: disallow adding submodules of different hash algo

 Adding a repository that uses a different hash function is a no-no,
 but "git submodule add" did nt prevent it, which has been corrected.

 Will cook in 'next'.
 source: <20251112235434.1499699-1-sandals@crustytoothpaste.net>


* jx/repo-struct-utf8width-fix (2025-11-15) 2 commits
 - builtin/repo: fix table alignment for UTF-8 characters
 - t/unit-tests: add UTF-8 width tests for CJK chars

 The "git repo structure" subcommand tried to align its output but
 mixed up byte count and display column width, which has been
 corrected.

 Will merge to 'next'.
 source: <cover.1763213290.git.worldhello.net@gmail.com>


* kh/doc-commit-extra-references (2025-11-14) 1 commit
 - doc: commit: link to git-status(1) on all format options

 Doc update.

 Will merge to 'next'.
 source: <c4349a03724.1763129061.git.code@khaugsbakk.name>


* kn/osxkeychain-idempotent-store-fix (2025-11-13) 1 commit
 - osxkeychain: avoid incorrectly skipping store operation

 An earlier check added to osx keychain credential helper to avoid
 storing the credential itself supplied was overeager and rejected
 credential material supplied by other helper backends that it would
 have wanted to store, which has been corrected.

 Will merge to 'next'.
 source: <pull.1999.v2.git.1763100270949.gitgitgadget@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* ps/ref-peeled-tags-fixes (2025-11-06) 2 commits
  (merged to 'next' on 2025-11-11 at 3549877a16)
 + object: fix performance regression when peeling tags
 + Merge branch 'ps/ref-peeled-tags' into ps/ref-peeled-tags-fixes
 (this branch uses ps/ref-peeled-tags.)

 Another fix-up to "peeled-tags" topic.

 Will cook in 'next'.
 source: <20251106-b4-pks-peel-object-performance-regression-v1-1-a386147750b0@pks.im>


* en/ort-rename-another-fix (2025-11-03) 3 commits
 - merge-ort: fix failing merges in special corner case
 - merge-ort: remove debugging crud
 - t6429: update comment to mention correct tool

 Yet another corner case fix around renames in the "ort" merge
 strategy.

 Will merge to 'next' after locally amending?
 cf. <xmqqfradbhgi.fsf@gitster.g>
 source: <pull.1992.git.1762192908.gitgitgadget@gmail.com>


* kn/maintenance-is-needed (2025-11-08) 7 commits
  (merged to 'next' on 2025-11-14 at ed70525e16)
 + maintenance: add 'is-needed' subcommand
 + maintenance: add checking logic in `pack_refs_condition()`
 + refs: add a `optimize_required` field to `struct ref_storage_be`
 + reftable/stack: add function to check if optimization is required
 + reftable/stack: return stack segments directly
 + Merge branch 'kn/refs-optim-cleanup' into kn/maintenance-is-needed
 + Merge branch 'ps/ref-peeled-tags' into kn/maintenance-is-needed
 (this branch uses kn/refs-optim-cleanup and ps/ref-peeled-tags.)

 "git maintenance" command learned "is-needed" subcommand to tell if
 it is necessary to perform various maintenance tasks.

 Will cook in 'next'.
 source: <20251108-562-add-sub-command-to-check-if-maintenance-is-needed-v4-0-a90f229b6023@gmail.com>


* qj/doc-http-bad-want-response (2025-11-05) 1 commit
 - doc: clarify server behavior for invalid 'want' lines in HTTP protocol

 Doc update.

 Will merge to 'next'.
 source: <20251105143849.1192-1-qjessa662@gmail.com>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* cc/fast-import-strip-if-invalid (2025-11-16) 3 commits
 - fast-import: add 'strip-if-invalid' mode to --signed-commits=<mode>
 - commit: refactor verify_commit_buffer()
 - fast-import: refactor finalize_commit_buffer()

 "git fast-import" learns "--strip-if-invalid" option to drop
 invalid cryptographic signature from objects.

 Comments?
 source: <20251117043450.322644-1-christian.couder@gmail.com>


* jc/whitespace-incomplete-line (2025-11-12) 12 commits
 - attr: enable incomplete-line whitespace error for this project
 - diff: highlight and error out on incomplete lines
 - apply: check and fix incomplete lines
 - whitespace: allocate a few more bits and define WS_INCOMPLETE_LINE
 - apply: revamp the parsing of incomplete lines
 - diff: update the way rewrite diff handles incomplete lines
 - diff: call emit_callback ecbdata everywhere
 - diff: refactor output of incomplete line
 - diff: keep track of the type of the last line seen
 - diff: correct suppress_blank_empty hack
 - diff: emit_line_ws_markup() if/else style fix
 - whitespace: correct bit assignment comments

 Both "git apply" and "git diff" learn a new whitespace error class,
 "incomplete-line".

 Will merge to 'next'?
 source: <20251112220258.1009253-1-gitster@pobox.com>


* ps/object-source-loose (2025-11-02) 13 commits
 - object-file: refactor writing objects via a stream
 - object-file: rename `write_object_file()`
 - object-file: refactor freshening of objects
 - object-file: rename `has_loose_object()`
 - object-file: read objects via the loose object source
 - object-file: move loose object map into loose source
 - object-file: hide internals when we need to reprepare loose sources
 - object-file: move loose object cache into loose source
 - object-file: introduce `struct odb_source_loose`
 - object-file: move `fetch_if_missing`
 - odb: adjust naming to free object sources
 - odb: introduce `odb_source_new()`
 - odb: fix subtle logic to check whether an alternate is usable

 A part of code paths that deals with loose objects has been cleaned
 up.

 Will merge to 'next'.
 source: <20251103-b4-pks-odb-loose-backend-v3-0-6a61ea977393@pks.im>


* bc/sha1-256-interop-02 (2025-11-14) 16 commits
 - SQUASH??? cargo clippy
 - SQUASH??? downgrade build.rs syntax
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary loose object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the loose object map
 - csum-file: define hashwrite's count as a uint32_t
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Expecting a reroll.
 source: <20251027004404.2152927-1-sandals@crustytoothpaste.net>


* ad/blame-diff-algorithm (2025-11-06) 2 commits
 - blame: make diff algorithm configurable
 - xdiff: add 'minimal' to XDF_DIFF_ALGORITHM_MASK

 "git blame" learns "--diff-algorithm=<algo>" option.

 Will merge to 'next'?
 cf. <xmqq5xb9bgx2.fsf@gitster.g>
 source: <pull.2075.v5.git.git.1762468914.gitgitgadget@gmail.com>


* ps/packed-git-in-object-store (2025-10-30) 9 commits
  (merged to 'next' on 2025-11-03 at 1eb3440abd)
 + packfile: track packs via the MRU list exclusively
 + packfile: always add packfiles to MRU when adding a pack
 + packfile: move list of packs into the packfile store
 + builtin/pack-objects: simplify logic to find kept or nonlocal objects
 + packfile: fix approximation of object counts
 + http: refactor subsystem to use `packfile_list`s
 + packfile: move the MRU list into the packfile store
 + packfile: use a `strmap` to store packs by name
 + Merge branch 'ps/remove-packfile-store-get-packs' into ps/packed-git-in-object-store

 The list of packfiles used in a running Git process is moved from
 the packed_git structure into the packfile store.

 Will cook in 'next'.
 source: <20251030-pks-packfiles-store-drop-list-v2-0-84654f080cc0@pks.im>


* kn/refs-optim-cleanup (2025-10-20) 4 commits
  (merged to 'next' on 2025-11-04 at dbab18969a)
 + t/pack-refs-tests: move the 'test_done' to callees
 + refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
 + refs: move to using the '.optimize' functions
 + Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
 (this branch is used by kn/maintenance-is-needed; uses ps/ref-peeled-tags.)

 Code clean-up.

 Will cook in 'next'.
 source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>


* lo/repo-info-all (2025-10-26) 2 commits
 - repo: add --all to git-repo-info
 - repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqpla43wcp.fsf@gitster.g> <aQRaRuBtt_r7SamL@pks.im>
 source: <20251026225409.46647-1-lucasseikioshiro@gmail.com>


* en/xdiff-cleanup-2 (2025-11-14) 10 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ptrdiff_t for dstart/dend
 - doc: define unambiguous type mappings across C and Rust

 Code clean-up.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqy0o7g0rk.fsf@gitster.g>
 cf. <xmqqzf8la20o.fsf@gitster.g>
 source: <pull.2070.v4.git.git.1763159816.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Comments?
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/ref-peeled-tags (2025-11-04) 18 commits
  (merged to 'next' on 2025-11-04 at 3818774c94)
 + t7004: do not chdir around in the main process
 + ref-filter: fix stale parsed objects
 + ref-filter: parse objects on demand
 + ref-filter: detect broken tags when dereferencing them
 + refs: don't store peeled object IDs for invalid tags
 + object: add flag to `peel_object()` to verify object type
 + refs: drop infrastructure to peel via iterators
 + refs: drop `current_ref_iter` hack
 + builtin/show-ref: convert to use `reference_get_peeled_oid()`
 + ref-filter: propagate peeled object ID
 + upload-pack: convert to use `reference_get_peeled_oid()`
 + refs: expose peeled object ID via the iterator
 + refs: refactor reference status flags
 + refs: fully reset `struct ref_iterator::ref` on iteration
 + refs: introduce `.ref` field for the base iterator
 + refs: introduce wrapper struct for `each_ref_fn`
 + Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
 (this branch is used by kn/maintenance-is-needed, kn/refs-optim-cleanup and ps/ref-peeled-tags-fixes.)

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.

 Will cook in 'next'.
 source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>


* je/doc-data-model (2025-11-12) 1 commit
 - doc: add an explanation of Git's data model

 Add a new manual that describes the data model.

 Will merge to 'next'?
 source: <pull.1981.v7.git.1762977200244.gitgitgadget@gmail.com>


* ps/history (2025-10-27) 12 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.

 Will merge to 'next' after the base topic.
 source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* sa/replay-atomic-ref-updates (2025-11-05) 3 commits
 - replay: add replay.refAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Will merge to 'next'.
 cf. <00a5a8f3-f761-46e8-84cc-4bd95db68b49@gmail.com>
 source: <20251105191650.89975-1-siddharthasthana31@gmail.com>


* ar/submodule-gitdir-tweak (2025-11-07) 4 commits
 - submodule: fix case-folding gitdir filesystem colisions
 - submodule: add extension to encode gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Seems to leak and break CI
 cf. <xmqq346ff56h.fsf@gitster.g>
 source: <20251107150547.3272180-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* ps/rust-cbindgen (2025-10-24) 6 commits
 . rust: generate bindings via cbindgen
 . meson: rename Rust library target
 . ci: use Debian instead of deprecated i386/ubuntu
 . gitlab-ci: backfill missing Linux jobs
 . gitlab-ci: reorder Linux job matrix to match GitHub's order
 . Merge branch 'ps/ci-rust' into ps/rust-cbindgen

 Introduce cbindgen in the build framework to help interfacing with
 Rust.

 Retracted.
 cf. <aQ3XOTX0AT_eFc5P@pks.im>
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


* jc/ci-drop-p4-macosx (2025-11-14) 1 commit
 . CI: drop Perforce tests from macOSX jobs

 Drop P4 tests on macOSX platform on GitHub Actions CI.

 Retracted.  Superseded by jc/ci-use-arm64-p4-on-macos topic.
 source: <xmqqqzu0gxq2.fsf_-_@gitster.g>

                 reply	other threads:[~2025-11-17 17:18 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqcy5gmvbp.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).