git: smudge запускается только когда включен textconv - PullRequest
0 голосов
/ 11 декабря 2019

Мне трудно понять, когда smudge фильтр работает точно;я использую оба фильтра (с smudge) и diff (с textconv);и я хочу сгенерировать разницу между HEAD~ и HEAD:

git diff HEAD~ HEAD

мой рабочий каталог чистый;если я комментирую textconv в .git/config, тогда фильтр smudge не запускается;


кажется, что:

smudge фильтр запускается только тогда, когда textconvвключен;

мой вопрос прост;я хочу знать, правда ли это;

1 Ответ

0 голосов
/ 12 декабря 2019

Здесь есть несколько настроек, и по вашему вопросу сложно определить, какие из них вы используете.

Фильтр пятна работает, когда:

  • указан фильтр пятендля файла, и
  • 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...