Возможен ли git difftool для двоичных файлов? Если да, то как его настроить?
Здесь и здесь я следовал руководствам, подобным этим, о том, как различать двоичные файлы в git, а именно - файлах.odt и файлах Microsoft Word.
Они позволили мне $git diff <commit>
в файлах.odt и файлах Microsoft Word для отображения разницы в терминале; Однако их методы, кажется, не работают с $git difftool <commit>
в двоичных файлах, таких как файлы.odt или.docx.
В идеале я хотел бы отобразить текстовый diff файлов.odt или.docx во внешней программе, такой как kdiff3 или vimdiff из git.
Это возможно? Кто-нибудь смог правильно отобразить текст бинарных файлов во внешней программе из git? Если да, то какой совет по настройке difftool для двоичных файлов?
0 ответов
Недавно столкнулся с такой же проблемой.
Из https://git-scm.com/docs/gitattributes:
A textconv, by comparison, is much more limiting. You provide a transformation of the data into a line-oriented text format, and Git uses its regular diff tools to generate the output.
Проще говоря, textconv работает только для обычного git diff, но не для difftool.
Чтобы заставить difftool работать, поместите следующее в $HOME/.gitconfig:
[difftool "docx"]
cmd = t1=`mktemp` && `pandoc -t plain $LOCAL >$t1` && t2=`mktemp` && `pandoc -t plain $REMOTE >$t2` && meld $t1 $t2 && rm -f $t1 $t2
Теперь можно запустить:
$ git difftool --tool docx
Вышеупомянутое использует pandoc для преобразования docx в текст и объединяет в качестве внешнего diff.