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

Nik*_*vic 10 git gitattributes word-diff

我希望git diff输出所有文件的常规差异,除了*.tex.对于*.tex文件,我想看看输出git diff --word-diff.

我和玩弄.gitattributes.gitconfig,但我得到了最远的是得到一个.tex文件中的部分显示,随后坠毁.

有可能得到这种行为吗?

我的.gitattributes:

*.tex diff=latex
Run Code Online (Sandbox Code Playgroud)

.gitconfig:

[diff "latex"]
    wordRegex = "\\\\[a-zA-Z]+|[{}]|\\\\.|[^\\{}[:space:]]+"
    command = ~/bin/word-diff.sh
Run Code Online (Sandbox Code Playgroud)

并且word-diff.sh:

#!/bin/sh 
git --no-pager diff --color-words "$2" "$5"
Run Code Online (Sandbox Code Playgroud)

lar*_*sks 6

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

external diff died, stopping at foo.tex.
Run Code Online (Sandbox Code Playgroud)

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

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

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

#!/bin/sh
git --no-pager diff --color-words "$2" "$5"
exit 0
Run Code Online (Sandbox Code Playgroud)