自由差异工具可配置?

时间:2009-12-22 18:10:39

标签: diff winmerge

是否有一个diff工具允许我编写正则表达式以从差异中删除一行?

喜欢,请看两行:

this.Visible = true;
Visible = true;

我可以写一个表达式,如果行差异正好this,则忽略差异。

我如何专门做到这一点?

我再给你一个例子。像System.ExceptionException这两个对我来说都是一样的,我不想在差异中显示它们。

8 个答案:

答案 0 :(得分:3)

您可以使用KDiff3执行此操作。请参阅Preprocessor Commands上的文档部分。

更新:我发现您还有一个似乎需要语义差异程序的请求。有关建议,请参阅Semantic Diff Utilities

答案 1 :(得分:1)

来自SourceGear的

DiffMerge支持此功能。您需要创建一个与要合并的文件匹配的规则集或编辑默认规则集。在规则集中添加模式到Lines to Omit属性。有关详细信息,请参阅联机帮助中的“已提交的行”属性。

答案 2 :(得分:1)

我使用过的最佳资源来源是Beyond Compare。有了它,您可以完全按照您的要求进行操作:输入regular expression,告诉软件忽略某些差异。但是,它不是免费的。

如果您确实需要免费的应用程序,可以尝试WinMerge。不过,我不太喜欢这个界面。

答案 3 :(得分:0)

Notepad++有一个比较插件,非常易于配置。

答案 4 :(得分:0)

如果你找不到你想要的现有差异工具,你可以自己编写。

Python有diff module用于编写类似diff的工具,它将为您处理差异算法的所有复杂性。他们有一个示例脚本,它将以标准的Unix diff / patch格式或60行代码中的并行HTML进行文件差异。

模块的不同之处在于您可以定义“垃圾”过滤器来预处理行以删除不希望包含在diff中的部分。这些是Python函数,因此您不限于正则表达式匹配。

我快速重新阅读了文档,过滤器只能忽略整行或单个字符,这不是你想要的。但是,您可以轻松地预先处理您提供给不同的数据,以删除您要忽略的文本。

答案 5 :(得分:0)

我无法在任何软件中找到该功能,但Beyond Compare和Araxis都有此功能。

从WinMerge维基看来,他们似乎不会在新的未来支持插件或任何此类功能。太糟糕了。

答案 6 :(得分:0)

如果您知道如何编写JavaScript,可以将有问题的正则表达式插入Pretty Diff工具的缩小部分。该工具完全免费,代码完全打开,内联文档。

如果您想要添加到该工具中的特定功能,除了个人定制之外,请告诉我,我会添加它。

答案 7 :(得分:0)

试试GNU diffutils。如果您使用的是Windows,则可以使用www.cygwin.com上的Cygwin分发GNU差异。