2010-08-04 19 views
12

Quando si visualizza un diff utilizzando git diff, ogni cambio inizia con linea come:voci Personalizzazione in git diff

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

Per C, la parte finale è abbastanza descrittivo - mostra ad esempio la funzione in cui si è verificato il cambiamento . Ma per C#, mostra sempre solo lo spazio dei nomi, che non è molto utile. Penso che sia perché mostra l'ultima riga che non è rientrata. C'è un modo come configurare questo?

+0

sei riuscito ad ottenere una buona configurazione? Ho provato * .cs diff = csharp, ma ho ancora spazi dei nomi. diff = java funziona meglio però .. – elmarco

+0

Sì, funziona per me, hai una versione abbastanza recente di git? diff = csharp dovrebbe funzionare dal 1.7.3. – svick

+0

1.7.10 qui, da debian unstable, proverò a scavare più tardi, per ora java è ok :) – elmarco

risposta

16

ho trovato, la linea si chiama intestazione pezzo e the documentation dice come personalizzarlo:

Definizione di un pezzo-header personalizzato

Ogni gruppo di modifiche (chiamato "pezzo") nella l'output testuale è preceduto da una riga del modulo:

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

Questo è chiamato intestazione di hunk. La porzione "TESTO" è per impostazione predefinita una riga che inizia con un alfabeto, un trattino basso o un segno di dollaro; questo corrisponde a quello utilizzato dall'uscita GNU diff -p. Questa selezione predefinita tuttavia non è adatta per alcuni contenuti ed è possibile utilizzare un modello personalizzato per effettuare una selezione.

Per prima cosa, in .gitattributes, è necessario assegnare l'attributo diff per i percorsi.

*.tex diff=tex 

Poi, si potrebbe definire una configurazione "diff.tex.xfuncname" per specificare un'espressione regolare che corrisponde a una linea che si vuole apparire come l'intestazione pezzo "TEXT". Aggiungere una sezione al vostro file di $GIT_DIR/config (o $HOME/.gitconfig file) in questo modo:

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

Nota. Un singolo livello di backslash viene mangiato dal parser del file di configurazione, quindi è necessario raddoppiare i backslash; il modello sopra seleziona una linea che inizia con una barra rovesciata e zero o più occorrenze di sub seguito da una sezione seguita da parentesi aperta, alla fine della riga.

3

Vedere gitattributes manpage, la sezione "Generazione del testo diff" e ad es. Configurazione diff.csharp.xfuncname (cercare xfuncname).