2015-05-24 53 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