Git diff игнорирует textconv при указании путей - PullRequest
0 голосов
/ 06 сентября 2018

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

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

1 Ответ

0 голосов
/ 06 сентября 2018

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

cmd /K git diff --textconv %base %mine
...