v2: Thanks Junio and Jacob for review! * fixed up the last patch to rephrase the error message to contain an 'and' * use HAS_MULTI_BITS as well * a bonus patch that uses HAS_MULTI_BITS for the existing code, too. v1 After some discussion [1], we're convinced that the original approach for adding in just another pickaxe mode to find blobs was too hacky. So I went the less hacky way and did some refactoring first (patches 1-3), Then we'll have the new pickaxe mode to find blobs in patch 4. It grew slightly larger as it had issues with the setup (we neither have a regex nor a KWS to init) in this new world, so there are a few more lines in there. The last patch is just the cherry on the cake, helping to keep users sane by warning when they try to use different pickaxe modes at the same time. Thanks, Stefan [1] https://public-inbox.org/git/CAGZ79kaB0G9zetF6QtC45+ZGLM3gOsYWV7e+gkCe2yKOhb0Ssg@xxxxxxxxxxxxxx/ Stefan Beller (6): diff.h: Make pickaxe_opts an unsigned bit field diff: migrate diff_flags.pickaxe_ignore_case to a pickaxe_opts bit diff: introduce DIFF_PICKAXE_KINDS_MASK diffcore: add a pickaxe option to find a specific blob diff: properly error out when combining multiple pickaxe options diff: use HAS_MULTI_BITS instead of counting bits manually Documentation/diff-options.txt | 10 +++++++ builtin/log.c | 4 +-- combine-diff.c | 2 +- diff.c | 43 ++++++++++++++++++-------- diff.h | 13 ++++++-- diffcore-pickaxe.c | 48 ++++++++++++++++------------- revision.c | 7 +++-- t/t4064-diff-oidfind.sh | 68 ++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 155 insertions(+), 40 deletions(-) create mode 100755 t/t4064-diff-oidfind.sh -- 2.16.0.rc0.223.g4a4ac83678-goog