是否有任何用于编程语言的差异/合并工具,都可以以语法感知的方式工作(例如XML Diff工具),而不是逐行比较(并且可以选择忽略空格)。
我对实际上遵循语言语法和分隔符的程序感兴趣,建议在不破坏语法正确性的情况下进行更改,或将语句 bundle 成多行。行为示例为:
*一旦找到引入了额外嵌套级别的if(){
,它就会在下面几行自动将右括号}
bundle 在一起。)
*将匹配的语法元素保持在一起,避免像删除块这样的愚蠢行为容易造成:
int function_A()
{
int ret;
ret = something;
ret += something_else;
return ret;
}
int function_B()
{
if(valid)
{
int ret;
ret = something;
ret += something_else;
return ret;
}
else return -1;
}
就个人而言,我很想找到能够处理C++语法的软件,但是了解其他语言的解决方案也会很有趣。
最佳答案
Beyond Compare完成了您的要求。它不会一次保持语法正确性,也不一次比较语言块,但是可以执行以下操作:
old_variable_name
替换为右侧new_variable_name
的每个位置。 到目前为止,它是我使用过的最好的差异合并工具。它也是跨平台的,价格便宜(标准版为30美元,专业版为50美元),而且评估期非常宽裕,因此值得一试。
关于merge - 上下文感知合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5067839/