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)
你可以发布(或链接)一个完整的例子吗?我已经准确地设置了你所描述的内容,它似乎工作得很好.也就是说,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)
| 归档时间: |
|
| 查看次数: |
1228 次 |
| 最近记录: |