Я настроил свой 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. Вместо этого для просмотра различий я ввел команду типа
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.
Есть ли способ обойти эту проблему?