语义合并工具

时间:2008-09-25 18:37:27

标签: c# refactoring merge devtools

背景:在我的工作中,我们使用SVN,C#和VisualStudio。我的部分任务经常涉及全局重命名。通常,在重命名某些内容然后合并更改后,我最终会破坏构建。

问题:是否有解决方案可以查看我的更改,注意全局重命名,然后将其应用于其他人在合并时进行的编辑?

另一种获得相同效果的方法是使用某种重构日志,然后将其应用于传入的编辑。

这个工具不一定非常完美,即使它只是注意到他们所编辑的任何引用都提到了我编辑过的东西。

编辑我知道VS的重构工具。在我重构我的工作副本之后,我正在寻找的东西将允许我将相同的重构应用于我现在需要合并的其他人编辑。

理想的解决方案是确保在进行重构时没有未完成的编辑,但这样可以防止其他人在下周或更长时间内完成任何操作。 (因为他们必须在下周每半小时左右同步一次)

5 个答案:

答案 0 :(得分:9)

有一个名为Semantic Merge的用例的商业工具。他们提供15天的免费试用,开源项目可以免费使用它(contact the support)。

语义合并背后的公司也有a git client with integrated Sematic Merge,目前是测试版(这里有一些short intro videos)。

答案 1 :(得分:1)

保持与其他重构分开重命名。它们通常可以自动化,因此很容易进行更改。您甚至可以分发脚本以允许具有合并地狱的其他工程师对该文件执行转换。

没有简单的方法来自动化重构,所以保持简单。重命名应该只需要几分钟,你应该能够检查并提交最少的测试。

答案 2 :(得分:0)

假设至少VS 2005并且全局重命名是变量/属性/函数,则可以使用Refactor - Rename右键单击菜单选项。按照设计,它会在整个解决方案中传播名称更改。

答案 3 :(得分:0)

是否可以减少提交更改所需的时间?提交之间的一周或多周似乎相当长......

答案 4 :(得分:0)

我理解你的问题。不幸的是,我认为在同步时没有足够智能的SVN脚本来完成这项工作。

也许你的团队使用SVN更合适的工作可能会让这种情况变得不合时宜。当您在工作副本中执行svn:update并实现合并操作时,最好在提交更改之前重建更新的解决方案。

拥有一个能够在合并时自动执行的svn脚本确实很棒。