[英]Git Diff defining incorrect hunk header for cpp file
我正在使用 git diff 找出哪些方法发生了变化。 显然,它错误地定义了大块头(如下所示),因此我无法找到获取已更改方法列表的方法。
@@ -22,7 +22,7 @@ void func2(){
void func1(){
cout<<"Function 1"<<endl;
- int i=1000;
+ int i=100;
while(i>0){
func2();
i--;
这里的变化是在 func1() 中,但大块头在 func2() 中。 我尝试更改一些测试函数,结果它总是选择所需函数上方的行/函数作为大块头。
我尝试在根目录中创建一个.gitattributes文件并放置*.cpp diff=cpp
以便为 diff 启用 cpp,不幸的是这并没有解决问题。
这里的问题是,这种差异在功能func2
。
请注意,差异以空行开头,后跟函数func1
的定义。 这个定义在 diff-hunk 中,所以 diff-hunk在函数之前开始。 据推测,在空行上方,我们会找到更多func2
的代码。 这就是git diff
告诉您的上下文: git diff
之前的内容。
我们可以(!而合理地)认为,DIFF内唯一的变化是函数中func2
,但后来应该是什么混帐做一个diff大块读取,例如:
T f1() {
+ new_call();
return somevalue;
}
T f2() {
- old_call();
return somevalue;
}
在这里, diff 在内部影响两个函数f1
和f2
。 Git对“如何标记这个”的回答是从整个文本上方开始,向后搜索一些正则表达式。 如果它匹配f0
,那就是差异上的标签。
(旁注:内置的正则表达式工作得很好,但不能识别所有语言中所有可能的合法函数定义。更改显示的上下文数量应该对这个特定示例有所帮助,尽管您必须将其缩小到最多1 行。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.