10

git diff*.texを除くすべてのファイルの通常の差分を出力したいと思います。* .texファイルの場合、。の出力を確認したいと思いますgit diff --word-diff

.gitattributesとで遊んで.gitconfigいましたが、最も遠いのは、1つの.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"
4

1 に答える 1

6

完全な例を投稿(またはリンク)できますか?私はあなたが説明したことを正確に設定しました、そしてそれはうまくいくようです。つまり、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
于 2011-09-25T00:53:38.530 に答える