Здесь есть несколько настроек, и по вашему вопросу сложно определить, какие из них вы используете.
Фильтр пятна работает, когда:
- указан фильтр пятендля файла, и
- Git копирует файл из индекса в рабочее дерево или (с новыми опциями
--textconv
в git show
и git cat-file
), показывая зафиксированный или индексный видфайл.
Кэш для фильтра пятен - это копия файла рабочего дерева. Если копия рабочего дерева актуальна - или даже если Git просто считает обновленной, даже если она на самом деле не актуальна - фильтр размазывания не будет работать.
Фильтр textconv запускается, когда Git извлекает зафиксированный или индексный файл с целью подачи его во внутренний или внешний diff. Если для этого извлечения требуется фильтр пятен, Git запустит фильтр пятен. (Я не уверен, что Git будет использовать копию рабочего дерева в качестве кэшированной записи, если она выглядит актуальной, но это может быть целесообразно. Это повлияет на любые измерения использования фильтра smudge при выполнении textconvопераций.)
Кэш для фильтра textconv определяется пользователем и по умолчанию отключен :
Поскольку преобразование текста может быть медленным, особенно при выполненииGit предоставляет большое количество из них с git log -p
, который обеспечивает механизм кеширования выходных данных и использования его в будущих различиях. Чтобы включить кэширование, установите переменную «cachetextconv» в настройках вашего драйвера diff. ...
См. документацию по gitattributes для остальной части этого описания и некоторые советы о том, когда включать кэширование textconv и определять ли преобразование текста или использовать внешний diff.