Version control 是否有一个三方合并工具“;理解”;公共重构?

Version control 是否有一个三方合并工具“;理解”;公共重构?,version-control,refactoring,merge,branch,Version Control,Refactoring,Merge,Branch,在一个分支上完成了简单的重构(如“重命名字段”)后,很难将更改合并到其他分支中。(提取方法要困难得多,因为合并工具似乎无法很好地匹配未更改的块) 现在在我的梦中,我想到了一个工具,它可以记录(或计算)在一个分支上完成了哪些定义良好的重构操作,然后在另一个分支上“重放”它们,而不是试图合并重构影响到的每一行 另见“我的另一半痛苦 还有人尝试过类似(),从理论上讲,这是支持重构的源代码管理。不了解常见的重构,但它是我使用过的唯一的三向合并工具。它适用于Mac和Windows,并且支持自动化API,

在一个分支上完成了简单的重构(如“重命名字段”)后,很难将更改合并到其他分支中。(提取方法要困难得多,因为合并工具似乎无法很好地匹配未更改的块)

现在在我的梦中,我想到了一个工具,它可以记录(或计算)在一个分支上完成了哪些定义良好的重构操作,然后在另一个分支上“重放”它们,而不是试图合并重构影响到的每一行

另见“我的另一半痛苦


还有人尝试过类似(),从理论上讲,这是支持重构的源代码管理。

不了解常见的重构,但它是我使用过的唯一的三向合并工具。它适用于Mac和Windows,并且支持自动化API,因此我想如果你愿意的话,你可以用它做你想做的事情。我没有记录与Araxis的连接,而不是我使用过他们的产品。

在Linux或Windows中,您可以使用

在任何情况下,这两种工具都只能“理解”“关于文本行。重构需要一种理解代码的方法,这超出了我所知道的任何合并/比较工具。

您可以在不同的分支上执行相同类型的重构操作。它不会记录或弄清楚自己正在做什么,您必须明确地告诉它该做什么,但除此之外,它将或多或少地毫不费力地对您指向它的多个分支执行相同的重构

这个工具已经在linux内核中使用了很多年

从其网页上引用:

“Coccinelle是一个与 转换引擎,它提供 语言SmPL(语义补丁) 语言)用于指定所需的 在C代码中进行匹配和转换。”


DARC支持提交中的“”操作,该操作将一个令牌的所有实例替换为另一个令牌,并根据您的需要进行合并。

Plastic SCM(www.plasticscm.com)3路合并工具实现了Xmerge,这是唯一能够帮助您合并已移动代码的工具。

现在有一些更好的合并工具(例如)这是基于语言解析的,旨在处理已移动和修改的代码。JetBrains(重塑者的创始人)刚刚发布了一篇关于这个的文章


多年来,这方面的研究已经很多了,终于有了一些产品上市。

遗憾的是,它不适用于C#或VB.NET,但至少有其他人考虑过这个问题。“代币替换”的问题我们发现Araxis Merge是最好的传统合并工具之一。(自动化API没有帮助,因为它需要重构工具来“解决”问题)