4

我是 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 自动解决冲突到他们的完整。有没有办法做到这一点?

4

2 回答 2

3
  1. 如果您从主干合并到分支(在分支的 WC 中)mergeinfo 中的参数顺序不正确(颠倒):必须缩短正确的形式svn mergeinfo --show-revs eligible trunk(第一个参数是合并的源,第二个 - 目标/默认“。”/,即您的 WC )
  2. 如果您使用已经支持合并信息的 Subversion,您可以跳过检测“必须合并”修订的范围 - Subversion 在合并时自动执行
  3. 如果你想在冲突的情况下总是喜欢从主干更改,你可以将它添加到合并命令

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

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

于 2013-04-13T16:08:29.937 回答
2

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

A)您的分支工作副本中没有未提交的更改,并且 B)您拥有当前版本的分支(您已经通过执行 'svn up' 来执行此操作)

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

svn merge ^/trunk 

在您的分支工作副本中。

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

于 2013-04-13T16:12:25.220 回答