eg. given this setup:
# install current release version as of this issue
curl -Ls https://github.com/amoffat/supertag/releases/download/v0.1.4/supertag-x86_64.AppImage > /tmp/tag-0.1.4
chmod +x /tmp/tag-0.1.4
function tag() { /tmp/tag-0.1.4 "$@"; }
# make a debug collection
cd /mnt # change to your base (mine is ~)
sudo mkdir -p supertagdebug
sudo chown $USER:$USER supertagdebug
tag mount supertagdebug
cd supertagdebug
this test case fails:
touch /tmp/{a1,a2,ab,b1,b2,c1}
tag ln /tmp/{a1,a2,ab,b1,b2,c} $PWD/basetag/
tag ln /tmp/{a1,a2,ab} $PWD/basetag/a
tag ln /tmp/{ab,b1,b2} $PWD/basetag/b
tag ln /tmp/c1 $PWD/basetag/c
echo "actual:"
ls basetag/-a/-b/_/
echo "actual vs expected:"
diff <(ls basetag/-a/-b/_/) - << EXPECTED
c1
EXPECTED
echo "actual vs no filtering:"
diff <(ls basetag/-a/-b/_/) <(ls basetag/_/)
I get the output:
actual:
a1
a2
b1
b2
c1
actual vs expected:
1,4d0
< a1
< a2
< b1
< b2
actual vs no filtering:
2a3
> ab
it seems to be excluding the intersection of the intersected tags, rather than individually excluding each separate exclude tag.