Skip to contentSkip to conversation

What's cooking in git.git (May 2025, #09; Fri, 30)

DISCUSSION Junio C Hamano 1 participant 1 message May 31, 2025

lore
Share & tools
lore
#0 lore 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).

We are past 2.50-rc0 and will be tagging -rc1 early next week. Any topics that are not in 'next' by now, except for fixes to new changes merged this cycle to 'master' already, are expected to wait until the next cycle opens, which is about a week after 2.50 final gets tagged, which in turn is planned to happen mid next month.

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']

* am/sparse-index-name-hash-fix (2025-05-21) 1 commit (merged to 'next' on 2025-05-27 at 63076a2233)
+ name-hash: don't add sparse directories in threaded lazy init

Avoid adding directory path to a sparse-index tree entries to the name-hash, since they would bloat the hashtable without anybody querying for them. This was done already for a single threaded part of the code, but now the multi-threaded code also does the same.

source: <[email protected]>

* cb/reftable-unused-portability-fix (2025-05-29) 1 commit
- reftable: make REFTABLE_UNUSED C99 compatible

Build fix.

Will merge to 'next'?
source: <[email protected]>

* jt/receive-pack-skip-connectivity-check (2025-05-20) 2 commits (merged to 'next' on 2025-05-22 at 3ced8c5d65)
+ builtin/receive-pack: add option to skip connectivity check
+ t5410: test receive-pack connectivity check

"git receive-pack" optionally learns not to care about connectivity check, which can be useful when the repository arranges to ensure connectivity by some other means.
source: <[email protected]>

* kh/notes-doc-fixes (2025-05-27) 9 commits
(merged to 'next' on 2025-05-29 at 29c8f36bb2)
+ doc: notes: use stuck form throughout
+ doc: notes: treat --stdin equally between copy/remove
+ doc: notes: point out copy --stdin use with argv
+ doc: notes: clearly state that --stripspace is the default
+ doc: notes: remove stripspace discussion from other options
+ doc: notes: rework --[no-]stripspace
+ doc: notes: split out options with negated forms
+ doc: config: mention core.commentChar on commit.cleanup
+ doc: stripspace: mention where the default comes from

"git notes --help" documentation updates.

source: <[email protected]>

* kn/passing-leak-tests (2025-05-20) 1 commit
(merged to 'next' on 2025-05-22 at bc0d708c5c)
+ t: remove unexpected SANITIZE_LEAK variables

Remove the leftover hints to the test framework to mark tests that do not pass the leak checker tests, as they should no longer be needed.
source: <20250520-kn-remove-unexpected-exported-v1-1-bb60cec57e84@gmail.com>

* mm/apply-reverse-mode-of-deleted-path (2025-05-27) 2 commits (merged to 'next' on 2025-05-29 at 8253df36c6)
+ apply: set file mode when --reverse creates a deleted file
+ t4129: test that git apply warns for unexpected mode changes

"git apply --index/--cached" when applying a deletion patch in reverse failed to give the mode bits of the path "removed" by the patch to the file it creates, which has been corrected.

source: <[email protected]>

* op/cvsserver-perl-warning (2025-05-27) 1 commit (merged to 'next' on 2025-05-29 at 9916ee1663)
+ cvsserver: remove unused escapeRefName function

Recent versions of Perl started warning against "! A =~ /pattern/" which does not negate the result of the matching. As it turns out that the problematic function is not even called, it was removed.

source: <[email protected]>

* ps/midx-negative-packfile-cache (2025-05-28) 2 commits (merged to 'next' on 2025-05-29 at 1d8aa44642)
+ midx: stop repeatedly looking up nonexistent packfiles
+ packfile: explain ordering of how we look up auxiliary pack files (this branch is used by tb/prepare-midx-pack-cleanup.)

When a stale .midx file refers to .pack files that no longer exist, we ended up checking for these non-existent files repeatedly, which has been optimized by memoizing the non-existence.

source: <20250528-pks-pack-avoid-stats-on-missing-v3-0-4cbd0e14bed8@pks.im>

