2015-05-24 54 views
1

git diff有選項--word-diff-regex=<...>匹配單詞。某些語言有特殊的默認值(如man 5 gitattributes中所述)。但是這些是什麼?在文檔中沒有描述,我查找了git的來源,還沒有找到它們。什麼是`git diff --word-diff'默認正則表達式?

任何想法?

編輯:我在git 1.9.1,但我會接受任何版本的答案。

回答

2

來源包含userdiff.c文件中的默認單詞正則表達式。 PATTERNSIPATTERN宏將基本正則表達式作爲它們的第三個參數,並添加"|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+"以確保不是較大單詞的所有非空白字符都被視爲一個單詞,並假定爲UTF-8,而沒有分割多字節字符。例如,在:

PATTERNS("tex", "^(\\\\((sub)*section|chapter|part)\\*{0,1}\\{.*)$", 
     "\\\\[[email protected]]+|\\\\.|[a-zA-Z0-9\x80-\xff]+"), 

字正則表達式是"\\\\[[email protected]]+|\\\\.|[a-zA-Z0-9\x80-\xff]+|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+"

在這種情況下,|[\xc0-\xff][\x80-\xbf]+沒有任何好處,因爲[\xc0-\xff][\x80-\xbf]+涵蓋的所有內容已被[a-zA-Z0-9\x80-\xff]+覆蓋,但它也不會造成任何傷害。

+0

對Git版本2.8.3,$ git的差異--word的Diff-正則表達式=「\\\\ [A-ZA-Z @ 。] + | \\\\ | [A-ZA-Z0-9 \ x80- \ XFF] + | [^ [:空間:]] | [\ xc0- \ XFF] [\ x80- \ XBF] + 「和git diff --word-diff會產生相似但不同的結果 –

1

docs for .gitattributes中給出了一個預定義diff驅動程序的列表(它們都有預定義的字diff regexes)。據進一步指出,

你仍然需要與屬性的機制來實現這一目標,通過.gitattributes

所以要激活HVD的回答顯示了所有*.tex文件tex模式,你可以發出在您的項目根以下命令(省略了引號Windows下):

echo '*.tex diff=tex' >> .gitattributes