When this is not enabled, each file that git wants to filter involves starting up a new git-annexsmudge
process. Starting many such processes for many files can be slow, and can make commands like gitcheckout
and gitadd slow when they are operating on a lot of files. (A lot of locked annexed files do not make
gitcheckout slow, but unlocked files and non-annexed files do slow it down.)
On the other hand when this is enabled, gitadd of a large file does an unnecessary extra read of the
file, and pipes its contents into git-annex. So when this is enabled, it will be faster to use git-annexadd to add large files to the annex, rather than gitadd. Other commands that add files, like gitcommit-a, are also impacted by this.
This is used by default in git-annex repositories v9 and above, while v8 repositories use git-annexsmudge for backwards compatability with older versions of git-annex.
To enable this in a v8 repository, run:
git config filter.annex.process 'git-annex filter-process'
To disable it, you can just unset the config:
git config --unset filter.annex.process
There will be no visible difference in behavior between enabling this and not, besides changes in speed
and memory use when using git.