使用git的word-diff来输入latex文件

时间:2011-09-24 23:10:59

标签: git word-diff gitattributes

我希望git diff为所有文件输出常规差异,但* .tex除外。对于* .tex文件,我希望看到git diff --word-diff的输出。

我正在玩.gitattributes.gitconfig,但我得到的最远的是获得一个.tex文件的部分显示,然后是崩溃。

是否有可能出现这种行为?

我的.gitattributes

*.tex diff=latex

.gitconfig

[diff "latex"]
    wordRegex = "\\\\[a-zA-Z]+|[{}]|\\\\.|[^\\{}[:space:]]+"
    command = ~/bin/word-diff.sh

word-diff.sh

#!/bin/sh 
git --no-pager diff --color-words "$2" "$5"

1 个答案:

答案 0 :(得分:6)

你可以发布(或链接)一个完整的例子吗?我已经准确地设置了你所描述的内容,它似乎工作得很好。也就是说,diff输出突出显示单词而不是行,并且我所做的所有更改都包含在内(也就是说,它没有提前删除或任何内容)。唯一的异常是差异总是会退出:

external diff died, stopping at foo.tex.

这是因为git diff在以您使用它的方式运行时,其行为类似于独立的diff工具:如果文件不同,它将以非零退出代码退出。 Git不期望这种行为;它假定您的自定义命令将始终成功执行,并且错误退出代码表示实际问题。

Git已经知道文件是不同的,并且不需要外部命令来做出这个决定。外部命令严格来说是一种格式化工具。

如果您修改diff-words.sh脚本以便始终成功退出,那么事情应该更好:

#!/bin/sh
git --no-pager diff --color-words "$2" "$5"
exit 0