如何为* .tex文件自动使用git diff --word-diff选项而不是其他文件?

时间:2016-04-02 01:03:16

标签: git latex git-diff

有没有办法将--word-diff用于LaTeX文件(* .tex)并保留其他文件类型的标准线差异?

我想要实现的是使用git diff命令,让git自动显示* .tex文件中的单词差异,而无需每次都写git diff --word-diff。同时我希望git显示其他文件类型的标准行差异。这可能吗?

1 个答案:

答案 0 :(得分:6)

the Generating diff text section of the gitattributes documentation。但是,要为*.tex文件自动获取单词差异 ,您必须将其与其他文档中的其他信息放在一起。

此外,至少在我目前的git版本(2.7.4)中,tex文件的内置正则表达式已被破坏:

fatal: Invalid regular expression: \\[a-zA-Z@]+|\\.|[a-zA-Z0-9<80>-<FF>]+|[^[:sp

所以我必须努力解决这个问题。

将这些全部放在一起:

$ 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 path1 path2不会重新调用gitattributes驱动程序。)