【问题标题】:How to SVN merge two branches where same folder added to both branches如何SVN合并两个分支,其中相同的文件夹添加到两个分支
【发布时间】:2013-11-06 07:44:24
【问题描述】:

我有两个不同的分支。树干和个人分支。同一文件夹在不同时间添加到两个分支。现在我想将我的更改合并回主干,但该文件夹已经存在。例如(合并个人开发分支 => 主干)

ADDED rev 123 /trunk/foo/bar.cs

ADDED rev 120 /branches/personalDevBranch/foo/baz.cs

我正在使用 TortoiseSVN,它解决了冲突。但它只允许我保留本地目录。当我这样做时,它不会拾取我认为应该显示为要添加的新文件的文件 baz.cs。

【问题讨论】:

    标签: svn merge tortoisesvn


    【解决方案1】:

    SVN 团队推荐 patching the file manually - 在这种情况下,您应该能够选择合并您的 baz.cs 的文件夹版本,但这将有效地删除 bar.cs,因为您正在使用覆盖文件夹内容你的合并。

    树冲突是 SVN 合并的最大(可能是唯一)问题。您可能认为您的案例(2 个人添加同一个文件夹)很容易合并,但并非总是如此 - 尤其是重命名文件。

    【讨论】:

    • 谢谢。我们打算把所有东西都移植到 Mercurial 或 Git 上,但我们决定推迟它。我希望我刚刚做到了。我认为 Mercurial 可以毫无问题地处理这个问题。
    • 这只是一种情况,这当然很烦人,但是当 2 个人将同一个目录添加到 2 个不同的分支时,这种情况仍然是一个问题。我会使用“他们的”版本来解决,然后将 baz.cs 复制到文件夹中并添加它,然后提交。我会在某个地方安装一个 mercurial repo 并尝试一下。但是这种事情需要标记,你和同事都添加了同名文件夹!通常这是一个需要手动解决的通信问题(即您不希望您的文件意外地合并到一个装满其他人文件的文件夹中)。
    • 尽管如此,我认为 SVN 应该更好地处理树冲突,即使在很多情况下这很难做到(例如,如果你的同事删除了文件夹,而不是添加它)或重命名,或将文件移动到文件夹中。树冲突首先是混乱的,所以不要假设一个工具每次都能做你期望它做的事情是一件简单的事情。
    • @gbjbaanb:我同意您的回答(与我之前在回答中所说的相同,但带有链接参考)并且也同意您的 cmets。所以+1。
    • 我们已经在另一个项目上试用 Mercurial 一段时间了,到目前为止,合并的体验要好得多。回到 SVN 感觉就像现在倒退了一样。虽然 SVN 看起来更简单。
    【解决方案2】:

    我前段时间遇到过这个问题。据我所知,我将 TortoiseSVN 中的冲突标记为已解决并手动合并了这部分。我学到的教训是尽可能避免这种情况。因此,在您的情况下,只需将 baz.cs 复制到您的文件夹中即可。

    【讨论】:

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