* pw/midx-repack-overflow-fix (2025-05-22) 4 commits (merged to 'next' on 2025-05-27 at 52646da108)
+ midx docs: clarify tie breaking
+ midx: avoid negative array index
+ midx repack: avoid potential integer overflow on 64 bit systems
+ midx repack: avoid integer overflow on 32 bit systems

Integer overflow fix around code paths for "git multi-pack-index repack"..
cf. <aC/C9oQrcx/[email protected]>
source: <[email protected]>

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

* ag/send-email-edit-threading-fix (2025-05-29) 2 commits
- send-email: show the new message id assigned by outlook in the logs
- send-email: fix bug resulting in broken threads if a message is edited

"git send-email" incremented its internal message counter when a message was edited, which made logic that treats the first message specially misbehave, which has been corrected.

Will merge to 'next'?
source: <[email protected]>

* jc/signed-fast-export-is-experimental (2025-05-28) 1 commit
- fast-export: --signed-commits is experimental

source: <[email protected]>

* ly/load-bitmap-leakfix (2025-05-29) 2 commits
- pack-bitmap: add load corrupt bitmap test
- pack-bitmap: fix memory leak if load_bitmap() failed

Leakfix with a new and a bit invasive test.

Comments?
source: <[email protected]>

* ag/send-email-docs (2025-05-30) 4 commits
- docs: make the purpose of using app password for Gmail more clear in send-email
- docs: remove credential helper links for emails from gitcredentials
- docs: improve formatting in git-send-email documentation
- docs: add credential helper for yahoo and link Google's sendgmail tool

source: <[email protected]>

* rc/userdiff-r (2025-05-29) 1 commit
- userdiff: add support for R programming language

source: <[email protected]>

* wk/sparse-checkout-doc-fix (2025-05-30) 1 commit
- doc: sparse-checkout: use consistent inline list style

source: <[email protected]>

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

* ja/doc-synopsis-style (2025-05-27) 9 commits
- doc: convert git-switch manpage to new synopsis style
- doc: convert git-mergetool options to new synopsis style
- doc: convert git-mergetool manpage to new synopsis style
- doc: switch merge config description to new synopsis format
- doc: convert merge strategies to synopsis format
- doc: merge-options.adoc remove a misleading double negation
- doc: convert merge options to new synopsis format
- doc: convert git-merge manpage to new style
- doc: convert git-checkout manpage to new style

Doc mark-up fixes.

Will merge to 'next'?
source: <[email protected]>

* ps/maintenance-ref-lock (2025-05-30) 12 commits
- builtin/maintenance: fix locking race when handling "gc" task
- builtin/gc: avoid global state in gc_before_repack()
- usage: allow dying without writing an error message
- builtin/maintenance: fix locking race when packing refs and reflogs
- builtin/maintenance: let tasks do maintenance before and after detach
- builtin/maintenance: fix typedef for function pointers
- builtin/maintenance: extract function to run tasks
- builtin/maintenance: stop modifying global array of tasks
- builtin/maintenance: mark "--task=" and "--schedule=" as incompatible
- builtin/maintenance: centralize configuration of explicit tasks
- builtin/gc: drop redundant local variable
- builtin/gc: use designated field initializers for maintenance tasks

"git maintenance" lacked the care "git gc" had to avoid holding onto the repository lock for too long during packing refs, which has been remedied.

Comments?
source: <20250530-b4-pks-maintenance-ref-lock-race-v2-0-d04e2f93e51f@pks.im>

* tb/prepare-midx-pack-cleanup (2025-05-29) 5 commits
- midx: return a packed_git pointer from prepare_midx_pack()
- midx-write.c: extract inner loop from fill_packs_from_midx()
- midx-write.c: guard against incremental MIDXs in want_included_pack()
- midx: access pack names through nth_midxed_pack_name()
- Merge branch 'ps/midx-negative-packfile-cache' into tb/prepare-midx-pack-cleanup

Improvement on Multi-pack-index API.

Comments?
source: <[email protected]>

