【问题标题】:SVN Merging ComplicationSVN 合并并发症
【发布时间】:2011-04-19 20:21:07
【问题描述】:

我做了一些研究,似乎找到了与我的情况相差 4 英寸的答案。

我们设置了一个 SVN,目前有第三方在不同的分支上不断开发。我们需要定期了解他们的进展。

首先,我们让它们与我们的主干同步,以提取更改并通过运行解决任何潜在的冲突:

svn merge url/to/trunk

现在,我们正试图从他们那里拉回来。但是,svn 似乎并不知道最后一次合并是来自主干。

当我们运行时:

svn merge url/to/third/party/branch

在我们的主干结账时,它试图重新应用相同的更改,从而导致大量“本地添加,合并时传入添加”。

我有什么遗漏吗?自上次合并以来绘制更改并让 SVN 知道主干中开始的更改的正确方法是什么?

另外,当我们需要更新时,我们应该使用这个正确的流程来吸收他们所做的更改吗?

【问题讨论】:

    标签: svn merge branch


    【解决方案1】:

    尝试将--reintegrate 标志传递给合并回主干

    http://blogs.collab.net/subversion/2008/07/subversion-merg/(@doc_180 推荐的关于合并与重新集成的良好链接)

    【讨论】:

    • 感谢您的疯狂快速回复!我以为那个标志是分支即将结束开发的时候?如果继续开发,这会有什么问题吗?
    • 在我的项目中,我们经常分支开发一段时间,不时从主干合并,当我们将分支合并回主干时,我们遇到了与您提到的类似的问题。现在,当我们将分支合并回主干时,我们总是使用--reintegrate 标志,即使我们要继续在分支上进行开发。
    • 重新集成后,您应该删除重新集成的分支(请参阅svnbook.red-bean.com/nightly/en/…)。所以,不,你不应该继续在这个分支上工作。不过,我不明白为什么要在结束之前从分支重新集成到主干,因为它会使主干与分支相同。只需签出分支并对其进行测试。
    • 很好的答案,但需要更加详细。重新整合讨论链接/.blogs.collab.net/subversion/2008/07/subversion-merg
    • @JB Nizet:与主干相同的分支对他们来说不一定是坏事,因为他们似乎只是将第三方保持在同一个隔离分支上并从该分支拉到主干每次完成后,让公司发生变化。
    【解决方案2】:

    之前,我投入了 2 美分。如果您发现如何在 SVN 中无缝执行合并,请告诉我。

    如果您在 SVN 中执行大量合并,则可以使用 SvnMerge.py 库。这有助于大多数合并用例的自动化。

    这是从他们的常见问题解答中粘贴的?

    svnmerge 解决了什么问题?

    如果我们必须将相同的更改应用到另一个分支,subversion 已经有一个方法可以做到这一点。 传统的颠覆将让您合并更改,但它不会“记住”您已经合并的内容。它也没有提供一种方便的方法来排除更改集的合并。 svnmerge.py 自动化了一些工作,并简化了它。 Svnmerge 还使用来自它合并的所有事物的日志消息创建提交消息。


    这个工具确实帮助我在 SVN 中进行合并。但是当我们必须执行频繁的合并时,我最终发现 Git 比 SVN 好得多。 (因此要求分享您的发现)

    【讨论】:

    • 请查看使用示例部分。