【问题标题】:svn - how to merge a directory that was manually created in two branches?svn - 如何合并在两个分支中手动创建的目录?
【发布时间】:2014-10-01 15:21:22
【问题描述】:

我遇到了 svn 合并的问题,这里是场景

后备箱
分行1
分支2

同时在Branch1Branch2 上创建了一个新文件夹“abc”,两者的代码库一直更新到Branch1 发布。在Branch2 上进行了进一步的代码更改。
现在,当 Branch1 合并回 Trunk 时,一切顺利。
当 Trunk 合并到 Branch2 时,发生了树冲突(正如预期的那样)。

但现在我不确定如何进行。我想保留 Branch2 中的 lcoal 更改并正确合并目录,以便将来的合并不会产生任何树冲突。

有什么想法吗?有没有人遇到过这样的问题?有什么解决办法吗?


对所提问题的一些回答: Q 为什么要同时创建两个分支?
答:我正在一个 25 名开发人员的团队中合并 svn 任务。 2 个开发人员创建了这个。

问,为什么两个分支都创建了这个 abc 目录?
A:使用的是同一个项目。一个是在它的初始阶段工作,而另一个是在它实际发布之前的一个特性。

Q abc 是一个项目还是仅仅是现有项目下的一个新目录?
A:这是一个新项目

那个 abc 目录是否存在于后备箱中?
答:没有

【问题讨论】:

    标签: svn merge tree-conflict


    【解决方案1】:

    To Subversion /Branch1/abc/Branch2/abc 是两个完全独立的目录。两者之间没有共同的历史。下一次,你需要使用svn cp,这样Subversion 才能知道它们是相关的。

    您可以尝试--ignore-ancestory 标记,但这将执行双向合并而不是三向合并。这意味着如果我将/Branch2 合并到/Branch1 中,/Branch1 上的abc 目录将是/Branch2 上的任何目录。

    为什么要同时创建两个分支?而且,为什么两个分支都创建了这个abc 目录? abc 是一个项目还是仅仅是现有项目下的一个新目录?那个abc 目录是否存在于主干中?

    听起来您可能需要检查您的 CM 实践。不幸的是,没有更多信息,我无法给你更具体的建议。

    【讨论】:

    • 在更新后的帖子中回答您的问题。我计划在一个分支中硬删除 abc 项目,然后继续合并。你认为这是个好主意吗?
    • 是的。摆脱其中一个分支。这是一个完全不同的同名项目。删除那个分支。如果仍然需要,将该分支复制到另一个分支。在为该项目创建分支之前,我将始终在 /trunk 中创建新项目作为一项政策。然后使用svn cp 创建分支。这将防止在单个分支问题中创建两个项目。
    【解决方案2】:

    显然,如果您合并来自 2 个来源的相同目录名称,您将会遇到树冲突。您可以尝试通过合并分支 1 来伪造它,然后合并分支 2 对目录的后续更改(即跳过创建目录的修订,只合并包含内容更改的修订)

    或者,您可以在合并分支 1 并提交后手动复制更改。

    【讨论】:

      【解决方案3】:

      在将/trunk从根合并到Branch2之前,将子树/trunk/abc合并到/Branch2/abc

      【讨论】:

        猜你喜欢
        • 2010-11-25
        • 2013-04-11
        • 2014-02-01
        • 2011-05-18
        • 1970-01-01
        • 2013-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多