2010-08-04 61 views
12

當觀看使用git diff一個diff,每個改變與像行開始:定製標題

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

對於C,在最後一部分是相當描述 - 它示出了用於例如在其中發生變化的功能。但對於C#,它只顯示名稱空間,這不是非常有用。我認爲這是因爲它顯示了最後一行沒有縮進。有沒有辦法如何配置這個?

+0

您是否設法獲得良好配置?我試過* .cs diff = csharp,但我仍然得到命名空間。 diff = java雖然效果更好.. – elmarco 2012-06-28 18:50:31

+0

是的,它確實對我有用,你有最近版本的git嗎? diff = csharp應該從1.7.3開始工作。 – svick 2012-06-28 20:22:37

+0

1.7.10在這裏,從debian不穩定,我會盡力挖掘後,現在java是OK :) – elmarco 2012-06-29 13:20:14

回答

16

我發現它時,線被稱爲大塊頭頭和the documentation說如何定義它:

定義自定義大塊頭

每組變化的(稱爲「大塊」)文本差異輸出以以下格式的行作爲前綴:

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

這被稱爲大塊頭。默認情況下,「TEXT」部分是以字母,下劃線或美元符號開頭的行;這匹配GNU diff -p輸出使用的內容。但是,此默認選擇不適用於某些內容,您可以使用自定義模式進行選擇。

首先,在.gitattributes中,您將爲路徑指定diff屬性。

*.tex diff=tex 

然後,你會定義一個「diff.tex.xfuncname」配置,以指定相匹配,你會希望出現的大塊頭「TEXT」行正則表達式。新增部分,將$GIT_DIR/config文件(或文件$HOME/.gitconfig)是這樣的:

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

注意。配置文件解析器會使用單級反斜槓,因此您需要將反斜槓加倍;上面的模式選擇一行以反斜槓開始的行,以及零個或多個sub出現,接着是開放大括號的段,直到行結束。

3

參見gitattributes manpage,「生成差異文本」部分和例如diff.csharp.xfuncname配置(搜索xfuncname)。