微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

git diff 自定义大块头没有显示正确的功能

如何解决git diff 自定义大块头没有显示正确的功能

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

大块头似乎能够正确显示大部分发生更改的类或函数。但是,当我在函数定义之后的几行中进行更改时,问题就出现了,如下面的 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 上下文的长度?

解决方法

这并没有被 Git 人员定义为错误。 (并非所有人都同意这一点...)

如果您检查差异块,您会看到上下文线向后延伸进入 func1。因此,上下文是 func1() 的上下文,而不是 func2 的上下文。 改变的行func2()独有的,但上下文func1的。

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

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

请注意,差异有许多附加控件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。