* ps/meson-tap-parse (2025-05-30) 10 commits
- meson: parse TAP output generated by our tests
- meson: introduce kwargs variable for tests
- test-lib: fail on unexpectedly passing tests
- t7815: fix unexpectedly passing test on macOS
- t/test-lib: fix TAP format for BASH_XTRACEFD warning
- t/test-lib: don't print shell traces to stdout
- t983*: use prereq to check for Python-specific git-b4(1) support
- t9822: use prereq to check for ISO-8859-1 support
- t: silence output from test_create_repo()
- t: stop announcing prereqs

Meson-based build/test framework now understands TAP output generated by our tests.

Will merge to 'next'?
source: <[email protected]>

* jw/doc-txt-to-adoc-refs (2025-05-21) 2 commits
- SQUASH???
- doc: update references to renamed AsciiDoc files

Some leftover references to documentation source files that no longer exist, due to recent ".txt" -> ".adoc" renaming, have been corrected.

Waiting for review response.
source: <[email protected]>

* jk/diff-no-index-with-pathspec (2025-05-22) 3 commits
- diff --no-index: support limiting by pathspec
- pathspec: add flag to indicate operation without repository
- pathspec: add match_leading_pathspec variant

"git diff --no-index dirA dirB" can limit the comparison with pathspec at the end of the command line, just like normal "git diff".

Comments?
source: <[email protected]>

* ag/doc-send-email-update-2 (2025-05-30) 4 commits
- docs: make the purpose of using app password for Gmail more clear in send-email
- docs: remove credential helper links for emails from gitcredentials
- docs: improve formatting in git-send-email documentation
- docs: add credential helper for yahoo and link Google's sendgmail tool

Documentation for "git send-email" has been updated with a bit more credential helper and OAuth information.

Will merge to 'next'?
source: <[email protected]>

* pw/stash-p-pathspec-fixes (2025-05-20) 2 commits
- stash: allow "git stash [<options>] --patch <pathspec>" to assume push
- stash: allow "git stash -p <pathspec>" to assume push again

"git stash -p <pathspec>" improvements.

Comments?
source: <[email protected]>

* kn/fetch-push-bulk-ref-update (2025-05-19) 4 commits (merged to 'next' on 2025-05-22 at 7ab014070f)
+ receive-pack: use batched reference updates
+ send-pack: fix memory leak around duplicate refs
+ fetch: use batched reference updates
+ refs: add function to translate errors to strings

"git push" and "git fetch" are taught to update refs in batches to gain performance.

Will cook in 'next'.
source: <20250519-501-update-git-fetch-1-to-use-partial-transactions-v3-0-6cdfd4f769b9@gmail.com>

* js/misc-defensive (2025-05-15) 14 commits
- shallow: handle missing shallow commits gracefully
- test-tool repository: check return value of lookup_commit()
- submodule: check return value of submodule_from_path()
- inherit_tracking(): defensive programming
- describe: defensive programming
- fetch: defensive programming
- push: defensive programming
- stash: defensive programming
- stash: defensive programming
- verify_commit_graph(): defensive programming
- unparse_commit(): defensive programming
- fetch-pack: defensive programming
- get_parent(): defensive programming
- revision: defensive programming

Assorted changes that please CodeQL.

Comments?
source: <[email protected]>

* kj/renamed-submodule (2025-05-27) 2 commits
- submodule: skip redundant active entries when pattern covers path
- submodule: prevent overwriting .gitmodules entry on path reuse

The case where a new submodule takes a path where used to be a completely different subproject is now dealt a bit better than before.

Comments?
source: <[email protected]>

* pw/update-thunderbird-patch-inline (2025-05-16) 1 commit
- contrib: update thunderbird-patch-inline

Update bitrotten instruction for sending patches via Thunderbird (in contrib/).

Comments?
source: <[email protected]>

* bc/stash-export-import (2025-05-22) 5 commits
- builtin/stash: provide a way to import stashes from a ref
- builtin/stash: provide a way to export stashes to a ref
- builtin/stash: factor out revision parsing into a function
- reflog-walk: expose read_complete_reflog
- object-name: make get_oid quietly return an error

