{"thread":{"id":"63512","subject":"What's cooking in git.git (May 2025, #07; Fri, 23)","startedAt":"2025-05-24T02:16:07Z","lastAt":"2025-06-02T06:42:34Z","messageCount":7,"participants":["Junio C Hamano","Patrick Steinhardt","Justin Tobler"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"518819","messageId":"xmqqtt5au523.fsf@gitster.g","threadId":"63512","inReplyTo":null,"subject":"What's cooking in git.git (May 2025, #07; Fri, 23)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-05-24T02:16:04Z","receivedAt":"2025-05-24T02:16:07Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"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 are candidate to be in a\nfuture release).  Commits prefixed with '-' are only in 'seen', and\naren't considered \"accepted\" at all and may be annotated with an URL\nto a message that raises issues but they are no means exhaustive.  A\ntopic without enough support may be discarded after a long period of\nno activity (of course they can be resubmit when new interests\narise).\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[Graduated to 'master']\n\n* ag/send-email-hostname-f (2025-05-13) 1 commit\n  (merged to 'next' on 2025-05-16 at d5aa175e7d)\n + send-email: try to get fqdn by running hostname -f on Linux and macOS\n\n Teach \"git send-email\" to also consult `hostname -f` for mail\n domain to compute the identity given to SMTP servers.\n source: <PN3PR01MB959701F40F805351472EA4CCB897A@PN3PR01MB9597.INDPRD01.PROD.OUTLOOK.COM>\n\n\n* ds/scalar-no-maintenance (2025-05-14) 5 commits\n  (merged to 'next' on 2025-05-16 at f9364331c0)\n + scalar reconfigure: improve --maintenance docs\n  (merged to 'next' on 2025-05-08 at 1006cdd399)\n + scalar reconfigure: add --maintenance=<mode> option\n + scalar clone: add --no-maintenance option\n + scalar register: add --no-maintenance option\n + scalar: customize register_dir()'s behavior\n\n Two \"scalar\" subcommands that adds a repository that hasn't been\n under \"scalar\"'s control are taught an option not to enable the\n scheduled maintenance on it.\n source: <pull.1913.v3.git.1746582637.gitgitgadget@gmail.com>\n\n\n* en/replay-wo-the-repository (2025-05-14) 1 commit\n  (merged to 'next' on 2025-05-16 at 23608dbaab)\n + replay: replace the_repository with repo parameter passed to cmd_replay ()\n\n The dependency on the_repository variable has been reduced from the\n code paths in \"git replay\".\n source: <pull.1921.git.1747254806067.gitgitgadget@gmail.com>\n\n\n* js/ci-build-win-in-release-mode (2025-05-05) 1 commit\n  (merged to 'next' on 2025-05-22 at 213a3f0262)\n + ci(win+Meson): build in Release mode\n\n win+Meson CI pipeline, unlike other pipelines for Windows,\n used to build artifacts in develper mode, which has been changed to\n build them in release mode for consistency.\n source: <pull.1908.v2.git.1746282346370.gitgitgadget@gmail.com>\n\n\n* lo/json-writer-docs (2025-05-16) 2 commits\n  (merged to 'next' on 2025-05-16 at ab81da1b16)\n + json-writer: describe the usage of jw_* functions\n + json-writer: add docstrings to jw_* functions\n\n In-code docstring updates.\n source: <20250516010159.27042-1-lucasseikioshiro@gmail.com>\n\n\n* ly/pack-bitmap-load-leakfix (2025-05-12) 1 commit\n  (merged to 'next' on 2025-05-14 at 0be31eac6b)\n + pack-bitmap: fix memory leak if `load_bitmap_entries_v1` failed\n\n Leakfix.\n source: <pull.1962.git.git.1747052530271.gitgitgadget@gmail.com>\n\n\n* ps/ci-gitlab-enable-msvc-meson-job (2025-05-13) 1 commit\n  (merged to 'next' on 2025-05-16 at 81da2fbef9)\n + gitlab-ci: always run MSVC-based Meson job\n\n CI settings at GitLab has been updated to run MSVC based Meson job\n automatically (as opposed to be done only upon manual request).\n source: <20250428-pks-gitlab-ci-execute-win-meson-v1-1-f68683552b9e@pks.im>\n\n--------------------------------------------------\n[New Topics]\n\n* op/cvsserver-perl-warning (2025-05-22) 1 commit\n - cvsserver: avoid precedence problem between ! and %s\n\n Recent versions of Perl started warning against \"! A =~ /pattern/\"\n which does not negate the result of the matching.\n source: <pull.1925.v3.git.1747913206622.gitgitgadget@gmail.com>\n\n\n* ps/meson-tap-parse (2025-05-21) 4 commits\n - meson: parse TAP output generated by our tests\n - meson: introduce kwargs variable for tests\n - t/test-lib: don't print shell traces to stdout\n - t: fix cases where output breaks TAP format\n\n Meson-based build/test framework now understands TAP output\n generated by our tests.\n\n Expecting a reroll.\n cf. <aDCNqRAoGygwnAbq@pks.im>\n source: <20250506-pks-meson-tap-v1-0-5aaab2942a4c@pks.im>\n\n\n* am/sparse-index-name-hash-fix (2025-05-21) 1 commit\n - name-hash: don't add sparse directories in threaded lazy init\n\n Avoid adding directory path to a sparse-index tree entries to the\n name-hash, since they would bloat the hashtable without anybody\n querying for them.  This was done already for a single threaded\n part of the code, but now the multi-threaded code also does the\n same.\n\n Will merge to 'next'.\n source: <pull.1970.v3.git.git.1747862971672.gitgitgadget@gmail.com>\n\n\n* jw/doc-txt-to-adoc-refs (2025-05-21) 2 commits\n - SQUASH???\n - doc: update references to renamed AsciiDoc files\n\n Some leftover references to documentation source files that no\n longer exist, due to recent \".txt\" -> \".adoc\" renaming, have been\n corrected.\n\n Waiting for review response.\n source: <pull.1971.git.git.1747854310479.gitgitgadget@gmail.com>\n\n\n* jk/diff-no-index-with-pathspec (2025-05-22) 3 commits\n - diff --no-index: support limiting by pathspec\n - pathspec: add flag to indicate operation without repository\n - pathspec: add match_leading_pathspec variant\n\n \"git diff --no-index dirA dirB\" can limit the comparison with\n pathspec at the end of the command line, just like normal \"git\n diff\".\n\n Comments?\n source: <20250521232917.2333291-1-jacob.e.keller@intel.com>\n\n\n* mm/apply-reverse-mode-of-deleted-path (2025-05-23) 2 commits\n - apply: set file mode when --reverse creates a deleted file\n - t4129: test that git apply warns for unexpected mode changes\n\n \"git apply --index/--cached\" when applying a deletion patch in\n reverse failed to give the mode bits of the path \"removed\" by the\n patch to the file it creates, which has been corrected.\n\n Will merge to 'next'?\n source: <20250523172154.93810-1-mark@chromium.org>\n\n--------------------------------------------------\n[Cooking]\n\n* ag/doc-send-email-update-2 (2025-05-19) 4 commits\n - docs: remove credential helper links for emails from gitcredentials\n - docs: improve formatting in git-send-email documentation\n - docs: add credential helper for yahoo and link Google's sendgmail tool\n - Merge branch 'ag/doc-send-email' into ag/doc-send-email-update-2\n\n Documentation for \"git send-email\" has been updated with a bit more\n credential helper and OAuth information.\n\n Comments?\n source: <A84F634C-3423-48E2-B648-068A75423037@live.com>\n\n\n* es/meson-configure-build-options-fix (2025-05-19) 1 commit\n  (merged to 'next' on 2025-05-21 at b468031e13)\n + meson: reformat default options to workaround bug in `meson configure`\n\n Build procedure updates.\n\n Will merge to 'master'.\n source: <20250519170945.57746-1-eschwartz@gentoo.org>\n\n\n* jt/receive-pack-skip-connectivity-check (2025-05-20) 2 commits\n  (merged to 'next' on 2025-05-22 at 3ced8c5d65)\n + builtin/receive-pack: add option to skip connectivity check\n + t5410: test receive-pack connectivity check\n\n \"git receive-pack\" optionally learns not to care about connectivity\n check, which can be useful when the repository arranges to ensure\n connectivity by some other means.\n\n Will merge to 'master'.\n source: <20250520163218.263921-1-jltobler@gmail.com>\n\n\n* kh/notes-doc-fixes (2025-05-23) 9 commits\n - doc: notes: use stuck form throughout\n - doc: notes: treat --stdin equally between copy/remove\n - doc: notes: point out copy --stdin use with argv\n - doc: notes: clearly state that --stripspace is the default\n - doc: notes: remove stripspace discussion from other options\n - doc: notes: rework --[no-]stripspace\n - doc: notes: split out options with negated forms\n - doc: config: mention core.commentChar on commit.cleanup\n - doc: stripspace: mention where the default comes from\n\n \"git notes --help\" documentation updates.\n\n Comments?\n Getting much better.\n source: <cover.1748028010.git.code@khaugsbakk.name>\n\n\n* kn/passing-leak-tests (2025-05-20) 1 commit\n  (merged to 'next' on 2025-05-22 at bc0d708c5c)\n + t: remove unexpected SANITIZE_LEAK variables\n\n Remove the leftover hints to the test framework to mark tests that\n do not pass the leak checker tests, as they should no longer be\n needed.\n\n Will merge to 'master'.\n source: <20250520-kn-remove-unexpected-exported-v1-1-bb60cec57e84@gmail.com>\n\n\n* ps/midx-negative-packfile-cache (2025-05-20) 2 commits\n - midx: stop repeatedly looking up nonexistent packfiles\n - packfile: explain ordering of how we look up auxiliary pack files\n\n When a stale .midx file refers to .pack files that no longer exist,\n we ended up checking for these non-existent files repeatedly, which\n has been optimized by memoizing the non-existence.\n\n Will merge to 'next'?\n source: <20250520-pks-pack-avoid-stats-on-missing-v2-0-333c5217fb05@pks.im>\n\n\n* pw/midx-repack-overflow-fix (2025-05-22) 4 commits\n - midx docs: clarify tie breaking\n - midx: avoid negative array index\n - midx repack: avoid potential integer overflow on 64 bit systems\n - midx repack: avoid integer overflow on 32 bit systems\n\n Integer overflow fix around code paths for \"git multi-pack-index repack\"..\n\n Will merge to 'next'.\n cf. <aC/C9oQrcx/RiyP1@nand.local>\n source: <cover.1747929225.git.phillip.wood@dunelm.org.uk>\n\n\n* pw/stash-p-pathspec-fixes (2025-05-20) 2 commits\n - stash: allow \"git stash [<options>] --patch <pathspec>\" to assume push\n - stash: allow \"git stash -p <pathspec>\" to assume push again\n\n \"git stash -p <pathspec>\" improvements.\n\n Comments?\n source: <cover.1747733203.git.phillip.wood@dunelm.org.uk>\n\n\n* kn/fetch-push-bulk-ref-update (2025-05-19) 4 commits\n  (merged to 'next' on 2025-05-22 at 7ab014070f)\n + receive-pack: use batched reference updates\n + send-pack: fix memory leak around duplicate refs\n + fetch: use batched reference updates\n + refs: add function to translate errors to strings\n\n \"git push\" and \"git fetch\" are taught to update refs in batches to\n gain performance.\n\n Will cook in 'next'.\n source: <20250519-501-update-git-fetch-1-to-use-partial-transactions-v3-0-6cdfd4f769b9@gmail.com>\n\n\n* js/misc-defensive (2025-05-15) 14 commits\n - shallow: handle missing shallow commits gracefully\n - test-tool repository: check return value of `lookup_commit()`\n - submodule: check return value of `submodule_from_path()`\n - inherit_tracking(): defensive programming\n - describe: defensive programming\n - fetch: defensive programming\n - push: defensive programming\n - stash: defensive programming\n - stash: defensive programming\n - verify_commit_graph(): defensive programming\n - unparse_commit(): defensive programming\n - fetch-pack: defensive programming\n - get_parent(): defensive programming\n - revision: defensive programming\n\n Assorted changes that please CodeQL.\n\n Comments?\n source: <pull.1890.git.1747313139.gitgitgadget@gmail.com>\n\n\n* js/misc-fixes (2025-05-15) 11 commits\n  (merged to 'next' on 2025-05-21 at e803806107)\n + sequencer: stop pretending that an assignment is a condition\n + bundle-uri: avoid using undefined output of `sscanf()`\n + commit-graph: avoid using stale stack addresses\n + trace2: avoid \"futile conditional\"\n + Avoid redundant conditions\n + fetch: avoid unnecessary work when there is no current branch\n + has_dir_name(): make code more obvious\n + upload-pack: rename `enum` to reflect the operation\n + commit-graph: avoid malloc'ing a local variable\n + fetch: carefully clear local variable's address after use\n + commit: simplify code\n\n Assorted fixes for issues found with CodeQL.\n\n Will merge to 'master'.\n source: <pull.1891.git.1747314709.gitgitgadget@gmail.com>\n\n\n* ly/commit-graph-fill-oids-leakfix (2025-05-15) 1 commit\n  (merged to 'next' on 2025-05-19 at 972bbc7c11)\n + commit-graph: fix memory leak when `fill_oids_from_packs()` fails\n\n Leakfix.\n\n Will merge to 'master'.\n source: <pull.1957.v3.git.git.1746779435536.gitgitgadget@gmail.com>\n\n\n* ly/mailinfo-decode-header-leakfix (2025-05-15) 1 commit\n  (merged to 'next' on 2025-05-19 at 87066488fc)\n + mailinfo: fix pointential memory leak if `decode_header` failed\n\n Leakfix.\n\n Will merge to 'master'.\n source: <pull.1956.v4.git.git.1747104551204.gitgitgadget@gmail.com>\n\n\n* ly/sequencer-rearrange-leakfix (2025-05-15) 1 commit\n  (merged to 'next' on 2025-05-19 at f0ad6cfe21)\n + sequencer: fix memory leak if `todo_list_rearrange_squash()` failed\n\n Leakfix.\n\n Will merge to 'master'.\n source: <pull.1965.git.git.1747230808770.gitgitgadget@gmail.com>\n\n\n* en/sequencer-comment-messages (2025-05-16) 1 commit\n  (merged to 'next' on 2025-05-21 at b6516794fb)\n + sequencer: make it clearer that commit descriptions are just comments\n\n Prefix '#' to the commit title in the \"rebase -i\" todo file, just\n like a merge commit being replayed.\n\n Will merge to 'master'.\n source: <pull.1923.v2.git.1747412786573.gitgitgadget@gmail.com>\n\n\n* jk/no-funny-object-types (2025-05-16) 13 commits\n  (merged to 'next' on 2025-05-19 at 4c995dbd23)\n + object-file: drop support for writing objects with unknown types\n + hash-object: handle --literally with OPT_NEGBIT\n + hash-object: merge HASH_* and INDEX_* flags\n + hash-object: stop allowing unknown types\n + t: add lib-loose.sh\n + t/helper: add zlib test-tool\n + oid_object_info(): drop type_name strbuf\n + fsck: stop using object_info->type_name strbuf\n + oid_object_info_convert(): stop using string for object type\n + cat-file: use type enum instead of buffer for -t option\n + object-file: drop OBJECT_INFO_ALLOW_UNKNOWN_TYPE flag\n + cat-file: make --allow-unknown-type a noop\n + object-file.h: fix typo in variable declaration\n\n Support to create a loose object file with unknown object type has\n been dropped.\n\n Will merge to 'master'.\n source: <20250516044916.GA21985@coredump.intra.peff.net>\n\n\n* kj/my-first-contribution-updates (2025-05-19) 3 commits\n  (merged to 'next' on 2025-05-21 at f8c92423fb)\n + docs: replace git_config to repo_config\n + docs: clarify cmd_psuh signature and explain UNUSED macro\n + docs: remove unused mentoring mailing list reference\n\n Doc updates.\n\n Will merge to 'master'.\n source: <20250518074317.73367-1-jayatheerthkulkarni2005@gmail.com>\n\n\n* kj/renamed-submodule (2025-05-16) 1 commit\n - submodule: prevent overwriting .gitmodules entry on path reuse\n\n The case where a new submodule takes a path where used to be a\n completely different subproject is now dealt a bit better than\n before.\n\n Comments?\n source: <20250516174934.45008-1-jayatheerthkulkarni2005@gmail.com>\n\n\n* pw/update-thunderbird-patch-inline (2025-05-16) 1 commit\n - contrib: update thunderbird-patch-inline\n\n Update bitrotten instruction for sending patches via Thunderbird\n (in contrib/).\n\n Comments?\n source: <20250516135540.218937-1-phillip.wood123@gmail.com>\n\n\n* bc/stash-export-import (2025-05-22) 5 commits\n - builtin/stash: provide a way to import stashes from a ref\n - builtin/stash: provide a way to export stashes to a ref\n - builtin/stash: factor out revision parsing into a function\n - reflog-walk: expose read_complete_reflog\n - object-name: make get_oid quietly return an error\n\n An interchange format for stash entries is defined, and subcommand\n of \"git stash\" to import/export has been added.\n\n Will merge to 'next'?\n source: <20250522185524.18398-1-sandals@crustytoothpaste.net>\n\n\n* ds/sparse-apply-add-p (2025-05-16) 4 commits\n  (merged to 'next' on 2025-05-21 at 933f316786)\n + p2000: add performance test for patch-mode commands\n + reset: integrate sparse index with --patch\n + git add: make -p/-i aware of sparse index\n + apply: integrate with the sparse index\n\n \"git apply\" and \"git add -i/-p\" code paths no longer unnecessarily\n expand sparse-index while working.\n\n Will merge to 'master'.\n Kicked out of next and then is about to come back.\n source: <pull.1914.v2.git.1747407330.gitgitgadget@gmail.com>\n\n\n* en/merge-tree-check (2025-05-16) 2 commits\n  (merged to 'next' on 2025-05-19 at c3278b91fa)\n + merge-tree: add a new --quiet flag\n + merge-ort: add a new mergeability_only option\n\n \"git merge-tree\" learned an option to see if it resolves cleanly\n without actually creating a result.\n\n Will merge to 'master'.\n source: <pull.1920.v4.git.1747425858.gitgitgadget@gmail.com>\n\n\n* lm/add-p-context (2025-05-12) 4 commits\n - add-patch: add diff.context command line overrides\n - add-patch: respect diff.context configuration\n - test: refactor to use \"test_config\"\n - test: refactor to use \"test_grep\"\n\n \"git add/etc -p\" now honors diff.context configuration variable,\n and learns to honor -U<n> option.\n\n Comments?\n source: <pull.1915.v2.git.1746884789.gitgitgadget@gmail.com>\n\n\n* ps/contrib-sweep (2025-05-16) 12 commits\n - Revert \"contrib: remove \"thunderbird-patch-inline\"\"\n - contrib: remove some scripts in \"stats\" directory\n - contrib: remove \"git-new-workdir\"\n - contrib: remove \"emacs\" directory\n - contrib: remove \"git-resurrect.sh\"\n - contrib: remove \"persistent-https\" remote helper\n - contrib: remove \"mw-to-git\"\n - contrib: remove \"hooks\" directory\n - contrib: remove \"thunderbird-patch-inline\"\n - contrib: remove remote-helper stubs\n - contrib: remove \"examples\" directory\n - contrib: remove \"remotes2config.sh\"\n\n Remove bunch of stuff from contrib/ hierarchy.\n\n I've reverted the thunderbird thing for now.\n source: <20250512-pks-contrib-spring-cleanup-v3-0-32e151b0bfb0@pks.im>\n\n\n* rj/build-tweaks-part2 (2025-05-19) 5 commits\n  (merged to 'next' on 2025-05-19 at fea40b8fb1)\n + configure.ac: upgrade to a compilation check for sysinfo\n + meson.build: correct setting of GIT_EXEC_PATH\n + meson: correct path to system config/attribute files\n + meson: correct install location of YAML.pm\n + meson.build: quote the GITWEBDIR build configuration\n\n Updates to meson-based build procedure.\n\n Will merge to 'master'.\n source: <20250519162523.1001478-1-ramsay@ramsayjones.plus.com>\n\n\n* ps/object-store (2025-05-14) 18 commits\n - odb: rename `read_object_with_reference()`\n - odb: rename `pretend_object_file()`\n - odb: rename `has_object()`\n - odb: rename `repo_read_object_file()`\n - odb: rename `oid_object_info()`\n - odb: trivial refactorings to get rid of `the_repository`\n - odb: get rid of `the_repository` when handling submodule alternates\n - odb: get rid of `the_repository` when handling the primary alternate\n - odb: get rid of `the_repository` in `for_each()` functions\n - odb: get rid of `the_repository` when handling alternates\n - odb: get rid of `the_repository` in `odb_mkstemp()`\n - odb: get rid of `the_repository` in `assert_oid_type()`\n - odb: get rid of `the_repository` in `find_odb()`\n - odb: introduce parent pointers\n - object-store: rename files to \"odb.{c,h}\"\n - object-store: rename `object_directory` to `odb_alternate`\n - object-store: rename `raw_object_store` to `object_database`\n - Merge branch 'ps/object-store-cleanup' into ps/object-store\n\n Code clean-up around object access API.\n\n Comments?\n source: <20250514-pks-object-store-wo-the-repository-v3-0-47df1d4ead22@pks.im>\n\n\n* sj/use-mmap-to-check-packed-refs (2025-05-14) 3 commits\n  (merged to 'next' on 2025-05-21 at a0ed4fdf95)\n + packed-backend: mmap large \"packed-refs\" file during fsck\n + packed-backend: extract snapshot allocation in `load_contents`\n + packed-backend: fsck should warn when \"packed-refs\" file is empty\n\n The code path to access the \"packed-refs\" file while \"fsck\" is\n taught to mmap the file, instead of reading the whole file in the\n memory.\n\n Will merge to 'master'.\n source: <aCS7O8tNekg_u9Wp@ArchLinux>\n\n\n* cc/promisor-remote-capability (2025-05-19) 5 commits\n - promisor-remote: use string constants for 'name' and 'url' too\n - promisor-remote: allow a client to check fields\n - promisor-remote: refactor how we parse advertised fields\n - promisor-remote: allow a server to advertise more fields\n - promisor-remote: refactor to get rid of 'struct strvec'\n\n Comments?\n source: <20250519141259.3061550-1-christian.couder@gmail.com>\n\n\n* jc/doc-synopsis-option-markup (2025-05-12) 4 commits\n  (merged to 'next' on 2025-05-21 at cb897d1302)\n + git-var doc: fix usage of $ENV_VAR vs ENV_VAR\n + git-verify-* doc: update mark-up of synopsis option descriptions\n + git-{var,write-tree} docs: update mark-up of synopsis option descriptions\n + git-daemon doc: update mark-up of synopsis option descriptions\n\n Doc mark-up fixes.\n\n Will merge to 'master'.\n source: <20250510123346.20927-1-jn.avila@free.fr>\n\n\n* jc/you-still-use-whatchanged (2025-05-12) 6 commits\n  (merged to 'next' on 2025-05-22 at e79dc9090e)\n + whatschanged: list it in BreakingChanges document\n + whatchanged: remove when built with WITH_BREAKING_CHANGES\n + whatchanged: require --i-still-use-this\n + tests: prepare for a world without whatchanged\n + doc: prepare for a world without whatchanged\n + you-still-use-that??: help deprecating commands for removal\n\n \"git whatchanged\" that is longer to type than \"git log --raw\"\n which is its modern rough equivalent has outlived its usefulness\n more than 10 years ago.  Plan to deprecate and remove it.\n\n Will cook in 'next'.\n source: <20250512190311.1451556-1-gitster@pobox.com>\n\n\n* cc/fast-import-export-signature-names (2025-04-24) 1 commit\n . fast-(import|export): improve on the signature algorithm name\n\n Clean up the way how signature on commit objects are exported to\n and imported from fast-import stream.\n\n Expecting a reroll.\n cf. <aAq1nvcPRlIPal5l@tapette.crustytoothpaste.net>\n cf. https://github.com/git/git/actions/runs/14671270673/job/41178138711\n source: <20250424203904.909777-1-christian.couder@gmail.com>\n\n\n* sj/string-list-typefix (2025-04-22) 5 commits\n - u-string-list: move \"remove duplicates\" test to \"u-string-list.c\"\n - u-string-list: move \"filter string\" test to \"u-string-list.c\"\n - u-string-list: move \"test_split_in_place\" to \"u-string-list.c\"\n - u-string-list: move \"test_split\" into \"u-string-list.c\"\n - string-list: fix sign compare warnings\n\n Code and test clean-up around string-list API.\n\n Expecting a reroll.\n cf. <aA8vSPKdznjzBf6W@pks.im>\n source: <aAetW0dan8S3Fljq@ArchLinux>\n\n\n* tb/midx-avoid-cruft-packs (2025-04-15) 9 commits\n - repack: exclude cruft pack(s) from the MIDX where possible\n - pack-objects: introduce '--stdin-packs=follow'\n - pack-objects: swap 'show_{object,commit}_pack_hint'\n - pack-objects: fix typo in 'show_object_pack_hint()'\n - pack-objects: perform name-hash traversal for unpacked objects\n - pack-objects: declare 'rev_info' for '--stdin-packs' earlier\n - pack-objects: factor out handling '--stdin-packs'\n - pack-objects: limit scope in 'add_object_entry_from_pack()'\n - pack-objects: use standard option incompatibility functions\n\n \"pack-objects\" has been taught to avoid pointing into objects in\n cruft packs from midx.\n\n Expecting a (hopefully small and final) reroll?\n cf.<CABPp-BEukTWwsuC7MMR8D5_UAhyw-LgT=DsPKAWeR_ZmVVhjzQ@mail.gmail.com>\n source: <cover.1744757204.git.me@ttaylorr.com>\n\n\n* tb/pack-bitmap-lookup-tables (2025-04-17) 4 commits\n - t/perf/lib-bitmap.sh: avoid test_perf during setup\n - t/perf: avoid testing bitmaps without lookup table\n - p5312: removed duplicate performance test script\n - pack-bitmap: write lookup table extension by default\n\n Enable lookup tables extension in pack bitmap (and midx bitmap) by\n default.\n\n Comments?\n source: <cover.1744924321.git.me@ttaylorr.com>\n\n\n* pb/status-rebase-fixes (2025-03-28) 4 commits\n - wt-status: suggest 'git rebase --continue' to conclude 'merge' instruction\n - wt-status: also abbreviate 'merge' and 'fixup -C' lines during rebase\n - SQUASH??? - <CAPig+cS92W_gYuNsaTvQxiP3xBK7Wpg0__uVkgAU1x0OFJUZgQ@mail.gmail.com>\n - rebase -r: do create merge commit after empty resolution\n\n A few fixes around \"git status\" while \"git rebase\" is running,\n plus a corner case bug fix for \"git rebase -r\".\n\n Expecting a (small and hopefully final) clarifying reroll.\n cf. <c2f93d99-2f4d-ee6d-7087-42320c6df0f2@gmx.de>\n cf. <e9700234-324d-dc63-d91e-9b8f36fabc79@gmail.com>\n source: <pull.1897.git.1743181401.gitgitgadget@gmail.com>\n\n\n* md/userdiff-bash-shell-function (2025-05-16) 1 commit\n  (merged to 'next' on 2025-05-16 at 1fe8b68a72)\n + userdiff: extend Bash pattern to cover more shell function forms\n\n The userdiff pattern for shell scripts has been updated to cope\n with more bash-isms.\n\n Will merge to 'master'.\n cf. <a72235c1-625a-4b90-8111-629b5a6ee7c2@kdbg.org>\n source: <20250516144515.49514-2-dhar61595@gmail.com>\n\n\n* ds/path-walk-2 (2025-05-16) 13 commits\n - pack-objects: allow --shallow and --path-walk\n - path-walk: add new 'edge_aggressive' option\n - pack-objects: thread the path-based compression\n - pack-objects: refactor path-walk delta phase\n - scalar: enable path-walk during push via config\n - pack-objects: enable --path-walk via config\n - repack: add --path-walk option\n - t5538: add tests to confirm deltas in shallow pushes\n - pack-objects: introduce GIT_TEST_PACK_PATH_WALK\n - p5313: add performance tests for --path-walk\n - pack-objects: update usage to match docs\n - pack-objects: add --path-walk option\n - pack-objects: extract should_attempt_deltas()\n\n \"git pack-objects\" learns to find delta bases from blobs at the\n same path, using the --path-walk API.\n\n Comments?\n source: <pull.1819.v3.git.1747419124.gitgitgadget@gmail.com>\n\n--------------------------------------------------\n[Discarded]\n\n* ib/diff-S-G-with-longhand (2025-02-12) 10 commits\n . diff: docs: Use --patch-{grep,modifies} over -G/-S\n . diff: --pickaxe-{all,regex} help: Add --patch-{grep,modifies}\n . diff: test: Use --patch-{grep,modifies} over -G/-S\n . completion: Support --patch-{grep,modifies}\n . diff: --patch-{grep,modifies} arg names for -G and -S\n . docs: gitdiffcore: -G and -S: Use regex/string placeholders\n . diff: short help: Add -G and --pickaxe-grep\n . diff: short help: Correct -S description\n . diff: -G description: Correct copy/paste error\n . t/t4209-log-pickaxe: Naming typo: -G takes a regex\n\n The commands in the \"diff\" family learned longhands for \"-S\" and\n \"-G\" options.\n\n Has been in \"Expecting a reroll\" state for too long.\n source: <20250212032657.1807939-1-illia.bobyr@gmail.com>\n\n\n* ps/pack-check-pack-first (2025-05-16) 1 commit\n . packfile: avoid access(3p) calls for missing packs\n\n The packfile registration code used to check \".pack\" file the last\n after checking \".keep\" and other files; the ordering is reversed.\n\n Superseded by the ps/midx-negative-packfile-cache topic\n source: <20250516-pks-pack-avoid-stats-on-missing-v1-1-e2ef4d8798a3@pks.im>\n"},{"id":"518962","messageId":"aDV0jwaQ2DlcM0lZ@pks.im","threadId":"63512","inReplyTo":"xmqqtt5au523.fsf@gitster.g","subject":"Re: What's cooking in git.git (May 2025, #07; Fri, 23)","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2025-05-27T08:15:11Z","receivedAt":"2025-05-27T08:15:20Z","isPatch":false,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"On Fri, May 23, 2025 at 07:16:04PM -0700, Junio C Hamano wrote:\n> * ps/midx-negative-packfile-cache (2025-05-20) 2 commits\n>  - midx: stop repeatedly looking up nonexistent packfiles\n>  - packfile: explain ordering of how we look up auxiliary pack files\n> \n>  When a stale .midx file refers to .pack files that no longer exist,\n>  we ended up checking for these non-existent files repeatedly, which\n>  has been optimized by memoizing the non-existence.\n> \n>  Will merge to 'next'?\n>  source: <20250520-pks-pack-avoid-stats-on-missing-v2-0-333c5217fb05@pks.im>\n\nI wanted to send one more iteration of this where I hide the ugliness of\n`(void *)(intptr_t)-1` behind a macro, as suggested. But I saw that\nTaylor has built on top of these patches, so I don't want to make his\nlife harder. Cc'd him.\n\n> * ps/object-store (2025-05-14) 18 commits\n>  - odb: rename `read_object_with_reference()`\n>  - odb: rename `pretend_object_file()`\n>  - odb: rename `has_object()`\n>  - odb: rename `repo_read_object_file()`\n>  - odb: rename `oid_object_info()`\n>  - odb: trivial refactorings to get rid of `the_repository`\n>  - odb: get rid of `the_repository` when handling submodule alternates\n>  - odb: get rid of `the_repository` when handling the primary alternate\n>  - odb: get rid of `the_repository` in `for_each()` functions\n>  - odb: get rid of `the_repository` when handling alternates\n>  - odb: get rid of `the_repository` in `odb_mkstemp()`\n>  - odb: get rid of `the_repository` in `assert_oid_type()`\n>  - odb: get rid of `the_repository` in `find_odb()`\n>  - odb: introduce parent pointers\n>  - object-store: rename files to \"odb.{c,h}\"\n>  - object-store: rename `object_directory` to `odb_alternate`\n>  - object-store: rename `raw_object_store` to `object_database`\n>  - Merge branch 'ps/object-store-cleanup' into ps/object-store\n> \n>  Code clean-up around object access API.\n> \n>  Comments?\n>  source: <20250514-pks-object-store-wo-the-repository-v3-0-47df1d4ead22@pks.im>\n\nI think the only outstanding discussion is whether to name things\n`odb_alternate` or `odb_source` [1]. In case others agree that\n`odb_source` is a better name I'm happy to revise, but if not I'd rather\nkeep it as-is.\n\nOther than that I think the patch series is in a good shape.\n\nThanks!\n\nPatrick\n\n[1]: <tjsbotrnrffykmi3letktpb3bly4nqw4wxzyrszgbln7pznem4@3kwiq4zvaebw>\n"},{"id":"519008","messageId":"xmqqtt56ov4k.fsf@gitster.g","threadId":"63512","inReplyTo":"aDV0jwaQ2DlcM0lZ@pks.im","subject":"Re: What's cooking in git.git (May 2025, #07; Fri, 23)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-05-27T16:50:51Z","receivedAt":"2025-05-27T16:50:54Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Patrick Steinhardt <ps@pks.im> writes:\n\n> On Fri, May 23, 2025 at 07:16:04PM -0700, Junio C Hamano wrote:\n>> * ps/midx-negative-packfile-cache (2025-05-20) 2 commits\n>>  - midx: stop repeatedly looking up nonexistent packfiles\n>>  - packfile: explain ordering of how we look up auxiliary pack files\n>> \n>>  When a stale .midx file refers to .pack files that no longer exist,\n>>  we ended up checking for these non-existent files repeatedly, which\n>>  has been optimized by memoizing the non-existence.\n>> \n>>  Will merge to 'next'?\n>>  source: <20250520-pks-pack-avoid-stats-on-missing-v2-0-333c5217fb05@pks.im>\n>\n> I wanted to send one more iteration of this where I hide the ugliness of\n> `(void *)(intptr_t)-1` behind a macro, as suggested. But I saw that\n> Taylor has built on top of these patches, so I don't want to make his\n> life harder. Cc'd him.\n\nYeah, I do not think I've merged Taylor's work anywhere yet, but I\ndid notice that it was built on top of this topic.  I think it is\nperfectly OK to clean it up before your topic hits 'next'; adjusting\nto such a change is a responsibility of the author of a topic that\ndepends on anything not in 'next' yet.\n\n> I think the only outstanding discussion is whether to name things\n> `odb_alternate` or `odb_source` [1]. In case others agree that\n> `odb_source` is a better name I'm happy to revise, but if not I'd rather\n> keep it as-is.\n\nThe model in which the term \"alternates\" was born is \"A repository\nhas its own object directory, the primary one, and in addition it\ncan borrow from zero or more alternate object directories that are\nused by other repositories\".  The presence of the primary makes the\nword \"alternate\" meaningful.\n\nIs the model now \"A repository has one object store, which consists\nof one or more X, all of which are equals\"?  If there is no primary\nthat is more special than others, then calling X an \"alternate\" may\nindeed sound funny, although (1) I do not find it terribly confusing\nand (2) I do not find \"source\" much better, either.\n\nThe names we use to call the collection and the underlying\nimplementations of the collection in the reference world\nunfortunately does not quite help to guide us, as we do not take two\nimplementations and compose into one unified view, which is what we\nare doing in the object store.  Hmmm...\n\nWe call pathspec elements given on the command line collectively a\npathspec.  \"Object store elements like loose object directories and\npackfiles form the object store\"?  That may be a mouthful.  I dunno.\n\n\n\n"},{"id":"519017","messageId":"shpx4piigp5sqgpbzx4vdgu4zdn7z3ykxhu2cdyjh5vpr6zbqb@rf2sxg6hukpd","threadId":"63512","inReplyTo":"xmqqtt56ov4k.fsf@gitster.g","subject":"Re: What's cooking in git.git (May 2025, #07; Fri, 23)","fromName":"Justin Tobler","fromEmail":"jltobler@gmail.com","sentAt":"2025-05-27T19:45:43Z","receivedAt":"2025-05-27T19:50:30Z","isPatch":false,"sender":{"key":"jltobler@gmail.com","avatar":"https://avatars.githubusercontent.com/u/53454972?v=4"},"body":"On 25/05/27 09:50AM, Junio C Hamano wrote:\n> Patrick Steinhardt <ps@pks.im> writes:\n> > I think the only outstanding discussion is whether to name things\n> > `odb_alternate` or `odb_source` [1]. In case others agree that\n> > `odb_source` is a better name I'm happy to revise, but if not I'd rather\n> > keep it as-is.\n> \n> The model in which the term \"alternates\" was born is \"A repository\n> has its own object directory, the primary one, and in addition it\n> can borrow from zero or more alternate object directories that are\n> used by other repositories\".  The presence of the primary makes the\n> word \"alternate\" meaningful.\n> \n> Is the model now \"A repository has one object store, which consists\n> of one or more X, all of which are equals\"?  If there is no primary\n> that is more special than others, then calling X an \"alternate\" may\n> indeed sound funny, although (1) I do not find it terribly confusing\n> and (2) I do not find \"source\" much better, either.\n\nMy understanding is that the object store still has a primary X and zero\nor more alternative X. The idea is that eventually, with pluggable ODBs,\nX can be a different backend/provider instead of just being \"files\". If\nthis is the case, calling X an \"alternate\" would mean we have a primary\n\"alternate\" and potentially a set of \"alternate\" alternates.\n\nThis sounds a bit odd and doesn't quite match what I would intuitively\nexpect. But, I also don't find it super confusing either.\n\n> The names we use to call the collection and the underlying\n> implementations of the collection in the reference world\n> unfortunately does not quite help to guide us, as we do not take two\n> implementations and compose into one unified view, which is what we\n> are doing in the object store.  Hmmm...\n\nSimilar to references, I still think of a pluggable ODB as a \"backend\".\nThe main difference being that with references there is only a single\nbackend active (\"file\" or \"reftables\") at a time, while for the object\nstore there could be multiple.\n\n-Justin\n\n> We call pathspec elements given on the command line collectively a\n> pathspec.  \"Object store elements like loose object directories and\n> packfiles form the object store\"?  That may be a mouthful.  I dunno.\n"},{"id":"519213","messageId":"aDl-yd2fh4qVRB_V@pks.im","threadId":"63512","inReplyTo":"shpx4piigp5sqgpbzx4vdgu4zdn7z3ykxhu2cdyjh5vpr6zbqb@rf2sxg6hukpd","subject":"Re: What's cooking in git.git (May 2025, #07; Fri, 23)","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2025-05-30T09:47:53Z","receivedAt":"2025-05-30T09:47:57Z","isPatch":false,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"On Tue, May 27, 2025 at 02:45:43PM -0500, Justin Tobler wrote:\n> On 25/05/27 09:50AM, Junio C Hamano wrote:\n> > Patrick Steinhardt <ps@pks.im> writes:\n> > > I think the only outstanding discussion is whether to name things\n> > > `odb_alternate` or `odb_source` [1]. In case others agree that\n> > > `odb_source` is a better name I'm happy to revise, but if not I'd rather\n> > > keep it as-is.\n> > \n> > The model in which the term \"alternates\" was born is \"A repository\n> > has its own object directory, the primary one, and in addition it\n> > can borrow from zero or more alternate object directories that are\n> > used by other repositories\".  The presence of the primary makes the\n> > word \"alternate\" meaningful.\n> > \n> > Is the model now \"A repository has one object store, which consists\n> > of one or more X, all of which are equals\"?  If there is no primary\n> > that is more special than others, then calling X an \"alternate\" may\n> > indeed sound funny, although (1) I do not find it terribly confusing\n> > and (2) I do not find \"source\" much better, either.\n> \n> My understanding is that the object store still has a primary X and zero\n> or more alternative X. The idea is that eventually, with pluggable ODBs,\n> X can be a different backend/provider instead of just being \"files\". If\n> this is the case, calling X an \"alternate\" would mean we have a primary\n> \"alternate\" and potentially a set of \"alternate\" alternates.\n> \n> This sounds a bit odd and doesn't quite match what I would intuitively\n> expect. But, I also don't find it super confusing either.\n\nYeah, I understand that confusion indeed. I don't think that the other\nproposals we've got are a lot better, either:\n\n  - `odb_backend` was shot down because it may cause the association\n    that one object database has one backend. But backends are per\n    alternate, so there's a mismatch in expectations.\n\n  - `odb_source` is better, but we now have the problem that we use\n    \"alternate\" interchangably in most cases where we also use\n    `odb_source`. This will likely lead to somewhat awkward interfaces.\n\nThe problem with `odb_source` might eventually go away once we clearly\ndistinguish the \"alternates\" concept from the low-level mechanism to\naccess objects. But I'm just not certain at all whether it won't cause\nmore confusion when in most cases \"alternates\" and \"sources\" can be used\nsomewhat interchangably.\n\nI dunno. The more I think about this the more I start to like the\n`odb_source` name.\n\n> > The names we use to call the collection and the underlying\n> > implementations of the collection in the reference world\n> > unfortunately does not quite help to guide us, as we do not take two\n> > implementations and compose into one unified view, which is what we\n> > are doing in the object store.  Hmmm...\n> \n> Similar to references, I still think of a pluggable ODB as a \"backend\".\n> The main difference being that with references there is only a single\n> backend active (\"file\" or \"reftables\") at a time, while for the object\n> store there could be multiple.\n\nYeah, that's basically the major source of confusion I want to avoid\nwith the \"backend\" terminology. I really do want to make it explicit\nthat there is not only one backend, but multiple ones.\n\nPatrick\n"},{"id":"519270","messageId":"xmqqwm9yf4gy.fsf@gitster.g","threadId":"63512","inReplyTo":"aDl-yd2fh4qVRB_V@pks.im","subject":"Re: What's cooking in git.git (May 2025, #07; Fri, 23)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-05-30T16:28:13Z","receivedAt":"2025-05-30T16:28:16Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Patrick Steinhardt <ps@pks.im> writes:\n\n> Yeah, I understand that confusion indeed. I don't think that the other\n> proposals we've got are a lot better, either:\n>\n>   - `odb_backend` was shot down because it may cause the association\n>     that one object database has one backend. But backends are per\n>     alternate, so there's a mismatch in expectations.\n\nI do not see where that association would come from, though.  But I\nagree with the other objection that the word \"backend\" is more about\nimplementation and less about an instance that is realized by that\nimplementation, i.e. two such components that runs the code for a\nsingle backend may be part of a single object database.\n\n>   - `odb_source` is better, but we now have the problem that we use\n>     \"alternate\" interchangably in most cases where we also use\n>     `odb_source`. This will likely lead to somewhat awkward interfaces.\n>\n> The problem with `odb_source` might eventually go away once we clearly\n> distinguish the \"alternates\" concept from the low-level mechanism to\n> access objects. But I'm just not certain at all whether it won't cause\n> more confusion when in most cases \"alternates\" and \"sources\" can be used\n> somewhat interchangably.\n>\n> I dunno. The more I think about this the more I start to like the\n> `odb_source` name.\n\nYeah, I do not mind calling the instantiation backed by a backend\nimplementation a odb_source.\n\nIn any case, when deciding the terminology, we should look at what\nwe currently have in the glossary and imagine how they should look\nlike in the updated world.  Currently,\n\n - \"alternate object database\" is described as inheriting the\n   entirety of another \"object database\" (we deliberately do not say\n   that this other object database belongs to another repository, as\n   a standalone object database is a valid option).\n\n - \"object database\" is described as what holds a set of \"objects\".\n   There is no complication here ;-)\n\nWhen treating the set of objects stored in $GIT_DIR/objects/??/\ndirectories (i.e. \"loose objects\") and the set of objects stored in\n$GIT_DIR/objects/pack/ directory (i.e. \"packed objects\") as two\nseparate odb_something, with a vision that we may add different\nimplementations of such collection later, it would be very confusing\nto call each of them \"an alternate\".  \"source\" may not be ideal, but\nit is the best among what we collectively have come up with, I think.\n"},{"id":"519373","messageId":"aD1H0EFE6lnWXBMs@pks.im","threadId":"63512","inReplyTo":"xmqqwm9yf4gy.fsf@gitster.g","subject":"Re: What's cooking in git.git (May 2025, #07; Fri, 23)","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2025-06-02T06:42:24Z","receivedAt":"2025-06-02T06:42:34Z","isPatch":false,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"On Fri, May 30, 2025 at 09:28:13AM -0700, Junio C Hamano wrote:\n> Patrick Steinhardt <ps@pks.im> writes:\n> \n> > Yeah, I understand that confusion indeed. I don't think that the other\n> > proposals we've got are a lot better, either:\n> >\n> >   - `odb_backend` was shot down because it may cause the association\n> >     that one object database has one backend. But backends are per\n> >     alternate, so there's a mismatch in expectations.\n> \n> I do not see where that association would come from, though.  But I\n> agree with the other objection that the word \"backend\" is more about\n> implementation and less about an instance that is realized by that\n> implementation, i.e. two such components that runs the code for a\n> single backend may be part of a single object database.\n> \n> >   - `odb_source` is better, but we now have the problem that we use\n> >     \"alternate\" interchangably in most cases where we also use\n> >     `odb_source`. This will likely lead to somewhat awkward interfaces.\n> >\n> > The problem with `odb_source` might eventually go away once we clearly\n> > distinguish the \"alternates\" concept from the low-level mechanism to\n> > access objects. But I'm just not certain at all whether it won't cause\n> > more confusion when in most cases \"alternates\" and \"sources\" can be used\n> > somewhat interchangably.\n> >\n> > I dunno. The more I think about this the more I start to like the\n> > `odb_source` name.\n> \n> Yeah, I do not mind calling the instantiation backed by a backend\n> implementation a odb_source.\n> \n> In any case, when deciding the terminology, we should look at what\n> we currently have in the glossary and imagine how they should look\n> like in the updated world.  Currently,\n> \n>  - \"alternate object database\" is described as inheriting the\n>    entirety of another \"object database\" (we deliberately do not say\n>    that this other object database belongs to another repository, as\n>    a standalone object database is a valid option).\n> \n>  - \"object database\" is described as what holds a set of \"objects\".\n>    There is no complication here ;-)\n> \n> When treating the set of objects stored in $GIT_DIR/objects/??/\n> directories (i.e. \"loose objects\") and the set of objects stored in\n> $GIT_DIR/objects/pack/ directory (i.e. \"packed objects\") as two\n> separate odb_something, with a vision that we may add different\n> implementations of such collection later, it would be very confusing\n> to call each of them \"an alternate\".  \"source\" may not be ideal, but\n> it is the best among what we collectively have come up with, I think.\n\nOkay, let's settle on `odb_source` then. I'll send a new version once I\nhave wrangled all the conflicts :) Thanks for the discussion, all!\n\nPatrick\n"}]}