-1

我正在尝试为 Python 自定义 git diff hunk 标头。我目前正在使用此处定义的“python”正则表达式模式:https ://github.com/git/git/blob/6d2f208c3dd39493f4d45ea67c55a1b7fe06626a/userdiff.c

hunk 标头似乎能够正确显示大部分发生更改的类或函数。但是,当我在函数定义之后对几行进行更改时,问题就出现了,如下面的 func2.

def func1():
   print('hello')

def func2():
   #some change here
   print('bye')

对于这个改变,我的大块头看起来像

@@ -k,l +m,n @@ def func1():

因此,即使更改发生在 func2 中,hunk 标头也错误地指示它发生在 func1 中。有没有办法改变正则表达式模式,以便大块头显示正确的功能?我认为这可能与 git diff 上下文的长度有关。现在要更改为单行,标题中由字母“l”和“n”指示的空格显示 7,这意味着 git diff 显示 7 行。如何更改大块标题中的字母 k、l、m、n 并自定义 git diff 上下文的长度?

4

1 回答 1

0

Git 人员并未将其定义为错误。(不是每个人都同意这一点......)

如果您检查 diff hunk,您会看到上下文行向后延伸 func1. 因此,上下文是 的func1(),而不是 的func2更改的行是 独有的func2(),但上下文是 的func1

我认为这可能与 git diff 上下文的长度有关。现在要更改为单行,标题中由字母“l”和“n”指示的空格显示 7,这意味着 git diff 显示 7 行。如何更改大块标题中的字母 k、l、m、n 并自定义 git diff 上下文的长度?

这是正确的。显示的上下文数量由 的-U参数决定git diff。如果您不提供-U(或--unified,相同选项的长名称版本),则默认值为 3。

请注意,差异有许多其他控件。

于 2021-07-07T19:00:11.250 回答