有理解VB.NET的智能第三合并工具吗

有理解VB.NET的智能第三合并工具吗,vb.net,version-control,merge,branch,Vb.net,Version Control,Merge,Branch,我对我们的合并工具有问题,因为有时它无法正确匹配两个分支中未更改的块。当这种情况发生时,合并工具将变得无用,合并必须手动完成 因此,我正在寻找一种工具: 了解VB.NET函数/方法定义的外观,并在匹配块时给予它们高度重视 知道VB.NET会随时更改字段等的大小写,因此在查找公共块时会忽略大小写的差异,但仍会合并大小写的差异 知道“和”//都是注释的开头,在查找公共块时将匹配它们 还有什么其他要求我忘记了 (我们面临的问题是,我们的合并工具(SCM源代码控制系统的Guiffy部分)是用Java

我对我们的合并工具有问题,因为有时它无法正确匹配两个分支中未更改的块。当这种情况发生时,合并工具将变得无用,合并必须手动完成

因此,我正在寻找一种工具:

  • 了解VB.NET函数/方法定义的外观,并在匹配块时给予它们高度重视
  • 知道VB.NET会随时更改字段等的大小写,因此在查找公共块时会忽略大小写的差异,但仍会合并大小写的差异
  • 知道“和”//都是注释的开头,在查找公共块时将匹配它们
还有什么其他要求我忘记了


(我们面临的问题是,我们的合并工具(SCM源代码控制系统的Guiffy部分)是用Java编写的,因此已经用Java进行了很好的测试,似乎在“现实生活”中用我们的C#代码工作得很好,但它在我们的VB.NET代码中并不好。)

我现在只使用WinMerge,我发现它比TurtoiseSVN中的合并更好,而且显然它支持VB.Net

我不知道它是否能理解现场案例等等,但它非常强大,所以我可能值得一试


.

我现在只使用WinMerge,我发现它比Turtoise SVN中的Merge更好,而且显然它支持VB.Net

我不知道它是否能理解现场案例等等,但它非常强大,所以我可能值得一试


.

合并工具了解文件及其差异,但不了解语言及其差异

由于大多数语言都区分大小写变量,所以大多数合并工具都是这样工作的。VB.NET关键字也是如此(
If,Then
可以,
If,Then
不可以),因此即使忽略大小写,也可能对您不起作用


就个人而言,我使用perforce合并工具()。

合并工具了解文件和文件中的差异,但不了解语言和它们之间的差异

由于大多数语言都区分大小写变量,所以大多数合并工具都是这样工作的。VB.NET关键字也是如此(
If,Then
可以,
If,Then
不可以),因此即使忽略大小写,也可能对您不起作用


就个人而言,我使用perforce合并工具()。

p4merge非常棒,可以在perforce.com上免费获得


我不知道它是否理解VB.net,但它是一个很棒的工具。

p4merge非常棒,可以在perforce.com上免费获得


我不知道它是否理解VB.net,但它是一个很好的工具。

我目前选择的Araxis Merge支持忽略大小写选项。

我目前选择的Araxis Merge支持忽略大小写选项。

回答Ian Ringrose的评论
“但是为什么合并工具不能理解给定的语言?”

将源代码设置为文本格式与将代码设置为AST(抽象语法树)之间存在不匹配的概念,即使AST中有源注释的表示

您正在寻找的是一个IDE,它将代码存储为XML格式的AST表示。然后,任何面向文本的合并工具都将适用于您,而不仅仅是Visual Basic专用工具。 XML是一种格式,在这种格式中,合并已解释的源代码比合并源代码更有意义

至于区分大小写语言的一般实践,格式化在代码审查方面很重要,重新格式化代码被归类为重构,并且在版本控制过程中通常必须考虑到这一点。 其中一个原因是,代码格式甚至源文件的编码和回车设置实际上会影响项目,而不仅仅是代码生成的AST。代码可以在注释中包含元数据,可以由运行时过程处理,这甚至可能取决于编码和行结束设置。 例如,一个ASPNET网站的html输出取决于字符编码,如果您误用它,您的输出可能会出现乱码。如果第三方工具的解析器不能处理回车符,那么处理代码的第三方工具可能会失败,因为回车符对于Microsoft编译器来说是好的


这就是为什么合并工具主要将每个字符更改视为真正的更改,即使您可以选择忽略它,即使是空白也会产生影响。

回答Ian Ringrose的评论
“但是为什么合并工具不能理解给定的语言?”

将源代码设置为文本格式与将代码设置为AST(抽象语法树)之间存在不匹配的概念,即使AST中有源注释的表示

您正在寻找的是一个IDE,它将代码存储为XML格式的AST表示。然后,任何面向文本的合并工具都将适用于您,而不仅仅是Visual Basic专用工具。 XML是一种格式,在这种格式中,合并已解释的源代码比合并源代码更有意义

至于区分大小写语言的一般实践,格式化在代码审查方面很重要,重新格式化代码被归类为重构,并且在版本控制过程中通常必须考虑到这一点。 其中一个原因是,代码格式甚至源文件的编码和回车设置实际上会影响项目,而不仅仅是代码生成的AST。代码可以在注释中包含元数据,可以由运行时过程处理,这甚至可能取决于编码和行结束设置。 例如,一个ASPNET网站的html输出取决于字符编码,如果您误用它,您的输出可能会出现乱码。三分之一