An interchange format for stash entries is defined, and subcommand of "git stash" to import/export has been added.

Expecting a v7.
cf. <[email protected]>
source: <[email protected]>

* lm/add-p-context (2025-05-12) 4 commits
- add-patch: add diff.context command line overrides
- add-patch: respect diff.context configuration
- test: refactor to use "test_config"
- test: refactor to use "test_grep"

"git add/etc -p" now honors diff.context configuration variable, and learns to honor -U<n> option.

Comments?
source: <[email protected]>

* ps/contrib-sweep (2025-05-16) 12 commits
- Revert "contrib: remove "thunderbird-patch-inline""
- contrib: remove some scripts in "stats" directory
- contrib: remove "git-new-workdir"
- contrib: remove "emacs" directory
- contrib: remove "git-resurrect.sh"
- contrib: remove "persistent-https" remote helper
- contrib: remove "mw-to-git"
- contrib: remove "hooks" directory
- contrib: remove "thunderbird-patch-inline"
- contrib: remove remote-helper stubs
- contrib: remove "examples" directory
- contrib: remove "remotes2config.sh"

Remove bunch of stuff from contrib/ hierarchy.

I've reverted the thunderbird thing for now.
source: <[email protected]>

* ps/object-store (2025-05-14) 18 commits
- odb: rename read_object_with_reference()
- odb: rename pretend_object_file()
- odb: rename has_object()
- odb: rename repo_read_object_file()
- odb: rename oid_object_info()
- odb: trivial refactorings to get rid of the_repository
- odb: get rid of the_repository when handling submodule alternates
- odb: get rid of the_repository when handling the primary alternate
- odb: get rid of the_repository in for_each() functions
- odb: get rid of the_repository when handling alternates
- odb: get rid of the_repository in odb_mkstemp()
- odb: get rid of the_repository in assert_oid_type()
- odb: get rid of the_repository in find_odb()
- odb: introduce parent pointers
- object-store: rename files to "odb.{c,h}"
- object-store: rename object_directory to odb_alternate
- object-store: rename raw_object_store to object_database
- Merge branch 'ps/object-store-cleanup' into ps/object-store

Code clean-up around object access API.

Comments?
source: <20250514-pks-object-store-wo-the-repository-v3-0-47df1d4ead22@pks.im>

* cc/promisor-remote-capability (2025-05-19) 5 commits
- promisor-remote: use string constants for 'name' and 'url' too
- promisor-remote: allow a client to check fields
- promisor-remote: refactor how we parse advertised fields
- promisor-remote: allow a server to advertise more fields
- promisor-remote: refactor to get rid of 'struct strvec'

Comments?
source: <[email protected]>

* jc/you-still-use-whatchanged (2025-05-12) 6 commits (merged to 'next' on 2025-05-22 at e79dc9090e)
+ whatschanged: list it in BreakingChanges document
+ whatchanged: remove when built with WITH_BREAKING_CHANGES
+ whatchanged: require --i-still-use-this
+ tests: prepare for a world without whatchanged
+ doc: prepare for a world without whatchanged
+ you-still-use-that??: help deprecating commands for removal

"git whatchanged" that is longer to type than "git log --raw" which is its modern rough equivalent has outlived its usefulness more than 10 years ago. Plan to deprecate and remove it.

Will cook in 'next'.
source: <[email protected]>

* cc/fast-import-export-signature-names (2025-04-24) 1 commit . fast-(import|export): improve on the signature algorithm name

Clean up the way how signature on commit objects are exported to and imported from fast-import stream.

Expecting a reroll.
cf. <[email protected]>
cf. https://github.com/git/git/actions/runs/14671270673/job/41178138711
source: <[email protected]>

* sj/string-list-typefix (2025-04-22) 5 commits
- u-string-list: move "remove duplicates" test to "u-string-list.c"
- u-string-list: move "filter string" test to "u-string-list.c"
- u-string-list: move "test_split_in_place" to "u-string-list.c"
- u-string-list: move "test_split" into "u-string-list.c"
- string-list: fix sign compare warnings

