{"thread":{"id":"63387","subject":"What's cooking in git.git (May 2025, #01; Fri, 2)","startedAt":"2025-05-03T01:35:07Z","lastAt":"2025-05-03T01:35:07Z","messageCount":1,"participants":["Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"517161","messageId":"xmqqo6waschj.fsf@gitster.g","threadId":"63387","inReplyTo":null,"subject":"What's cooking in git.git (May 2025, #01; Fri, 2)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-05-03T01:35:04Z","receivedAt":"2025-05-03T01:35: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* as/typofix-in-env-h-header (2025-04-18) 1 commit\n  (merged to 'next' on 2025-04-23 at a9954f6cec)\n + environment: fix typo: 'setup_git_directory_gently'\n\n Typofix.\n source: <20250418185855.52950-1-abhijeet.nkt@gmaiil.com>\n\n\n* az/tighten-string-array-constness (2025-04-21) 1 commit\n  (merged to 'next' on 2025-04-23 at 5a2b439731)\n + global: mark usage strings and string tables const\n\n Code clean-up.\n source: <daj53eijkqzsjy5cvuxchea4qm3pbiu673ehetihfffyvwzhgs@tarta.nabijaczleweli.xyz>\n\n\n* jh/gc-launchctl-schedule-fix (2025-04-23) 1 commit\n  (merged to 'next' on 2025-04-23 at ab4f2e0c26)\n + maintenance: fix launchctl calendar intervals\n\n Fix for scheduled maintenance tasks on platforms using launchctl.\n source: <20250421054633.231069-2-joshiheinrichs@gmail.com>\n\n\n* jk/p5332-testfix (2025-04-22) 1 commit\n  (merged to 'next' on 2025-04-24 at eafff4d7b7)\n + p5332: drop \"+\" from --stdin-packs input\n\n A test fix.\n source: <20250422111632.GA1855088@coredump.intra.peff.net>\n\n\n* js/git-perf-env-override (2025-04-20) 1 commit\n  (merged to 'next' on 2025-04-22 at 77ea361791)\n + perf: do allow `GIT_PERF_*` to be overridden again\n\n Developer support fix..\n source: <pull.1900.git.1743764167548.gitgitgadget@gmail.com>\n\n\n* lo/remove-log-reencode-from-rev-info (2025-04-22) 1 commit\n  (merged to 'next' on 2025-04-24 at 1c6c33ab1f)\n + revision: remove log_reencode field from rev_info\n\n Code clean-up.\n source: <20250422213133.18685-1-lucasseikioshiro@gmail.com>\n\n\n* ps/ci-resurrect-p4-on-github (2025-04-22) 1 commit\n  (merged to 'next' on 2025-04-24 at 8594d07a3e)\n + ci: fix p4d executable not being found on GitHub Actions\n\n CI fix.\n source: <aActb3dB-r3s69h6@pks.im>\n\n\n* ps/fewer-perl (2025-04-16) 5 commits\n  (merged to 'next' on 2025-04-23 at 275d267126)\n + Documentation: stop depending on Perl to generate command list\n + Documentation: stop depending on Perl to massage user manual\n + request-pull: stop depending on Perl\n + filter-branch: stop depending on Perl\n + Merge branch 'ps/test-wo-perl-prereq' into ps/fewer-perl\n\n Reduce requirement for Perl in our documentation build and a few\n scripts.\n source: <20250416-b4-pks-drop-perl-v2-0-bdd0492e9498@pks.im>\n\n\n* ps/install-bash-completion (2025-04-22) 1 commit\n  (merged to 'next' on 2025-04-24 at 1171444ac4)\n + contrib/completion: install Bash completion\n\n Build update to install bash (but not zsh) completion script.\n source: <20250422-b4-pks-meson-install-completions-v2-1-ab29d399bc6c@pks.im>\n\n\n* ps/reftable-api-revamp (2025-04-07) 17 commits\n  (merged to 'next' on 2025-04-23 at 1a5f00290a)\n + reftable/table: move printing logic into test helper\n + reftable/constants: make block types part of the public interface\n + reftable/table: introduce iterator for table blocks\n + reftable/table: add `reftable_table` to the public interface\n + reftable/block: expose a generic iterator over reftable records\n + reftable/block: make block iterators reseekable\n + reftable/block: store block pointer in the block iterator\n + reftable/block: create public interface for reading blocks\n + git-zlib: use `struct z_stream_s` instead of typedef\n + reftable/block: rename `block_reader` to `reftable_block`\n + reftable/block: rename `block` to `block_data`\n + reftable/table: move reading block into block reader\n + reftable/block: simplify how we track restart points\n + reftable/blocksource: consolidate code into a single file\n + reftable/reader: rename data structure to \"table\"\n + reftable: fix formatting of the license header\n + Merge branch 'ps/reftable-sans-compat-util' into ps/reftable-api-revamp\n\n Overhaul of the reftable API.\n cf. <3okrcl7bdpy75hzyzpmrp7fluan4n3zvsroioq64id4a2kt3o4@fc6fetilb6y2>\n source: <20250407-pks-reftable-polishing-v2-0-316c4ff10571@pks.im>\n\n\n* ua/call-repo-config-with-possibly-null-repository (2025-04-20) 2 commits\n  (merged to 'next' on 2025-04-22 at 1f30a19c02)\n + builtin/difftool: remove unnecessary if statement\n + builtin/add: remove unnecessary if statement\n\n Since a call to repo_config() can be called with repo set to NULL\n these days, a command that is marked as RUN_SETUP in the builtin\n command table does not have to check repo with NULL before making\n the call.\n source: <20250420025501.183290-1-usmanakinyemi202@gmail.com>\n\n--------------------------------------------------\n[New Topics]\n\n* cc/promisor-remote-capability (2025-04-29) 3 commits\n - promisor-remote: allow a client to check fields\n - promisor-remote: allow a server to advertise more fields\n - promisor-remote: refactor to get rid of 'struct strvec'\n\n Expecting a reroll.\n cf. <CAP8UFD2LzijGsU3-aO-JBPtEfT+UtR_X_mqcdVigoOfdVAg1uA@mail.gmail.com>\n source: <20250429145243.992252-1-christian.couder@gmail.com>\n\n\n* en/hashmap-clear-fix (2025-04-29) 1 commit\n  (merged to 'next' on 2025-04-30 at b0cdbeb28e)\n + hashmap: ensure hashmaps are reusable after hashmap_clear()\n\n hashmap API clean-up to ensure hashmap_clear() leaves a cleared map\n in a reusable state.\n\n Will merge to 'master'.\n source: <pull.1911.git.1745941663160.gitgitgadget@gmail.com>\n\n\n* js/diff-codeql-false-positive-workaround (2025-04-29) 1 commit\n  (merged to 'next' on 2025-05-01 at a840276032)\n + diff: check range before dereferencing an array element\n\n Work around false positive given by CodeQL.\n\n Will merge to 'master'.\n source: <pull.1887.v3.git.1745926679028.gitgitgadget@gmail.com>\n\n\n* ng/xdiff-truly-minimal (2025-04-29) 1 commit\n - xdiff: disable cleanup_records heuristic with --minimal\n\n \"git diff --minimal\" used to give non-minimal output when its\n optimization kicked in, which has been disabled.\n\n Will merge to 'next'.\n source: <20250429140949.2634935-1-n.glodny@campus.lmu.de>\n\n\n* ds/scalar-no-maintenance (2025-04-30) 2 commits\n - scalar clone: add --no-maintenance option\n - scalar register: add --no-maintenance option\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\n Expecting a reroll.\n cf. <b9a4dbf2-0064-4933-985f-b34dcb133030@gmail.com>\n source: <pull.1913.git.1746008680.gitgitgadget@gmail.com>\n\n\n* ps/mv-contradiction-fix (2025-04-30) 2 commits\n  (merged to 'next' on 2025-05-01 at 5c27b05f45)\n + builtin/mv: convert assert(3p) into `BUG()`\n + builtin/mv: bail out when trying to move child and its parent\n\n \"git mv a a/b dst\" would ask to move the directory 'a' itself, as\n well as its contents, in a single destination directory, which is\n a contradicting request that is impossible to satisfy. This case is\n now detected and the command errors out.\n\n Will merge to 'master'.\n source: <20250430-pks-mv-parent-child-conflict-v1-0-11a87c55ffb9@pks.im>\n\n\n* cf/wrapper-netbsd-errno-eftype (2025-05-02) 1 commit\n - wrapper: NetBSD gives EFTYPE where POSIX uses ELOOP\n\n source: <20250502233403.289761-1-collin.funk1@gmail.com>\n\n\n* en/get-tree-entry-doc (2025-05-02) 1 commit\n - tree-walk.h: fix incorrect API comment\n\n source: <pull.1912.v2.git.1746213551473.gitgitgadget@gmail.com>\n\n\n* jc/doc-synopsis-option-markup (2025-05-02) 3 commits\n - git-daemon doc: update mark-up of synopsis option descriptions\n - git-{var,write-tree} docs: update mark-up of synopsis option descriptions\n - git-verify-* doc: update mark-up of synopsis option descriptions\n\n Doc mark-up fixes.\n\n Comments?\n source: <20250503011537.3035416-1-gitster@pobox.com>\n\n\n* jc/you-still-use-whatchanged (2025-05-02) 6 commits\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 Comments?\n source: <20250503005814.3030099-1-gitster@pobox.com>\n\n--------------------------------------------------\n[Cooking]\n\n* jc/ci-skip-unavailable-external-software (2025-04-25) 2 commits\n - ci: download JGit from maven, not eclipse.org\n - ci: update the message for unavailble third-party software\n\n Further refinement on CI messages when an optional external\n software is unavailable (e.g. due to third-party service outage).\n\n Will merge to 'next'.\n source: <20250425153827.147585-1-gitster@pobox.com>\n\n\n* js/ci-win-meson-timeout-workaround (2025-04-25) 1 commit\n - ci(win+Meson): build in Release mode, avoiding t7001-mv hangs\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\n Expecting a reroll, stating an updated rationale for the change.\n cf. <xmqqjz6zuf80.fsf@gitster.g>\n source: <pull.1908.git.1745593515875.gitgitgadget@gmail.com>\n\n\n* ps/maintenance-missing-tasks (2025-05-02) 7 commits\n - builtin/maintenance: introduce \"rerere-gc\" task\n - builtin/gc: move rerere garbage collection into separate function\n - builtin/maintenance: introduce \"worktree-prune\" task\n - worktree: expose function to retrieve worktree names\n - builtin/gc: move pruning of worktrees into a separate function\n - builtin/gc: remove global variables where it trivial to do\n - builtin/gc: fix indentation of `cmd_gc()` parameters\n\n Make repository clean-up tasks \"gc\" can do available to \"git\n maintenance\" front-end.\n\n Will merge to 'next'?\n source: <20250502-pks-maintenance-missing-tasks-v3-0-13e130d36640@pks.im>\n\n\n* ag/send-email-outlook (2025-04-29) 2 commits\n - send-email: add --[no-]outlook-id-fix option\n - send-email: retrieve Message-ID from outlook SMTP server\n\n Update send-email to work better with Outlook's smtp server.\n\n Will merge to 'next'.\n source: <PN3PR01MB95973F4B26A8CE2BF17A3AB1B8842@PN3PR01MB9597.INDPRD01.PROD.OUTLOOK.COM>\n source: <PN3PR01MB9597DA8661D1AFDF4C927A11B8812@PN3PR01MB9597.INDPRD01.PROD.OUTLOOK.COM>\n\n\n* ds/fix-thin-fix (2025-04-28) 3 commits\n - index-pack: allow revisiting REF_DELTA chains\n - t5309: create failing test for 'git index-pack'\n - test-tool: add pack-deltas helper\n\n \"git index-pack --fix-thin\" used to abort to prevent a cycle in\n delta chains from forming in a corner case even when there is no\n such cycle.\n\n Will merge to 'next'.\n source: <pull.1906.v2.git.1745871885.gitgitgadget@gmail.com>\n\n\n* ps/object-store-cleanup (2025-04-29) 8 commits\n - object-store: drop `repo_has_object_file()`\n - treewide: convert users of `repo_has_object_file()` to `has_object()`\n - object-store: allow fetching objects via `has_object()`\n - object-store: move function declarations to their respective subsystems\n - object-store: move and rename `odb_pack_keep()`\n - object-store: drop `loose_object_path()`\n - object-store: move `struct packed_git` into \"packfile.h\"\n - Merge branch 'ps/object-file-cleanup' into ps/object-store-cleanup\n\n Further code clean-up in the object-store layer.\n\n Will merge to 'next'.\n source: <20250429-pks-object-store-cleanups-v3-0-42902bad09a1@pks.im>\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* dd/meson-perl-custom-path (2025-04-24) 1 commit\n - meson: allow customize perl installation path\n\n Meson-based build framework update.\n\n Looking good.  Expecting a minor reroll.\n cf. <aA8vSPKdznjzBf6W@pks.im>\n source: <80a2a6ce7c6b05323cf931cdc20d4decb6270002.1745507677.git.congdanhqx@gmail.com>\n\n\n* ps/meson-bin-sh (2025-04-25) 2 commits\n - meson: prefer shell at \"/bin/sh\"\n - meson: report detected runtime executable paths\n\n Meson-based build framework update.\n\n Will merge to 'next'?\n source: <20250425-pks-meson-posix-shell-v3-0-01607a2e9334@pks.im>\n\n\n* es/meson-cleanup (2025-04-25) 6 commits\n  (merged to 'next' on 2025-04-28 at 0cc8ee98dc)\n + meson: only check for missing networking syms on non-Windows; add compat impls\n + meson: fix typo in function check that prevented checking for hstrerror\n + meson: add a couple missing networking dependencies\n + meson: do a full usage-based compile check for sysinfo\n + meson: check for getpagesize before using it\n + meson: simplify and parameterize various standard function checks\n\n Code clean-up for meson-based build infrastructure.\n\n Will merge to 'master'.\n source: <20250425053345.17288-1-eschwartz@gentoo.org>\n\n\n* js/windows-arm64 (2025-04-23) 6 commits\n  (merged to 'next' on 2025-04-28 at c3d4cea333)\n + max_tree_depth: lower it for clangarm64 on Windows\n + mingw(arm64): do move the `/etc/git*` location\n + msvc: do handle builds on Windows/ARM64\n + mingw: do not use nedmalloc on Windows/ARM64\n + config.mak.uname: add support for clangarm64\n + bswap.h: add support for built-in bswap functions\n\n Update to arm64 Windows port.\n\n Will merge to 'master'.\n source: <pull.1904.v2.git.1745395308.gitgitgadget@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 Comments?\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* ps/meson-build-perf-bench (2025-04-28) 5 commits\n  (merged to 'next' on 2025-04-28 at f563542bfd)\n + meson: wire up benchmarking options\n + meson: wire up benchmarks\n + t/perf: fix benchmarks with out-of-tree builds\n + t/perf: use configured PERL_PATH\n + t/perf: fix benchmarks with alternate repo formats\n\n The build procedure based on Meson learned to drive the\n benchmarking tests.\n\n Will merge to 'master'.\n source: <20250428-pks-meson-benchmarks-v5-0-5010dd014d1d@pks.im>\n\n\n* kn/meson-hdr-check (2025-04-23) 7 commits\n  (merged to 'next' on 2025-04-29 at c925448238)\n + makefile/meson: add 'check-headers' as alias for 'hdr-check'\n + meson: add support for 'hdr-check'\n + meson: rename 'third_party_sources' to 'third_party_excludes'\n + meson: move headers definition from 'contrib/coccinelle'\n + coccinelle: meson: rename variables to be more specific\n + ci/github: install git before checking out the repository\n + Merge branch 'es/meson-build-skip-coccinelle' into kn/meson-hdr-check\n\n Add an equivalent to \"make hdr-check\" target to meson based builds.\n\n Will merge to 'master'.\n source: <20250423-505-wire-up-sparse-via-meson-v5-0-d1e2be4b2078@gmail.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-04-01) 1 commit\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 Comments?\n source: <20250330134018.9662-2-dhar61595@gmail.com>\n\n\n* sc/bundle-uri-use-all-refs-in-bundle (2025-04-25) 2 commits\n - bundle-uri: add test for bundle-uri clones with tags\n - bundle-uri: copy all bundle references ino the refs/bundle space\n\n Bundle-URI feature did not use refs recorded in the bundle other\n than normal branches as anchoring points to optimize the follow-up\n fetch during \"git clone\"; now it is told to utilize all.\n\n Ready?\n source: <pull.1897.v4.git.git.1745587067.gitgitgadget@gmail.com>\n\n\n* ds/path-walk-2 (2025-03-25) 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 Will merge to 'next'?\n cf. <aBVLC57bMJKjygyi@nand.local>\n source: <pull.1819.v2.git.1742829769.gitgitgadget@gmail.com>\n\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 Expecting a reroll.\n source: <20250212032657.1807939-1-illia.bobyr@gmail.com>\n\n\n* ej/cat-file-remote-object-info (2025-02-24) 8 commits\n - cat-file: add remote-object-info to batch-command\n - transport: add client support for object-info\n - serve: advertise object-info feature\n - fetch-pack: move fetch initialization\n - fetch-pack: refactor packet writing\n - t1006: split test utility functions into new \"lib-cat-file.sh\"\n - cat-file: add declaration of variable i inside its for loop\n - git-compat-util: add strtoul_ul() with error handling\n\n \"git cat-file --batch\" and friends can optionally ask a remote\n server about objects it does not have.\n\n Expecting a reroll.\n cf. <CAN2LT1Cc-UaUpabqcGascicR3nk6ZdFythamKje33Orhy5WoNA@mail.gmail.com>\n source: <20250221190451.12536-1-eric.peijian@gmail.com>\n"}]}