2010-08-04 7 views
12

Wenn ein Diff sehen git diff starten, öffnet sich jede Änderung mit Zeile wie:Customizing Schriften in git diff

@@ -28,41 +20,10 @@ namespace ConsoleApplication1 

Für C, der letzte Teil recht beschreibend ist - es zeigt zum Beispiel die Funktion, bei der die Änderung aufgetreten ist . Aber für C# wird immer nur der Namespace angezeigt, was nicht sehr nützlich ist. Ich denke, das ist, weil es die letzte Zeile zeigt, die nicht eingerückt ist. Gibt es eine Möglichkeit, dies zu konfigurieren?

+0

Haben Sie eine gute Konfiguration erreicht? Ich habe versucht * .cs diff = csharp, aber ich bekomme immer noch Namespaces. diff = java funktioniert besser aber .. – elmarco

+0

Ja, es funktioniert für mich, haben Sie eine kürzlich genug Version von Git? diff = csharp sollte seit 1.7.3 funktionieren. – svick

+0

1.7.10 hier, von Debian instabil, werde ich versuchen, später zu graben, für jetzt ist Java in Ordnung :) – elmarco

Antwort

16

Ich habe es gefunden, wird die Leitung großes Stück Header genannt und the documentation sagt, wie es gestalten:

eine benutzerdefinierte Hunk-header

Jede Gruppe von Änderungen definieren in der (ein „großes Stück“ genannt) Die Text-Diff-Ausgabe wird mit einer Zeile des Formulars vorangestellt:

@@ -k,l +n,m @@ TEXT 

Dies wird als Hunk-Header bezeichnet. Der TEXT-Teil ist standardmäßig eine Zeile, die mit einem Alphabet, einem Unterstrich oder einem Dollarzeichen beginnt; Dies entspricht der von GNU diff -p ausgegebenen Ausgabe. Diese Standardauswahl ist jedoch für einige Inhalte nicht geeignet, und Sie können ein benutzerdefiniertes Muster verwenden, um eine Auswahl zu treffen.

Zunächst würden Sie in .gitattributes das Attribut diff für Pfade zuweisen.

*.tex diff=tex 

Dann würden Sie eine „diff.tex.xfuncname“ Konfiguration definieren einen regulären Ausdruck angeben, die eine Linie übereinstimmt, die Sie würden als großes Stück Header „TEXT“ angezeigt wird. Fügen Sie einen Abschnitt in Ihrer $GIT_DIR/config Datei (oder $HOME/.gitconfig Datei) wie folgt aus:

[diff "tex"] 
     xfuncname = "^(\\\\(sub)*section\\{.*)$" 

Hinweis. Eine einzelne Ebene von umgekehrten Schrägstrichen wird vom Konfigurationsdateiparser aufgefressen, sodass Sie die umgekehrten Schrägstriche verdoppeln müssen. Das obige Muster wählt eine Zeile aus, die mit einem umgekehrten Schrägstrich beginnt, und null oder mehr Vorkommen von sub, gefolgt von Abschnitt gefolgt von offener Klammer, bis zum Ende der Zeile.

3

Siehe gitattributes manpage, der Abschnitt "Differenztext erstellen", und z. diff.csharp.xfuncname Konfiguration (Suche nach xfuncname).