git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 0/6] last-modified: use the pathspec's Bloom key to pre-filter commits

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 31, 2026, 21:19 UTC
Message-ID
<xmqqmru2ugxn.fsf@gitster.g>
In-Reply-To
<20260831-toon-speed-up-last-modified-v3-0-2bbb864acf93@iotcl.com>
Toon Claes <toon@iotcl.com> writes:
Show 11 quoted lines
> Similar timings are seen across a few other repositories (like GitLab's
> monolith gitlab-org/gitlab).
>
> [1]: https://lore.kernel.org/git/17f356ff-7bfb-47f5-b714-62a95cc8b821@codeberg.org/
> [2]: https://codeberg.org/ziglang/zig
>
> ---
> Changes in v3:
> - Add trace2 "bloom_queries" and use it in test to verify top-level
>   wildcard behavior.
> - Link to v2: https://patch.msgid.link/20260807-toon-speed-up-last-modified-v2-0-7d87bbdeaf9b@iotcl.com
Merged to 'seen', pushed the result out, and saw this:
  https://github.com/git/git/actions/runs/33429987759/job/99612809093#step:10:1391

It seems that it is reproducible locally with the variable settings stolen from ci/run-build-and-tests.sh, i.e.,

    $ bash
    sh-5.3$ export OPENSSL_SHA1_UNSAFE=YesPlease
    sh-5.3$ export GIT_TEST_SPLIT_INDEX=yes
    sh-5.3$ export GIT_TEST_FULL_IN_PACK_ARRAY=true
    sh-5.3$ export GIT_TEST_OE_SIZE=10
    sh-5.3$ export GIT_TEST_OE_DELTA_SIZE=5
    sh-5.3$ export GIT_TEST_COMMIT_GRAPH=1
    sh-5.3$ export GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1
    sh-5.3$ export GIT_TEST_MULTI_PACK_INDEX=1
    sh-5.3$ export GIT_TEST_MULTI_PACK_INDEX_WRITE_INCREMENTAL=1
    sh-5.3$ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
    sh-5.3$ export GIT_TEST_NO_WRITE_REV_INDEX=1
    sh-5.3$ export GIT_TEST_CHECKOUT_WORKERS=2
    sh-5.3$ export GIT_TEST_PACK_USE_BITMAP_BOUNDARY_TRAVERSAL=1
    sh-5.3$ make T='t8020*' test

and it does reproduce when the topic is tested standalone (I've kept the base that I have used to queue the previous iteration, 41365c2a9b The 4th batch for Git 2.56).

Ejected out of 'seen' for now.
Previous: Junio C HamanoNext: Toon Claes
Message 11 of 22 in “last-modified: use the pathspec's Bloom key to pre-filter commits”
  1. 0/6 last-modified: use the pathspec's Bloom key to pre-filter commitsToon Claes, Aug 31, 2026
  2. 1/6 revision: move bloom keyvec precondition into functionToon Claes, Aug 31, 2026
  3. 2/6 revision: expose check for paths maybe changed in Bloom filterToon Claes, Aug 31, 2026
  4. 3/6 bloom: add helper to check if any key in a vector is presentToon Claes, Aug 31, 2026
  5. 4/6 revision: add Bloom check that includes parent directoriesToon Claes, Aug 31, 2026
  6. 5/6 last-modified: check pathspec against Bloom filter firstToon Claes, Aug 31, 2026
  7. 6/6 last-modified: keep per-path Bloom filters for wildcard pathspecsToon Claes, Aug 31, 2026
  8. Junio C HamanoSep 1, 2026
  9. Toon ClaesSep 1, 2026
  10. Junio C HamanoSep 1, 2026
  11. Junio C HamanoAug 31, 2026
  12. 0/6 last-modified: use the pathspec's Bloom key to pre-filter commitsToon Claes, Sep 1, 2026
  13. 1/6 revision: move bloom keyvec precondition into functionToon Claes, Sep 1, 2026
  14. 2/6 revision: expose check for paths maybe changed in Bloom filterToon Claes, Sep 1, 2026
  15. 3/6 bloom: add helper to check if any key in a vector is presentToon Claes, Sep 1, 2026
  16. Patrick SteinhardtSep 10, 2026
  17. 4/6 revision: add Bloom check that includes parent directoriesToon Claes, Sep 1, 2026
  18. Patrick SteinhardtSep 10, 2026
  19. 5/6 last-modified: check pathspec against Bloom filter firstToon Claes, Sep 1, 2026
  20. Patrick SteinhardtSep 10, 2026
  21. 6/6 last-modified: keep per-path Bloom filters for wildcard pathspecsToon Claes, Sep 1, 2026
  22. Patrick SteinhardtSep 10, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.