2016-04-02 6 views
1

Есть ли способ использовать --word-diff для файлов LaTeX (* .tex) и сохранить стандартную разницу в линиях для других типов файлов?Как автоматически использовать параметр git diff --word-diff для файлов * .tex, но не для других?

Что я хочу достичь, это использовать команду git diff и дать git разницу слов на * .tex файлах автоматически, без необходимости писать git diff --word-diff каждый раз. В то же время я хочу, чтобы git показывал стандартную разницу строк для других типов файлов. Это возможно?

ответ

4

См. the Generating diff text section of the gitattributes documentation. Однако, чтобы автоматически получить слово diffs всего за *.tex файлов, вы должны поместить это вместе с дополнительной информацией в другие документы.

Кроме того, по крайней мере, в моей текущей версии мерзавца (2.7.4), встроенный в регулярном выражении для текс файлов сломан:

так что я должен работать вокруг, что еще сложнее ,

Собираем это все вместе:

$ cat .gitattributes 
*.tex diff=tex 
$ git config --get diff.tex.wordregex 
\\[a-zA-Z]+|[{}]|\\.|[^\{}[:space:]]+ 

(это регулярное выражение прямо из документации gitattributes), плюс еще один элемент конфигурации и один водитель:

$ git config --get diff.tex.command 
git-word-diff-driver 
$ cat ~/scripts/git-word-diff-driver 
#! /bin/sh 
# 
# args are: 
# path old-file old-hex old-mode new-file new-hex new-mode 
git diff --word-diff $2 $5 
exit 0 

(Этот сценарий может быть улучшен, но он показывает общую идею. exit 0 требуется, так как git diff имеет ненулевой выход, если файлы отличаются, как они склонны. К счастью, нет необходимости защищать от бесконечной рекурсии с git diff --word-diff path1path2 не вызывает повторного вызова драйвера gitattributes.)

 Смежные вопросы

  • Нет связанных вопросов^_^