Я настроил свой git diff так, что когда он вызывается в двоичном файле, он будет использовать пользовательскую программу в качестве textconv, которая указана в файле .gitconfig. Это будет выглядеть так
[diff "file"]
textconv = python "'/path/to/program.py'"
xfuncname = .*name=.*
[core]
attributesfile = ~/.gitattributes
и в файле .gitattributes у меня есть
*.file diff=file
Это отлично работает, если применяется к моему репозиторию git и в терминале. Тем не менее, моя компания использует TortoiseGit в качестве внешнего интерфейса для git, который предоставляет свои собственные инструменты сравнения, которые я не смог использовать с опцией textconv. Вместо просмотра diff я ввел команду типа
cmd /K git diff %base %mine
Результат будет тогда
diff --git "a/path/in/repo.file" "b/temporary/path/out/of/repo.file"
index e4ab82c..3c0f4d7 100644
Binary files "a/path/in/repo.file" and "b/temporary/path/out/of/repo.file" differ
Обычно git применяет textconv к двоичным файлам и будет работать без проблем, если вместо «%base» будет указано «HEAD». Я подозреваю, что git работает так, как если бы он был вызван с --no-index и игнорирует файл .gitattributes и, следовательно, теперь не должен применять textconv.
Есть ли способ обойти эту проблему?