Here's a new version. With this, Git can function with both version 1 (incorrect murmur3) and version 2 (correct murmur3) changed path filters, but not at the same time: the user can set a config variable to choose which one, and Git will ignore existing changed path filters of the wrong version (and always write the version that the config variable says). In patch 1, the test assumes that char is signed. I'm not sure if it's worth asserting on the contents of the filter, since it depends on whether char is signed, but I've included it anyway (since it's easy to remove). Jonathan Tan (3): t4216: test changed path filters with high bit paths repo-settings: introduce commitgraph.changedPathsVersion commit-graph: new filter ver. that fixes murmur3 Documentation/config/commitgraph.txt | 16 +++++-- bloom.c | 65 ++++++++++++++++++++++++++-- bloom.h | 8 ++-- commit-graph.c | 29 ++++++++++--- oss-fuzz/fuzz-commit-graph.c | 2 +- repo-settings.c | 6 ++- repository.h | 2 +- t/helper/test-bloom.c | 9 +++- t/t0095-bloom.sh | 8 ++++ t/t4216-log-bloom.sh | 65 ++++++++++++++++++++++++++++ 10 files changed, 192 insertions(+), 18 deletions(-) Range-diff against v1: 1: 3a5d53d3c0 < -: ---------- t4216: test wrong bloom filter version rejection 2: 5a91f9682b < -: ---------- commit-graph: fix murmur3, bump filter ver. to 2 -: ---------- > 1: 175dc912fe t4216: test changed path filters with high bit paths -: ---------- > 2: 4a7553f3fb repo-settings: introduce commitgraph.changedPathsVersion -: ---------- > 3: f5c3f6080a commit-graph: new filter ver. that fixes murmur3 -- 2.41.0.rc0.172.g3f132b7071-goog