Git 为 cpp 文件定义不正确的 hunk header
Git Diff defining incorrect hunk header for cpp file
我正在使用 git diff 找出哪些方法发生了变化。显然它错误地定义了 hunk header(如下所示),因此我无法找到获取已更改方法列表的方法。
@@ -22,7 +22,7 @@ void func2(){
void func1(){
cout<<"Function 1"<<endl;
- int i=1000;
+ int i=100;
while(i>0){
func2();
i--;
这里的变化是在 func1() 中,但是大块 header 在 func2() 中。我尝试更改一些测试功能,结果它总是选择所需功能上方的 line/function 作为大块头 header.
我尝试在根目录中创建一个 .gitattributes 文件并放置 *.cpp diff=cpp
以便为 diff 启用 cpp,不幸的是没有'解决问题。
这里的问题是函数 func2
.
中的差异 是
注意 diff 以空行开头,后面是函数的定义 func1
。此定义在 diff-hunk 内部,因此 diff-hunk 在 函数之前 开始。据推测,在空白行上方我们会找到更多 func2
的代码。这就是 git diff
告诉您的上下文:差异 之前 发生了什么。
可以(相当合理!)争辩说 在 中唯一的变化是在函数 func2
中,但是 Git 应该做什么一个 diff hunk,读取,例如:
T f1() {
+ new_call();
return somevalue;
}
T f2() {
- old_call();
return somevalue;
}
这里,diff 在内部影响两个函数,f1
和 f2
。 Git 对“如何标记这个”的回答是从整个文本开始,向后搜索一些正则表达式。如果匹配 f0
,那就是 diff 上的标签。
(旁注:内置的正则表达式工作得很好,但不能识别所有语言中所有可能的合法函数定义。更改显示的上下文数量应该有助于这个特定的例子,尽管你必须缩小它最多减少到 1 行。)
我正在使用 git diff 找出哪些方法发生了变化。显然它错误地定义了 hunk header(如下所示),因此我无法找到获取已更改方法列表的方法。
@@ -22,7 +22,7 @@ void func2(){
void func1(){
cout<<"Function 1"<<endl;
- int i=1000;
+ int i=100;
while(i>0){
func2();
i--;
这里的变化是在 func1() 中,但是大块 header 在 func2() 中。我尝试更改一些测试功能,结果它总是选择所需功能上方的 line/function 作为大块头 header.
我尝试在根目录中创建一个 .gitattributes 文件并放置 *.cpp diff=cpp
以便为 diff 启用 cpp,不幸的是没有'解决问题。
这里的问题是函数 func2
.
注意 diff 以空行开头,后面是函数的定义 func1
。此定义在 diff-hunk 内部,因此 diff-hunk 在 函数之前 开始。据推测,在空白行上方我们会找到更多 func2
的代码。这就是 git diff
告诉您的上下文:差异 之前 发生了什么。
可以(相当合理!)争辩说 在 中唯一的变化是在函数 func2
中,但是 Git 应该做什么一个 diff hunk,读取,例如:
T f1() {
+ new_call();
return somevalue;
}
T f2() {
- old_call();
return somevalue;
}
这里,diff 在内部影响两个函数,f1
和 f2
。 Git 对“如何标记这个”的回答是从整个文本开始,向后搜索一些正则表达式。如果匹配 f0
,那就是 diff 上的标签。
(旁注:内置的正则表达式工作得很好,但不能识别所有语言中所有可能的合法函数定义。更改显示的上下文数量应该有助于这个特定的例子,尽管你必须缩小它最多减少到 1 行。)