【问题标题】:Is it possible to replace TortoiseSVN's merge algorithm with a "better" one?是否可以用“更好”的算法替换 TortoiseSVN 的合并算法?
【发布时间】:2013-05-17 09:32:07
【问题描述】:

使用SVN(通过TortoiseSVN)中的merge功能几个月以来,我感觉SVN经常报告发生冲突。

所以我正在寻找一种方法,让 (Tortoise)SVN 更频繁地自动解决冲突,而无需我的用户交互。

我知道similar questions 以及您可以将差异查看器和合并工具替换为外部工具的事实:

据我了解,这些工具的连锁反应太晚了;当内部算法已经检测到不可解决的冲突时,它们会被 SVN/TortoiseSVN 调用。

所以我的问题是:

  • 我对行为(内部合并算法、外部合并工具)的假设是否正确?
  • 有没有办法通过(例如付费)工具改进内部合并算法?

(我正在使用 VisualSVN Server 和 V1.7 存储库,以防万一)

【问题讨论】:

  • 你不会喜欢我的建议,但改进svn合并算法的唯一方法是改用git
  • @mvp 是的,可能是正确的 ;-)

标签: svn merge tortoisesvn svn-merge


【解决方案1】:

很难推测上下文,但发现的冲突不太可能与 TortoiseSVN 有任何关系,而更多地与一般的 svn 有关。正如 mvp 所说,git 会更好(呵呵),但是您是否查看了 --reintegrate 合并标志?不确定如何直接从 TortoiseSVN 使用它,但事实证明它对我减少冲突非常有用。

编辑 View the 'advanced merging' tutorial here

【讨论】:

  • 谢谢!与此同时,我们在服务器和客户端都使用 SVN 1.8,似乎他们对simplify merging 做了很多。我会拭目以待,看看这在未来的合并中会如何表现......
  • 是的,这绝对是另一回事,较新的 SVN 版本似乎可以更好地应对一般合并(特别是 merginfo's 我发现),并且只有一个 .svn 文件是一个奖励:)跨度>
【解决方案2】:

首先,它与 Tortoise 无关——它只是 SVN 系统之上的一个非常好的 GUI。

现在,也许您有很多需要人工关注的合并。如果是这样,迁移到 git 或 Mercurial 之类的东西对您没有一点帮助——它们都无法说出您的真正意思,就像 SVN 无法说出一样。

您可以通过阅读文档了解SVN does its merge algorithm 的方式。仅供参考 v1.8 对其进行了一些调整,这意味着在进行重新集成合并时需要更少的手动决策 - 它现在只是自动执行,所以如果您一直在进行特殊功能分支样式合并并且一直在这样做错了,它就不会再抱怨了。他们现在一直致力于合并最近的 2 个版本,不仅使用 mergeinfo 不断改进它,而且还使用诸如 move 之类的功能,以便它可以判断文件不是新文件或已删除,从而减少任何树冲突类型的合并。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    相关资源
    最近更新 更多