Code and test clean-up around string-list API.

Expecting a reroll.
cf. <[email protected]>
source: <aAetW0dan8S3Fljq@ArchLinux>

* tb/midx-avoid-cruft-packs (2025-05-29) 9 commits
- repack: exclude cruft pack(s) from the MIDX where possible
- pack-objects: introduce '--stdin-packs=follow'
- pack-objects: swap 'show_{object,commit}_pack_hint'
- pack-objects: fix typo in 'show_object_pack_hint()'
- pack-objects: perform name-hash traversal for unpacked objects
- pack-objects: declare 'rev_info' for '--stdin-packs' earlier
- pack-objects: factor out handling '--stdin-packs'
- pack-objects: limit scope in 'add_object_entry_from_pack()'
- pack-objects: use standard option incompatibility functions

"pack-objects" has been taught to avoid pointing into objects in cruft packs from midx.

Ready?
source: <[email protected]>

* pb/status-rebase-fixes (2025-03-28) 4 commits
- wt-status: suggest 'git rebase --continue' to conclude 'merge' instruction
- wt-status: also abbreviate 'merge' and 'fixup -C' lines during rebase
- SQUASH??? - <CAPig+cS92W_gYuNsaTvQxiP3xBK7Wpg0__uVkgAU1x0OFJUZgQ@mail.gmail.com>
- rebase -r: do create merge commit after empty resolution

A few fixes around "git status" while "git rebase" is running, plus a corner case bug fix for "git rebase -r".

Expecting a (small and hopefully final) clarifying reroll. cf. <[email protected]> cf. <[email protected]>
source: <[email protected]>

* ds/path-walk-2 (2025-05-16) 13 commits
- pack-objects: allow --shallow and --path-walk
- path-walk: add new 'edge_aggressive' option
- pack-objects: thread the path-based compression
- pack-objects: refactor path-walk delta phase
- scalar: enable path-walk during push via config
- pack-objects: enable --path-walk via config
- repack: add --path-walk option
- t5538: add tests to confirm deltas in shallow pushes
- pack-objects: introduce GIT_TEST_PACK_PATH_WALK
- p5313: add performance tests for --path-walk
- pack-objects: update usage to match docs
- pack-objects: add --path-walk option
- pack-objects: extract should_attempt_deltas()

"git pack-objects" learns to find delta bases from blobs at the same path, using the --path-walk API.

Comments?
source: <[email protected]>

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

* tb/pack-bitmap-lookup-tables (2025-04-17) 4 commits . t/perf/lib-bitmap.sh: avoid test_perf during setup . t/perf: avoid testing bitmaps without lookup table . p5312: removed duplicate performance test script . pack-bitmap: write lookup table extension by default

Enable lookup tables extension in pack bitmap (and midx bitmap) by default.

Retracted.
cf. <[email protected]>
source: <[email protected]>

* ib/diff-S-G-with-longhand (2025-02-12) 10 commits
. diff: docs: Use --patch-{grep,modifies} over -G/-S . diff: --pickaxe-{all,regex} help: Add --patch-{grep,modifies} . diff: test: Use --patch-{grep,modifies} over -G/-S . completion: Support --patch-{grep,modifies}
. diff: --patch-{grep,modifies} arg names for -G and -S . docs: gitdiffcore: -G and -S: Use regex/string placeholders . diff: short help: Add -G and --pickaxe-grep
. diff: short help: Correct -S description
. diff: -G description: Correct copy/paste error
. t/t4209-log-pickaxe: Naming typo: -G takes a regex

The commands in the "diff" family learned longhands for "-S" and "-G" options.

Has been in "Expecting a reroll" state for too long.
source: <[email protected]>

* ps/pack-check-pack-first (2025-05-16) 1 commit . packfile: avoid access(3p) calls for missing packs

The packfile registration code used to check ".pack" file the last after checking ".keep" and other files; the ordering is reversed.

Superseded by the ps/midx-negative-packfile-cache topic
source: <20250516-pks-pack-avoid-stats-on-missing-v1-1-e2ef4d8798a3@pks.im>