Svn合并并自动解决冲突

时间:2013-04-13 05:14:33

标签: svn svn-merge

我是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 .

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

最后,我需要在提交

之前执行svn resolve
svn resolve --accept working -R .

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

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

2 个答案:

答案 0 :(得分:3)

  1. 如果将从主干合并到分支(在分支的WC中),mergeinfo中的参数顺序不正确(反向):缩短的正确形式必须是svn mergeinfo --show-revs eligible trunk(第一个参数是SOURCE of合并,第二 - TARGET /默认“。”/,即你的WC)
  2. 如果您使用已经支持mergeinfo的Subversion,您可以跳过检测“必须合并”修订的范围 - Subversion在合并时自动执行
  3. 如果您想在发生冲突的情况下总是喜欢从trunk更改,可以将其添加到merge命令
  4. 作为最终结果,您的定期同步合并过程将是分支WC内的单个命令

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

答案 1 :(得分:2)

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

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

如果您准备合并,只需执行

即可
svn merge ^/trunk 

在您的分支工作副本中。

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