{"thread":{"id":"64406","subject":"What's cooking in git.git (Oct 2025, #12; Thu, 30)","startedAt":"2025-10-30T21:36:57Z","lastAt":"2025-11-04T12:40:28Z","messageCount":10,"participants":["Junio C Hamano","Patrick Steinhardt","Eric Sunshine","Lucas Seiki Oshiro","Jeff King"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"529988","messageId":"xmqqpla43wcp.fsf@gitster.g","threadId":"64406","inReplyTo":null,"subject":"What's cooking in git.git (Oct 2025, #12; Thu, 30)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-10-30T21:36:54Z","receivedAt":"2025-10-30T21:36:57Z","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* ey/commit-graph-changed-paths-config (2025-10-17) 1 commit\n  (merged to 'next' on 2025-10-23 at 48fd936ff1)\n + commit-graph: add new config for changed-paths & recommend it in scalar\n\n A new configuration variable commitGraph.changedPaths allows to\n turn \"--changed-paths\" on by default for \"git commit-graph\".\n source: <pull.1983.v2.git.1760734739642.gitgitgadget@gmail.com>\n\n\n* kf/log-shortlog-completion-fix (2025-10-20) 1 commit\n  (merged to 'next' on 2025-10-24 at 2300659a0a)\n + completion: complete some 'git log' options\n\n \"git shortlog\" knows \"--committer\" and \"--author\" options, which\n the command line completion (in contrib/) did not handle well,\n which has been corrected.\n source: <pull.2073.v2.git.git.1760981577441.gitgitgadget@gmail.com>\n\n\n* ly/diff-name-only-with-diff-from-content (2025-10-19) 3 commits\n  (merged to 'next' on 2025-10-24 at 237c19e4e6)\n + diff: stop output garbled message in dry run mode\n + Merge branch 'jc/diff-from-contents-fix' into ly/diff-name-only-with-diff-from-content\n + Merge branch 'jk/diff-from-contents-fix' into ly/diff-name-only-with-diff-from-content\n (this branch is used by jk/diff-patch-dry-run-cleanup.)\n\n Regression fixes for a topic that has already been merged.\n source: <20251019163024.18939-1-yldhome2d2@gmail.com>\n\n\n* ob/gpg-interface-cleanup (2025-10-23) 2 commits\n  (merged to 'next' on 2025-10-24 at ce6d041635)\n + gpg-interface: do not use misdesigned strbuf_split*()\n + gpg-interface: do not use misdesigned strbuf_split*()\n\n strbuf_split*() to split a string into multiple strbufs is often a\n wrong API to use.  A few uses of it have been removed by\n simplifying the code.\n cf. <CAP8UFD1fousSKKduFAaZrsV9REnOaRDOQYcqB+rTQ0Ys60OWGA@mail.gmail.com>\n source: <cover.1761217100.git.belkid98@gmail.com>\n\n\n* ps/remove-packfile-store-get-packs (2025-10-09) 7 commits\n  (merged to 'next' on 2025-10-24 at e2f6fba6fe)\n + packfile: rename `packfile_store_get_all_packs()`\n + packfile: introduce macro to iterate through packs\n + packfile: drop `packfile_store_get_packs()`\n + builtin/grep: simplify how we preload packs\n + builtin/gc: convert to use `packfile_store_get_all_packs()`\n + object-name: convert to use `packfile_store_get_all_packs()`\n + Merge branch 'tb/incremental-midx-part-3.1' into ps/remove-packfile-store-get-packs\n (this branch is used by ps/packed-git-in-object-store.)\n\n Two slightly different ways to get at \"all the packfiles\" in API\n has been cleaned up.\n source: <20251009-pks-packfiles-convert-get-all-v2-0-0d73b87ce711@pks.im>\n\n\n* ps/symlink-symref-deprecation (2025-10-14) 1 commit\n  (merged to 'next' on 2025-10-24 at b37ca35280)\n + refs/files: deprecate writing symrefs as symbolic links\n\n \"Symlink symref\" has been added to the list of things that will\n disappear at Git 3.0 boundary.\n source: <20251015-pks-ref-files-deprecate-symbolic-links-v2-1-0529ba48db41@pks.im>\n\n\n* rz/bisect-help-unknown (2025-10-22) 1 commit\n  (merged to 'next' on 2025-10-24 at d0633ab14d)\n + bisect: fix handling of `help` and invalid subcommands\n\n \"git bisect\" command did not react correctly to \"git bisect help\"\n and \"git bisect unknown\", which has been corrected.\n source: <pull.2078.git.git.1761122173126.gitgitgadget@gmail.com>\n\n\n* tb/incremental-midx-part-3.1 (2025-10-15) 50 commits\n  (merged to 'next' on 2025-10-22 at e78054f5a0)\n + builtin/repack.c: clean up unused `#include`s\n + repack: move `write_cruft_pack()` out of the builtin\n + repack: move `write_filtered_pack()` out of the builtin\n + repack: move `pack_kept_objects` to `struct pack_objects_args`\n + repack: move `finish_pack_objects_cmd()` out of the builtin\n + builtin/repack.c: pass `write_pack_opts` to `finish_pack_objects_cmd()`\n + repack: extract `write_pack_opts_is_local()`\n + repack: move `find_pack_prefix()` out of the builtin\n + builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()`\n + builtin/repack.c: introduce `struct write_pack_opts`\n + repack: 'write_midx_included_packs' API from the builtin\n + builtin/repack.c: inline packs within `write_midx_included_packs()`\n + builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs`\n + builtin/repack.c: inline `remove_redundant_bitmaps()`\n + builtin/repack.c: reorder `remove_redundant_bitmaps()`\n + repack: keep track of MIDX pack names using existing_packs\n + builtin/repack.c: use a string_list for 'midx_pack_names'\n + builtin/repack.c: extract opts struct for 'write_midx_included_packs()'\n + builtin/repack.c: remove ref snapshotting from builtin\n + repack: remove pack_geometry API from the builtin\n + builtin/repack.c: pass 'packdir' to `pack_geometry_remove_redundant()`\n + builtin/repack.c: pass 'pack_kept_objects' to `pack_geometry_init()`\n + builtin/repack.c: rename various pack_geometry functions\n + builtin/repack.c: remove \"repack_promisor_objects()\" from the builtin\n + builtin/repack.c: pass \"packtmp\" to `repack_promisor_objects()`\n + repack: remove 'generated_pack' API from the builtin\n + builtin/repack.c: provide pack locations to `generated_pack_install()`\n + builtin/repack.c: pass \"packtmp\" to `generated_pack_populate()`\n + builtin/repack.c: factor out \"generated_pack_install\"\n + builtin/repack.c: rename \"struct generated_pack_data\"\n + repack: remove 'existing_packs' API from the builtin\n + builtin/repack.c: avoid unnecessary numeric casts in existing_packs\n + builtin/repack.c: pass \"packdir\" when removing packs\n + repack: remove 'remove_redundant_pack' from the builtin\n + builtin/repack.c: rename many 'struct existing_packs' functions\n + repack: remove 'prepare_pack_objects' from the builtin\n + repack: move 'delta_base_offset' to 'struct pack_objects_args'\n + builtin/repack.c: pass both pack_objects args to repack_config\n + repack: introduce new compilation unit\n + builtin/repack.c: avoid using `hash_to_hex()` in pack geometry\n + builtin/repack.c: avoid \"the_hash_algo\" in `finish_pack_objects_cmd()`\n + builtin/repack: avoid \"the_hash_algo\" in `repack_promisor_objects()`\n + builtin/repack.c: avoid \"the_hash_algo\" in `write_oid()`\n + builtin/repack.c: avoid \"the_hash_algo\" when deleting packs\n + builtin/repack.c: avoid \"the_repository\" when repacking promisor objects\n + builtin/repack.c: avoid \"the_repository\" when removing packs\n + builtin/repack.c: avoid \"the_repository\" when taking a ref snapshot\n + builtin/repack.c: avoid \"the_repository\" in existing packs API\n + builtin/repack.c: avoid \"the_repository\" in `cmd_repack()`\n + Merge branch 'ps/packfile-store' into tb/incremental-midx-part-3.1\n (this branch is used by kn/refs-optim-cleanup, ps/maintenance-geometric, ps/packed-git-in-object-store, ps/ref-peeled-tags and ps/remove-packfile-store-get-packs.)\n\n Clean-up \"git repack\" machinery to prepare for incremental update\n of midx files.\n source: <cover.1760567210.git.me@ttaylorr.com>\n\n--------------------------------------------------\n[New Topics]\n\n* kh/doc-checkout-markup-fix (2025-10-28) 1 commit\n  (merged to 'next' on 2025-10-29 at f106c77f74)\n + doc: git-checkout: fix placeholder markup\n\n Doc mark-up fix.\n\n Will merge to 'master'.\n source: <v2-cb38c701537.1761675472.git.code@khaugsbakk.name>\n\n\n* rz/t0450-bisect-doc-update (2025-10-28) 1 commit\n - bisect: update usage and docs to match each other\n\n The help text and manual page of \"git bisect\" command have been\n made consistent with each other.\n\n Will merge to 'next'.\n source: <pull.2084.git.git.1761690461697.gitgitgadget@gmail.com>\n\n\n* bc/sha1-256-interop-02 (2025-10-29) 15 commits\n - SQUASH??? downgrade build.rs syntax\n - object-file-convert: always make sure object ID algo is valid\n - rust: add a small wrapper around the hashfile code\n - rust: add a new binary loose object map format\n - rust: add functionality to hash an object\n - rust: add a build.rs script for tests\n - hash: expose hash context functions to Rust\n - write-or-die: add an fsync component for the loose object map\n - csum-file: define hashwrite's count as a uint32_t\n - hash: add a function to look up hash algo structs\n - rust: add a hash algorithm abstraction\n - rust: add a ObjectID struct\n - hash: use uint32_t for object_id algorithm\n - conversion: don't crash when no destination algo\n - repository: require Rust support for interoperability\n\n The code to maintain mapping between object names in multiple hash\n functions is being added, written in Rust.\n\n Expecting a reroll.\n source: <20251027004404.2152927-1-sandals@crustytoothpaste.net>\n\n\n* jk/doc-backslash-in-exclude (2025-10-29) 1 commit\n  (merged to 'next' on 2025-10-30 at 29790121d5)\n + doc: document backslash in gitignore patterns\n\n The patterns used in the .gitignore files use backslash in the way\n documented for fnmatch(3); document as such to reduce confusion.\n\n Will merge to 'master'.\n source: <20251029153237.GA1133542@coredump.intra.peff.net>\n\n\n* jk/test-delete-gpgsig-leakfix (2025-10-29) 1 commit\n  (merged to 'next' on 2025-10-30 at 097810cb65)\n + test-tool: fix leak in delete-gpgsig command\n\n Leakfix.\n\n Will merge to 'master'.\n source: <20251029191031.GA1257596@coredump.intra.peff.net>\n\n--------------------------------------------------\n[Cooking]\n\n* qj/doc-my1stcontrib-email-verify (2025-10-27) 1 commit\n  (merged to 'next' on 2025-10-29 at 33f961f37a)\n + MyFirstContribution: add note on confirming patches\n\n The \"MyFirstContribution\" tutorial tells the reader how to send out\n their patches; the section gained a hint to verify the message\n reached the mailing list.\n\n Will merge to 'master'.\n source: <20251027111600.1481-1-qjessa662@gmail.com>\n\n\n* xr/ref-debug-remove-on-disk (2025-10-24) 1 commit\n  (merged to 'next' on 2025-10-29 at 316e4afdbf)\n + refs: add missing remove_on_disk implementation for debug backend\n\n The \"debug\" ref-backend was missing a method implementation, which\n has been corrected.\n\n Will merge to 'master'.\n source: <pull.2082.git.git.1761295094982.gitgitgadget@gmail.com>\n\n\n* ad/blame-diff-algorithm (2025-10-28) 1 commit\n - blame: make diff algorithm configurable\n\n \"git blame\" learns \"--diff-algorithm=<algo>\" option.\n\n Expecting a reroll.\n cf. <fde3dae1-bb11-45e8-9211-50ae003ca497@gmail.com>\n source: <pull.2075.v2.git.git.1761658643278.gitgitgadget@gmail.com>\n\n\n* cc/fast-import-export-i18n-cleanup (2025-10-30) 5 commits\n - gpg-interface: mark a string for translation\n - fast-import: mark strings for translation\n - fast-export: mark strings for translation\n - gpg-interface: use left shift to define GPG_VERIFY_*\n - gpg-interface: simplify ssh fingerprint parsing\n\n Messages from fast-import/export are now marked for i18n.\n\n Will merge to 'next'?\n source: <20251030123332.3337684-1-christian.couder@gmail.com>\n\n\n* eb/t1016-hash-transition-fix (2025-10-28) 1 commit\n  (merged to 'next' on 2025-10-30 at b743410ab6)\n + t1016-compatObjectFormat: really freeze time for reproduciblity\n\n Test fix.\n\n Will merge to 'master'.\n source: <87frb310d2.fsf_-_@email.froward.int.ebiederm.org>\n\n\n* ps/packed-git-in-object-store (2025-10-30) 9 commits\n - packfile: track packs via the MRU list exclusively\n - packfile: always add packfiles to MRU when adding a pack\n - packfile: move list of packs into the packfile store\n - builtin/pack-objects: simplify logic to find kept or nonlocal objects\n - packfile: fix approximation of object counts\n - http: refactor subsystem to use `packfile_list`s\n - packfile: move the MRU list into the packfile store\n - packfile: use a `strmap` to store packs by name\n - Merge branch 'ps/remove-packfile-store-get-packs' into ps/packed-git-in-object-store\n\n The list of packfiles used in a running Git process is moved from\n the object-database layer down to object-store layer.\n\n Will merge to 'next'?\n source: <20251030-pks-packfiles-store-drop-list-v2-0-84654f080cc0@pks.im>\n\n\n* tu/credential-install (2025-10-25) 1 commit\n  (merged to 'next' on 2025-10-28 at 43589c4832)\n + contrib/credential: add install target\n\n Contributed credential helpers (obviously in contrib/) now have \"cd\n $there && make install\" target.\n\n Will merge to 'master'.\n source: <f67b3cbd-a117-a863-37ba-fbba7a2ca17a@mailbox.tu-dresden.de>\n\n\n* jk/diff-patch-dry-run-cleanup (2025-10-24) 6 commits\n  (merged to 'next' on 2025-10-26 at 28426e9102)\n + diff: simplify run_external_diff() quiet logic\n + diff: drop dry-run redirection to /dev/null\n + diff: replace diff_options.dry_run flag with NULL file\n + diff: drop save/restore of color_moved in dry-run mode\n + diff: send external diff output to diff_options.file\n + Merge branch 'ly/diff-name-only-with-diff-from-content' into jk/diff-patch-dry-run-cleanup\n\n Finishing touches to fixes to the recent regression in \"git diff -w\n --quiet\" and anything that needs to internally generate patch to\n see if it turns empty.\n\n Will merge to 'master'.\n source: <20251024170522.GA2344972@coredump.intra.peff.net>\n\n\n* qj/doc-first-contrib-check-lore (2025-10-24) 1 commit\n - MyFirstContribution: add tip to confirm patches reached the mailing list\n (this branch uses ps/rust-cbindgen.)\n\n Doc update.\n\n Will merge to 'next'?\n source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>\n\n\n* rs/merge-base-optim (2025-10-24) 1 commit\n  (merged to 'next' on 2025-10-26 at 45f9bd4b81)\n + commit-reach: avoid commit_list_insert_by_date()\n\n The code to walk revision graph to compute merge base has been\n optimized.\n\n Will merge to 'master'.\n source: <87a00cb8-8faf-48ec-91aa-009e6e906363@web.de>\n\n\n* rs/add-patch-quit (2025-10-24) 2 commits\n  (merged to 'next' on 2025-10-26 at 859e2555b2)\n + add-patch: quit on EOF\n + add-patch: quit without skipping undecided hunks\n\n The 'q'(uit) command in \"git add -p\" has been improved to quit\n without doing any meaningless work before leaving, and giving EOF\n (typically control-D) to the prompt is made to behave the same way.\n\n Will merge to 'master'.\n source: <13529bee-1e02-4c20-9461-6569312bfe4f@web.de>\n\n\n* ps/rust-cbindgen (2025-10-24) 6 commits\n - rust: generate bindings via cbindgen\n - meson: rename Rust library target\n - ci: use Debian instead of deprecated i386/ubuntu\n - gitlab-ci: backfill missing Linux jobs\n - gitlab-ci: reorder Linux job matrix to match GitHub's order\n - Merge branch 'ps/ci-rust' into ps/rust-cbindgen\n (this branch is used by qj/doc-first-contrib-check-lore.)\n\n Introduce cbindgen in the build framework to help interfacing with\n Rust.\n\n More discussion?\n cf. <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>\n source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>\n\n\n* jk/match-pathname-fix (2025-10-26) 2 commits\n  (merged to 'next' on 2025-10-26 at f18b45f0df)\n + match_pathname(): give fnmatch one char of prefix context\n + match_pathname(): reorder prefix-match check\n\n The wildmatch code had a corner case bug that mistakenly makes\n \"foo**/bar\" match with \"foobar\", which has been corrected.\n\n Will merge to 'master'.\n source: <20251026154036.GA2173430@coredump.intra.peff.net>\n\n\n* kn/refs-optim-cleanup (2025-10-20) 4 commits\n - t/pack-refs-tests: move the 'test_done' to callees\n - refs: rename 'pack_refs_opts' to 'refs_optimize_opts'\n - refs: move to using the '.optimize' functions\n - Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup\n (this branch uses jt/repo-structure and ps/ref-peeled-tags.)\n\n Code clean-up.\n\n Will merge to 'next' after base topics are merged.\n source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>\n\n\n* lo/repo-info-all (2025-10-26) 2 commits\n - repo: add --all to git-repo-info\n - repo: factor out field printing to dedicated function\n\n \"git repo info\" learned \"--all\" option.\n\n Will merge to 'next'?\n source: <20251026225409.46647-1-lucasseikioshiro@gmail.com>\n\n\n* jt/repo-structure (2025-10-21) 7 commits\n  (merged to 'next' on 2025-10-28 at c4d81a2da9)\n + builtin/repo: add progress meter for structure stats\n + builtin/repo: add keyvalue and nul format for structure stats\n + builtin/repo: add object counts in structure output\n + builtin/repo: introduce structure subcommand\n + ref-filter: export ref_kind_from_refname()\n + ref-filter: allow NULL filter pattern\n + builtin/repo: rename repo_info() to cmd_repo_info()\n (this branch is used by kn/refs-optim-cleanup and ps/ref-peeled-tags.)\n\n \"git repo structure\", a new command.\n\n Will merge to 'master'.\n cf. <eesy5qhqzi56qrzv7wlpenxag23l2zykakvpmr6p5rnak6cril@ap3rugp44bcz>\n cf. <aPsLS6lbzG27W-C8@pks.im>\n source: <20251021182601.2687284-1-jltobler@gmail.com>\n\n\n* ps/maintenance-geometric (2025-10-27) 12 commits\n  (merged to 'next' on 2025-10-27 at 839fc31de9)\n + t7900: fix a flaky test due to git-repack always regenerating MIDX\n  (merged to 'next' on 2025-10-26 at 505f26dcf7)\n + builtin/maintenance: introduce \"geometric\" strategy\n + builtin/maintenance: make \"gc\" strategy accessible\n + builtin/maintenance: extend \"maintenance.strategy\" to manual maintenance\n + builtin/maintenance: run maintenance tasks depending on type\n + builtin/maintenance: improve readability of strategies\n + builtin/maintenance: don't silently ignore invalid strategy\n + builtin/maintenance: make the geometric factor configurable\n + builtin/maintenance: introduce \"geometric-repack\" task\n + builtin/gc: make `too_many_loose_objects()` reusable without GC config\n + builtin/gc: remove global `repack` variable\n + Merge branch 'tb/incremental-midx-part-3.1' into ps/maintenance-geometric\n\n \"git maintenance\" command learns the \"geometric\" strategy where it\n avoids doing maintenance tasks that rebuilds everything from\n scratch.\n\n Will merge to 'master'.\n source: <20251024-pks-maintenance-geometric-strategy-v3-0-9b5b3bdb4387@pks.im>\n source: <20251027-pks-maintenance-geometric-strategy-v4-0-18049e4a0adf@pks.im>\n\n\n* en/xdiff-cleanup-2 (2025-10-29) 10 commits\n - xdiff: rename rindex -> reference_index\n - xdiff: change rindex from long to size_t in xdfile_t\n - xdiff: make xdfile_t.nreff a size_t instead of long\n - xdiff: make xdfile_t.nrec a size_t instead of long\n - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash\n - xdiff: use unambiguous types in xdl_hash_record()\n - xdiff: use size_t for xrecord_t.size\n - xdiff: make xrecord_t.ptr a uint8_t instead of char\n - xdiff: use ssize_t for dstart/dend, make them last in xdfile_t\n - doc: define unambiguous type mappings across C and Rust\n\n Code clean-up.\n\n Comments?\n source: <pull.2070.v2.git.git.1761776388.gitgitgadget@gmail.com>\n\n\n* ar/run-command-hook (2025-10-17) 10 commits\n - receive-pack: convert receive hooks to hook API\n - receive-pack: convert update hooks to new API\n - hooks: allow callers to capture output\n - run-command: allow capturing of collated output\n - reference-transaction: use hook API instead of run-command\n - hook: allow overriding the ungroup option\n - transport: convert pre-push to hook API\n - hook: convert 'post-rewrite' hook in sequencer.c to hook API\n - hook: provide stdin via callback\n - run-command: add stdin callback for parallelization\n\n Use hook API to replace ad-hoc invocation of hook scripts with the\n run_command() API.\n\n Comments?\n source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>\n\n\n* je/doc-reset (2025-10-17) 4 commits\n - doc: git-reset: clarify `git reset <pathspec>`\n - doc: git-reset: clarify `git reset [mode]`\n - doc: git-reset: clarify intro\n - doc: git-reset: reorder the forms\n\n Documentation updates.\n\n Expecting a reroll.\n cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>\n source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>\n\n\n* kh/doc-patch-id-1 (2025-10-13) 2 commits\n  (merged to 'next' on 2025-10-26 at e284077116)\n + doc: patch-id: convert to the modern synopsis style\n + Merge branch 'kh/doc-patch-id-markup-fix' into kh/doc-patch-id-1\n\n Will merge to 'master'.\n source: <v2-38645ea253c.1760369708.git.code@khaugsbakk.name>\n\n\n* tz/test-prepare-gnupghome (2024-07-03) 2 commits\n  (merged to 'next' on 2025-10-28 at f612107bf9)\n + t/lib-gpg: call prepare_gnupghome() in GPG2 prereq\n + t/lib-gpg: add prepare_gnupghome() to create GNUPGHOME dir\n\n Tests did not set up GNUPGHOME correctly, which is fixed but some\n flaky tests are exposed in t1016, which needs to be addressed\n before this topic can move forward.\n\n Will merge to 'master'.\n cf. <ZoV8b2RvYxLOotSJ@teonanacatl.net>\n cf. <xmqqbjlump3m.fsf@gitster.g>\n cf. <87frb310d2.fsf_-_@email.froward.int.ebiederm.org>\n source: <20240703153738.916469-1-tmz@pobox.com>\n\n\n* ps/ref-peeled-tags (2025-10-23) 16 commits\n - ref-filter: parse objects on demand\n - ref-filter: detect broken tags when dereferencing them\n - refs: don't store peeled object IDs for invalid tags\n - object: add flag to `peel_object()` to verify object type\n - refs: drop infrastructure to peel via iterators\n - refs: drop `current_ref_iter` hack\n - builtin/show-ref: convert to use `reference_get_peeled_oid()`\n - ref-filter: propagate peeled object ID\n - upload-pack: convert to use `reference_get_peeled_oid()`\n - refs: expose peeled object ID via the iterator\n - refs: refactor reference status flags\n - refs: fully reset `struct ref_iterator::ref` on iteration\n - refs: introduce `.ref` field for the base iterator\n - refs: introduce wrapper struct for `each_ref_fn`\n - Merge branch 'jt/repo-structure' into ps/ref-peeled-tags\n - Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags\n (this branch is used by kn/refs-optim-cleanup; uses jt/repo-structure.)\n\n Some ref backend storage can hold not just the object name of an\n annotated tag, but the object name of the object the tag points at.\n The code to handle this information has been streamlined.\n\n Will merge to 'next' after base topics are merged.\n source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>\n\n\n* je/doc-data-model (2025-10-27) 1 commit\n - doc: add an explanation of Git's data model\n\n Add a new manual that describes the data model.\n\n Comments?\n source: <pull.1981.v4.git.1761593537924.gitgitgadget@gmail.com>\n\n\n* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit\n  (merged to 'next' on 2025-10-28 at 9b5e0701fa)\n + SubmittingPatches: add section about AI\n\n AI guidelines.\n\n Will merge to 'master'.\n cf. <xmqqv7ki1xf1.fsf@gitster.g>\n source: <20251001140310.527097-1-christian.couder@gmail.com>\n\n\n* ps/history (2025-10-27) 12 commits\n - builtin/history: implement \"split\" subcommand\n - cache-tree: allow writing in-memory index as tree\n - add-patch: add support for in-memory index patching\n - add-patch: remove dependency on \"add-interactive\" subsystem\n - add-patch: split out `struct interactive_options`\n - add-patch: split out header from \"add-interactive.h\"\n - builtin/history: implement \"reword\" subcommand\n - builtin: add new \"history\" command\n - replay: stop using `the_repository`\n - replay: extract logic to pick commits\n - wt-status: provide function to expose status for trees\n - Merge branch 'sa/replay-atomic-ref-updates' into ps/history\n (this branch uses sa/replay-atomic-ref-updates.)\n\n \"git history\" history rewriting UI.\n\n Comments?\n source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>\n\n\n* ms/doc-worktree-side-by-side (2025-10-10) 2 commits\n - doc: git-worktree: Add side by side branch checkout example\n - doc: git-worktree: Link to examples\n\n Document \"git worktree add\" and use of out-of-tree worktrees with\n examples.\n\n Expecting a reroll.\n cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>\n source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>\n\n\n* sa/replay-atomic-ref-updates (2025-10-28) 3 commits\n - replay: add replay.refAction config option\n - replay: make atomic ref updates the default behavior\n - replay: use die_for_incompatible_opt2() for option validation\n (this branch is used by ps/history.)\n\n \"git replay\" (experimental) learned to perform ref updates itself\n in a transaction by default, instead of emitting where each refs\n should point at and leaving the actual update to another command.\n\n Reroll exists.\n source: <20251028214609.10041-1-siddharthasthana31@gmail.com>\n\n\n* ar/submodule-gitdir-tweak (2025-10-06) 5 commits\n - submodule: error out if gitdir name is too long\n - submodule: encode gitdir paths to avoid conflicts\n - strbuf: bring back is_rfc3986_unreserved\n - submodule: add gitdir path config override\n - submodule--helper: use submodule_name_to_gitdir in add_submodule\n\n Avoid local submodule repository directory paths overlapping with\n each other by encoding submodule names before using them as path\n components.\n\n Expecting v4.\n cf. <878qh4qxsl.fsf@gentoo.mail-host-address-is-not-set>\n source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>\n"},{"id":"530016","messageId":"aQRaRuBtt_r7SamL@pks.im","threadId":"64406","inReplyTo":"xmqqpla43wcp.fsf@gitster.g","subject":"Re: What's cooking in git.git (Oct 2025, #12; Thu, 30)","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2025-10-31T06:42:14Z","receivedAt":"2025-10-31T06:42:19Z","isPatch":false,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"On Thu, Oct 30, 2025 at 02:36:54PM -0700, Junio C Hamano wrote:\n> * cc/fast-import-export-i18n-cleanup (2025-10-30) 5 commits\n>  - gpg-interface: mark a string for translation\n>  - fast-import: mark strings for translation\n>  - fast-export: mark strings for translation\n>  - gpg-interface: use left shift to define GPG_VERIFY_*\n>  - gpg-interface: simplify ssh fingerprint parsing\n> \n>  Messages from fast-import/export are now marked for i18n.\n> \n>  Will merge to 'next'?\n>  source: <20251030123332.3337684-1-christian.couder@gmail.com>\n\nI just read through that series. All of the changes look like obvious\nimprovements to me.\n\n> * ps/packed-git-in-object-store (2025-10-30) 9 commits\n>  - packfile: track packs via the MRU list exclusively\n>  - packfile: always add packfiles to MRU when adding a pack\n>  - packfile: move list of packs into the packfile store\n>  - builtin/pack-objects: simplify logic to find kept or nonlocal objects\n>  - packfile: fix approximation of object counts\n>  - http: refactor subsystem to use `packfile_list`s\n>  - packfile: move the MRU list into the packfile store\n>  - packfile: use a `strmap` to store packs by name\n>  - Merge branch 'ps/remove-packfile-store-get-packs' into ps/packed-git-in-object-store\n> \n>  The list of packfiles used in a running Git process is moved from\n>  the object-database layer down to object-store layer.\n\nCorrection: the list of packfiles is still essentially on the object\ndatabase layer. The change here is that it's not contained in `struct\npacked_git` anymore, but instead it's moved into the packfile store.\nSo packfiles become a standalone entity, and the packfile store is\ncompletely responsible for managing the list of packfiles.\n\n>  Will merge to 'next'?\n>  source: <20251030-pks-packfiles-store-drop-list-v2-0-84654f080cc0@pks.im>\n\nI think the series is already in a good shape after the last round of\nreviews, but let's give reviewers a few more days to reply to the second\nversion.\n\n> * lo/repo-info-all (2025-10-26) 2 commits\n>  - repo: add --all to git-repo-info\n>  - repo: factor out field printing to dedicated function\n> \n>  \"git repo info\" learned \"--all\" option.\n> \n>  Will merge to 'next'?\n>  source: <20251026225409.46647-1-lucasseikioshiro@gmail.com>\n\nI think there's still a couple of comments from Eric on v3 of this\nseries that probably need addressing?\n\n> * ps/ref-peeled-tags (2025-10-23) 16 commits\n>  - ref-filter: parse objects on demand\n>  - ref-filter: detect broken tags when dereferencing them\n>  - refs: don't store peeled object IDs for invalid tags\n>  - object: add flag to `peel_object()` to verify object type\n>  - refs: drop infrastructure to peel via iterators\n>  - refs: drop `current_ref_iter` hack\n>  - builtin/show-ref: convert to use `reference_get_peeled_oid()`\n>  - ref-filter: propagate peeled object ID\n>  - upload-pack: convert to use `reference_get_peeled_oid()`\n>  - refs: expose peeled object ID via the iterator\n>  - refs: refactor reference status flags\n>  - refs: fully reset `struct ref_iterator::ref` on iteration\n>  - refs: introduce `.ref` field for the base iterator\n>  - refs: introduce wrapper struct for `each_ref_fn`\n>  - Merge branch 'jt/repo-structure' into ps/ref-peeled-tags\n>  - Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags\n>  (this branch is used by kn/refs-optim-cleanup; uses jt/repo-structure.)\n> \n>  Some ref backend storage can hold not just the object name of an\n>  annotated tag, but the object name of the object the tag points at.\n>  The code to handle this information has been streamlined.\n> \n>  Will merge to 'next' after base topics are merged.\n>  source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>\n\nBoth dependencies have landed, so this should be ready to be merged now.\n\n> * je/doc-data-model (2025-10-27) 1 commit\n>  - doc: add an explanation of Git's data model\n> \n>  Add a new manual that describes the data model.\n> \n>  Comments?\n>  source: <pull.1981.v4.git.1761593537924.gitgitgadget@gmail.com>\n\nWill have another look at v5 of this series. I think it's nearing a\nstate where it's good enough to be merged down.\n\nThanks!\n\nPatrick\n"},{"id":"530037","messageId":"xmqqa5172hno.fsf@gitster.g","threadId":"64406","inReplyTo":"aQRaRuBtt_r7SamL@pks.im","subject":"Re: What's cooking in git.git (Oct 2025, #12; Thu, 30)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-10-31T15:51:55Z","receivedAt":"2025-10-31T15:51:58Z","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>> * je/doc-data-model (2025-10-27) 1 commit\n>>  - doc: add an explanation of Git's data model\n>> \n>>  Add a new manual that describes the data model.\n>> \n>>  Comments?\n>>  source: <pull.1981.v4.git.1761593537924.gitgitgadget@gmail.com>\n>\n> Will have another look at v5 of this series. I think it's nearing a\n> state where it's good enough to be merged down.\n\nI share that assessment.\n\nThanks.\n"},{"id":"530042","messageId":"CAPig+cQm7xY4ihQk=pA_4kVGnrvx3tt+CnsFxOhx7=6TB9z3Hw@mail.gmail.com","threadId":"64406","inReplyTo":"aQRaRuBtt_r7SamL@pks.im","subject":"Re: What's cooking in git.git (Oct 2025, #12; Thu, 30)","fromName":"Eric Sunshine","fromEmail":"sunshine@sunshineco.com","sentAt":"2025-10-31T17:33:44Z","receivedAt":"2025-10-31T17:34:02Z","isPatch":false,"sender":{"key":"sunshine@sunshineco.com","avatar":"https://avatars.githubusercontent.com/u/163641?v=4"},"body":"On Fri, Oct 31, 2025 at 2:43 AM Patrick Steinhardt <ps@pks.im> wrote:\n> On Thu, Oct 30, 2025 at 02:36:54PM -0700, Junio C Hamano wrote:\n> > * lo/repo-info-all (2025-10-26) 2 commits\n> >  - repo: add --all to git-repo-info\n> >  - repo: factor out field printing to dedicated function\n> >\n> >  \"git repo info\" learned \"--all\" option.\n> >\n> >  Will merge to 'next'?\n> >  source: <20251026225409.46647-1-lucasseikioshiro@gmail.com>\n>\n> I think there's still a couple of comments from Eric on v3 of this\n> series that probably need addressing?\n\nAgreed, a re-roll is likely warranted for this series, not only to\naddress the comments I posted, but also to adopt a very sensible\nsuggestion[*] from Junio.\n\n[*]: https://lore.kernel.org/git/xmqqwm4gl7fg.fsf@gitster.g/\n"},{"id":"530124","messageId":"D3762761-3503-4DD0-977C-DC30B67A1212@gmail.com","threadId":"64406","inReplyTo":"CAPig+cQm7xY4ihQk=pA_4kVGnrvx3tt+CnsFxOhx7=6TB9z3Hw@mail.gmail.com","subject":"Re: What's cooking in git.git (Oct 2025, #12; Thu, 30)","fromName":"Lucas Seiki Oshiro","fromEmail":"lucasseikioshiro@gmail.com","sentAt":"2025-11-03T14:50:01Z","receivedAt":"2025-11-03T14:50:15Z","isPatch":false,"sender":{"key":"lucasseikioshiro@gmail.com","avatar":"https://avatars.githubusercontent.com/u/12701580?v=4"},"body":"\n> Agreed, a re-roll is likely warranted for this series, not only to\n> address the comments I posted, but also to adopt a very sensible\n> suggestion[*] from Junio.\n> \n> [*]: https://lore.kernel.org/git/xmqqwm4gl7fg.fsf@gitster.g/\n\nIndeed. I intend to send a new version soon, but I'll be busy\nfinishing and defending my master's until next week.\n"},{"id":"530140","messageId":"xmqqo6pjt2wn.fsf@gitster.g","threadId":"64406","inReplyTo":"aQRaRuBtt_r7SamL@pks.im","subject":"Re: What's cooking in git.git (Oct 2025, #12; Thu, 30)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-11-03T17:57:28Z","receivedAt":"2025-11-03T17:57:31Z","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>> * ps/ref-peeled-tags (2025-10-23) 16 commits\n>>  - ref-filter: parse objects on demand\n>> ...\n>>  - Merge branch 'jt/repo-structure' into ps/ref-peeled-tags\n>>  - Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags\n>>  (this branch is used by kn/refs-optim-cleanup; uses jt/repo-structure.)\n>> \n>>  Some ref backend storage can hold not just the object name of an\n>>  annotated tag, but the object name of the object the tag points at.\n>>  The code to handle this information has been streamlined.\n>> \n>>  Will merge to 'next' after base topics are merged.\n>>  source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>\n>\n> Both dependencies have landed, so this should be ready to be merged now.\n\nThe tip of 'next' as of today after merging this topic, it seems.\n\n    $ git tag --list --sort=version:tag 'v*.0'\n\nno longer works correctly and shows ascii sort.\n\n    v1.0.0\n    v1.1.0\n    ...\n    v2.0.0\n    v2.1.0\n    v2.10.0\n    v2.11.0\n    ...\n    v2.19.0\n    v2.2.0\n    v2.20.0\n    v2.21.0\n    ...\n    v2.49.0\n    v2.5.0\n    v2.50.0\n    v2.51.0\n    v2.6.0\n    v2.7.0\n    v2.8.0\n    v2.9.0\n\nThe merge on 'next' immediately before this topic got merged, i.e.,\n9ab444ed (Merge branch 'tc/last-modified-active-paths-optimization'\ninto next, 2025-11-03), is the last commit on the 'next'\nfirst-parent chain with which the above command works correctly.\n\nI haven't dug it further yet.\n"},{"id":"530147","messageId":"xmqqh5vbt0sf.fsf@gitster.g","threadId":"64406","inReplyTo":"xmqqo6pjt2wn.fsf@gitster.g","subject":"Re: What's cooking in git.git (Oct 2025, #12; Thu, 30)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-11-03T18:43:12Z","receivedAt":"2025-11-03T18:43:15Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> The tip of 'next' as of today after merging this topic, it seems.\n>\n>     $ git tag --list --sort=version:tag 'v*.0'\n>\n> no longer works correctly and shows ascii sort.\n>\n>     v1.0.0\n>     v1.1.0\n>     ...\n>     v2.0.0\n>     v2.1.0\n>     v2.10.0\n>     v2.11.0\n>     ...\n>     v2.19.0\n>     v2.2.0\n>     v2.20.0\n>     v2.21.0\n>     ...\n>     v2.49.0\n>     v2.5.0\n>     v2.50.0\n>     v2.51.0\n>     v2.6.0\n>     v2.7.0\n>     v2.8.0\n>     v2.9.0\n>\n> The merge on 'next' immediately before this topic got merged, i.e.,\n> 9ab444ed (Merge branch 'tc/last-modified-active-paths-optimization'\n> into next, 2025-11-03), is the last commit on the 'next'\n> first-parent chain with which the above command works correctly.\n>\n> I haven't dug it further yet.\n\nBisect points at 054f5f45 (ref-filter: parse objects on demand,\n2025-10-23), which is unfortunate, as that is the motivating step of\nthe whole topic.\n\n"},{"id":"530151","messageId":"xmqq7bw6ubaw.fsf@gitster.g","threadId":"64406","inReplyTo":"xmqqh5vbt0sf.fsf@gitster.g","subject":"Re: What's cooking in git.git (Oct 2025, #12; Thu, 30)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-11-03T20:10:47Z","receivedAt":"2025-11-03T20:10:50Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> Bisect points at 054f5f45 (ref-filter: parse objects on demand,\n> 2025-10-23), which is unfortunate, as that is the motivating step of\n> the whole topic.\n\nHere is a fairly simple reproduction.  It appears that this does not\nrequire the refs to be packed (i.e., \"t7004-tag.sh -i -v\" fails\nafter saying \"*** Loose ***\" here, without moving to the packed\ntest).\n\n t/t7004-tag.sh | 21 +++++++++++++++++++++\n 1 file changed, 21 insertions(+)\n\ndiff --git c/t/t7004-tag.sh w/t/t7004-tag.sh\nindex 10835631ca..7216a8d21c 100755\n--- c/t/t7004-tag.sh\n+++ w/t/t7004-tag.sh\n@@ -2332,4 +2332,25 @@ test_expect_success 'If tag cannot be created then tag message file is not unlin\n \ttest_path_exists .git/TAG_EDITMSG\n '\n \n+test_expect_success 'annotated tag version sort' '\n+\tgit tag -a -m \"sample 1.0\" vsample-1.0 &&\n+\tgit tag -a -m \"sample 2.0\" vsample-2.0 &&\n+\tgit tag -a -m \"sample 10.0\" vsample-10.0 &&\n+\tcat >expect <<-EOF &&\n+\tvsample-1.0\n+\tvsample-2.0\n+\tvsample-10.0\n+\tEOF\n+\n+\techo \"*** Loose ***\" &&\n+\tgit tag --list --sort=version:tag vsample-\\* >actual &&\n+\ttest_cmp expect actual &&\n+\n+\techo \"*** Packed ***\" &&\n+\tgit pack-refs --all &&\n+\tgit tag --list --sort=version:tag vsample-\\* &&\n+\ttest_cmp expect actual\n+'\n+\n+\n test_done\n"},{"id":"530154","messageId":"20251103213059.GA2528366@coredump.intra.peff.net","threadId":"64406","inReplyTo":"xmqq7bw6ubaw.fsf@gitster.g","subject":"Re: What's cooking in git.git (Oct 2025, #12; Thu, 30)","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-11-03T21:30:59Z","receivedAt":"2025-11-03T21:31:07Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Mon, Nov 03, 2025 at 12:10:47PM -0800, Junio C Hamano wrote:\n\n> Junio C Hamano <gitster@pobox.com> writes:\n> \n> > Bisect points at 054f5f45 (ref-filter: parse objects on demand,\n> > 2025-10-23), which is unfortunate, as that is the motivating step of\n> > the whole topic.\n> \n> Here is a fairly simple reproduction.  It appears that this does not\n> require the refs to be packed (i.e., \"t7004-tag.sh -i -v\" fails\n> after saying \"*** Loose ***\" here, without moving to the packed\n> test).\n\nI think the issue is that nobody ever resets data->maybe_object. So it\nis left cached with the very first object that gets looked up.\n\nSomething like this seems to fix it, but there may be a better place to\ndo the reset.\n\ndiff --git a/ref-filter.c b/ref-filter.c\nindex 7cfcd5c355..4c174f7ecc 100644\n--- a/ref-filter.c\n+++ b/ref-filter.c\n@@ -2124,6 +2124,8 @@ static int grab_values(struct atom_value *val, int deref, struct expand_data *da\n \tvoid *buf = data->content;\n \tint ret;\n \n+\tdata->maybe_object = NULL;\n+\n \tswitch (data->type) {\n \tcase OBJ_TAG:\n \t\tret = grab_tag_values(val, deref, data, refname, err, eaten);\n\n-Peff\n"},{"id":"530188","messageId":"aQn0LyW248iNDpkf@pks.im","threadId":"64406","inReplyTo":"20251103213059.GA2528366@coredump.intra.peff.net","subject":"Re: What's cooking in git.git (Oct 2025, #12; Thu, 30)","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2025-11-04T12:40:15Z","receivedAt":"2025-11-04T12:40:28Z","isPatch":false,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"On Mon, Nov 03, 2025 at 04:30:59PM -0500, Jeff King wrote:\n> On Mon, Nov 03, 2025 at 12:10:47PM -0800, Junio C Hamano wrote:\n> \n> > Junio C Hamano <gitster@pobox.com> writes:\n> > \n> > > Bisect points at 054f5f45 (ref-filter: parse objects on demand,\n> > > 2025-10-23), which is unfortunate, as that is the motivating step of\n> > > the whole topic.\n> > \n> > Here is a fairly simple reproduction.  It appears that this does not\n> > require the refs to be packed (i.e., \"t7004-tag.sh -i -v\" fails\n> > after saying \"*** Loose ***\" here, without moving to the packed\n> > test).\n\nOof.\n\n> I think the issue is that nobody ever resets data->maybe_object. So it\n> is left cached with the very first object that gets looked up.\n> \n> Something like this seems to fix it, but there may be a better place to\n> do the reset.\n\nYeah, I think this makes sense. I'd attribute the root cause here to the\nfact that both `oi` and `oi_peeled` are global variables. I didn't\nrealize that and thought it would be populated for every reference\nindividually, but that's obviously not the case.\n\nOnly thing I'd change is to instead call `get_object()`, which is the\nentry point for `grab_values()`.\n\nWill send a patch in a bit, thanks both!\n\nPatrick\n"}]}