2016-04-02 11 views
1

Gibt es eine Möglichkeit, --word-diff für LaTeX-Dateien (* .tex) zu verwenden und den Standard-Zeilenunterschied für andere Dateitypen beizubehalten?Wie git diff --word-diff-Option automatisch für * .tex-Dateien verwenden, aber nicht für andere?

Was ich erreichen möchte, ist mit git diff Befehl und lassen Sie Git die Wortdifferenz auf * .tex-Dateien automatisch zeigen, ohne jedes Mal git diff --word-diff schreiben zu müssen. Gleichzeitig möchte ich, dass Git den Standardzeilenunterschied für andere Dateitypen anzeigt. Ist das möglich?

Antwort

4

Siehe the Generating diff text section of the gitattributes documentation. Um jedoch automatisch Differenzen für *.tex Dateien zu erhalten, müssen Sie dies zusammen mit zusätzlichen Informationen dort und in einigen anderen Dokumenten einfügen.

auch, zumindest in meiner aktuellen git Version (2.7.4), die eingebaute in regex für tex-Dateien ist gebrochen:

so muss ich arbeiten, um das noch härter .

Setzt man diese alle zusammen:

$ cat .gitattributes 
*.tex diff=tex 
$ git config --get diff.tex.wordregex 
\\[a-zA-Z]+|[{}]|\\.|[^\{}[:space:]]+ 

(diese regex ist direkt aus der gitattributes Dokumentation), plus eine weitere Konfigurationselement und ein Treiber:

$ git config --get diff.tex.command 
git-word-diff-driver 
$ cat ~/scripts/git-word-diff-driver 
#! /bin/sh 
# 
# args are: 
# path old-file old-hex old-mode new-file new-hex new-mode 
git diff --word-diff $2 $5 
exit 0 

(Dieses Skript verbessert werden könnte, aber es zeigt die allgemeine Idee.Der exit 0ist erforderlich, da git diff einenNull-Exit hat, wenn sich die Dateien unterscheiden, da sie dazu tendieren.Glücklicherweise gibt es keinen Schutz vor endloser Rekursion seit git diff --word-diff path1path2 ruft den gitattributes-Treiber nicht erneut auf.)