Git diff игнорирует textconv при указании путей

Я настроил свой 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.

Есть ли способ обойти эту проблему?


person Talon    schedule 06.09.2018    source источник


Ответы (1)


Принудительно преобразуйте textconv с помощью параметра --textconv:

cmd /K git diff --textconv %base %mine
person blue112    schedule 06.09.2018
comment
Я не знал, что у diff есть такая опция. Спасибо, это решило мою проблему! - person Talon; 06.09.2018