有没有办法将--word-diff
用于LaTeX文件(* .tex)并保留其他文件类型的标准线差异?
我想要实现的是使用git diff
命令,让git自动显示* .tex文件中的单词差异,而无需每次都写git diff --word-diff
。同时我希望git显示其他文件类型的标准行差异。这可能吗?
答案 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驱动程序。)