15

使用 查看差异时git diff,每个更改都以如下行开头:

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

对于 C,最后一部分非常具有描述性——例如,它显示了发生更改的函数。但是对于 C#,它只显示命名空间,这不是很有用。我认为那是因为它显示了没有缩进的最后一行。有没有办法配置这个?

4

2 回答 2

20

我找到了它,该行称为 hunk header 并且文档说明了如何自定义它:

定义自定义块头

文本差异输出中的每组更改(称为“hunk”)都以以下形式的一行作为前缀:

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

这称为大块标头。默认情况下,“TEXT”部分是以字母、下划线或美元符号开头的行;这与 GNUdiff -p输出使用的匹配。但是,此默认选择不适用于某些内容,您可以使用自定义模式进行选择。

首先,在 .gitattributes 中,您将为diff路径分配属性。

*.tex   diff=tex

然后,您将定义一个“diff.tex.xfuncname”配置以指定一个正则表达式,该正则表达式与您希望显示为大块标题“TEXT”的行匹配。$GIT_DIR/config像这样向您的文件(或$HOME/.gitconfig文件)添加一个部分:

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

笔记。配置文件解析器会吃掉单级反斜杠,因此您需要将反斜杠加倍;上面的模式选择以反斜杠开头的行,零次或多次出现 sub 后跟 section 后跟左大括号,直到行尾。

于 2010-08-04T20:48:12.390 回答
4

请参阅gitattributes 手册页、“生成差异文本”部分,以及例如diff.csharp.xfuncname配置(搜索xfuncname)。

于 2010-08-04T20:51:31.837 回答