Am 11.06.22 um 00:19 schrieb Udoff, Marc: > Hi, > > I believe there is a bug in git status that happens when a file > changes but the filtered version of the file does not. Correctly, > git diff does not show anything as different and git commit believes > there is nothing to commit. > > Reproducer: > $ git init > $ touch bar > $ git add bar > $ git commit -am 'Bar' > [main (root-commit) dd12b3e] Bar > 1 file changed, 0 insertions(+), 0 deletions(-) > create mode 100644 bar > $ echo -en '\n[filter "noat"]\n clean = grep -v "@"\n' >> .git/config > $ cat .git/config > [core] > repositoryformatversion = 0 > filemode = true > bare = false > logallrefupdates = true > > [filter "noat"] > clean = grep -v "@" > $ echo -en 'abc\n@def\nghi\n' > bar > $ cat bar > abc > @def > ghi > $ echo "* filter=noat" > .gitattributes > $ git commit -am 'No at bar' > [main e81ee3b] No at bar > 2 files changed, 3 insertions(+) > create mode 100644 .gitattributes > $ git show HEAD:bar > abc > ghi > $ echo "@another line" >> bar # Add another @ which will be filtered. touch doesn't cause this bug > $ git status --porcelain > M bar git status does not compute differences; it only looks at the stat information, and that is by design for performance reasons. So, IMO, this is working as designed and not a bug. -- Hannes