【问题标题】:use git's word-diff for latex files对乳胶文件使用 git 的 word-diff
【发布时间】:2011-11-24 10:42:57
【问题描述】:

我想让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"

【问题讨论】:

  • 你是怎么想出“$2”和“$5”的?我在任何地方都找不到这方面的信息。
  • 找到了,抱歉。对于其他想知道的人,请在 git man page 中搜索 GIT_EXTERNAL_DIFF。
  • 顺便说一句,supposed to be 有一个内置的差异模式“tex”可用,它应该给你合理的大块头。但这似乎对我不起作用。

标签: git word-diff gitattributes


【解决方案1】:

你能发布(或链接到)一个完整的例子吗?我已经完全按照您的描述进行了设置,并且似乎工作正常。也就是说,diff 输出突出显示了单词而不是行,并且我所做的所有更改都被包括在内(也就是说,它并没有提前废话或任何东西)。唯一的异常是 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

【讨论】:

  • 那是我得到的确切错误信息。添加exit 0 成功了,谢谢!
猜你喜欢
  • 2012-02-07
  • 2011-01-29
  • 2011-12-04
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 2014-10-07
  • 2018-08-10
  • 1970-01-01
相关资源
最近更新 更多