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

Evg*_*nii 4 git latex git-diff

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

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

tor*_*rek 7

请参阅文档的" 生成差异文本"部分gitattributes.然而,自动获取字的diff 只是*.tex文件,必须连同其他信息那里和其他一些文件把这个.

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

fatal: Invalid regular expression: \\[a-zA-Z@]+|\\.|[a-zA-Z0-9<80>-<FF>]+|[^[:sp
Run Code Online (Sandbox Code Playgroud)

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

把这些放在一起:

$ cat .gitattributes
*.tex   diff=tex
$ git config --get diff.tex.wordregex
\\[a-zA-Z]+|[{}]|\\.|[^\{}[:space:]]+
Run Code Online (Sandbox Code Playgroud)

(这个正则表达式直接来自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
Run Code Online (Sandbox Code Playgroud)

(这个脚本可能会有所改进,但它显示了一般的想法.如果文件不同,exit 0则需要git diff非零退出,因为它们倾向于.幸运的是,没有必要防止无限递归,因为不会重新调用gitattributes驱动程序).git diff --word-diff path1 path2