【问题标题】:Svn merging and automatically resolving conflictssvn合并和自动解决冲突
【发布时间】:2013-04-13 05:14:33
【问题描述】:

我是 svn 的新手,需要从主干合并到我们正在工作的分支。 这是我用来合并的 svn 命令序列

svn up
svn mergeinfo --show-revs eligible branch trunk (branch and trunk are actually svn urls)

我从分支和最新的主干修订中获得了符合条件的修订的最低修订,然后进行 svn 合并。

svn merge -r lowest_eligible:latest_trunk trunk_url .

在合并期间有一些冲突。但是,它们与我们在分支中所做的任何更改都没有关系,所以我有点困惑为什么它们是冲突的。有任何想法吗?无论如何,我总是选择,他们的-full来解决它

最后,我需要在提交之前做 svn resolve

svn resolve --accept working -R .

我有两个问题。 这是从主干到分支执行合并的最佳命令序列吗?

合并往往需要一段时间,所以我想让它合并,让 svn 自动解决他们的冲突。有没有办法做到这一点?

【问题讨论】:

  • 我是否正确理解,lowest_eligible 是分支历史的修订版,而 latest_trunk 是主干历史的修订版?

标签: svn svn-merge


【解决方案1】:
  1. 如果您将 从主干 合并到分支(在分支的 WC 中),mergeinfo 中的参数顺序不正确(颠倒):缩短的正确形式必须是 svn mergeinfo --show-revs eligible trunk(第一个参数是合并的源,第二个 - TARGET /default "."/,即你的 WC)
  2. 如果您使用已经支持合并信息的 Subversion,您可以跳过检测“必须合并”修订的范围 - Subversion 在合并时自动执行此操作
  3. 如果您希望在发生冲突的情况下始终喜欢从主干更改,您可以将其添加到合并命令中

作为最终结果,您的定期同步合并过程将是分支 WC 内的单个命令

svn merge <URL-OF-TRUNK> --accept "theirs-conflict"

【讨论】:

    【解决方案2】:

    通常,合并应该更简单 - 特别是如果您只是从主干合并到分支。在这种情况下,只需确保

    A) 您的分支工作副本中没有未提交的更改,并且 B)你有一个当前版本的分支(你已经通过'svn up'来做)

    如果你准备好合并,只需执行

    svn merge ^/trunk 
    

    在您的分支工作副本中。

    关于冲突: 有时 svn 会破坏合并差异并报告没有冲突的地方。一个好的三向合并工具,如 kdiff3 可以帮助创造奇迹。除此之外,我建议不要使用自动冲突解决,因为大多数冲突不会因为避免解决它们而变得更容易解决。使用上述过程,您至少应该能够避免所有不必要的冲突。

    【讨论】:

      猜你喜欢
      • 2019-08-26
      • 1970-01-01
      • 2013-10-27
      • 2011-08-23
      • 2010-09-24
      • 2014-09-17
      • 2012-03-01
      • 1970-01-01
      • 2015-10-15
      相关资源
      最近更新 更多