【问题标题】:TortoiseSVN approaches to resolve Tree ConflictsTortoiseSVN 解决树冲突的方法
【发布时间】:2010-11-08 10:03:36
【问题描述】:

TortoiseSVN 可以使用 Edit Conflict 窗口帮助解决多种树冲突。

问题是在“...合并后”冲突类型的情况下,TortoiseSVN 无法猜测需要合并哪些文件。

例如(案例:本地丢失,更新时传入删除

  • 开发者 A 在trunk 上修改文件 Foo.c 并将其提交到存储库。
  • 我正在处理分支,将文件 Foo.c 移动到 Bar.c 并将其提交到存储库。

开发人员 A 对我的分支工作副本的更改合并导致树冲突:

  • Bar.c 已经在我的工作副本中,状态为“正常”
  • Foo.c 被标记为缺少树冲突

在大多数情况下,我需要将开发人员 A 对 Foo.c 的更改合并到重命名的 Bar.c 中。

但是我该怎么做呢?

我的分支 WC 中没有包含开发人员 A 更改的文件 Foo.c。

TortoiseSVN 帮助 说:“请注意,如果您从存储库复制丢失的文件,然后标记为已解决,您的副本将再次被删除。你必须先解决冲突。

那么,我是否需要检查 trunk 才能访问 Foo.c 文件进行合并?有没有更简单的方法来解决这个问题?

这个问题(TortoiseSVN 如何解决树冲突)对我和我们的开发人员来说非常关键。

你能帮帮我吗?

【问题讨论】:

    标签: svn tortoisesvn tree tree-conflict


    【解决方案1】:

    我喜欢 zellus 的解决方案。您也可以将文件的移动合并到分支中,然后合并回主干。

    我在合并大分支时,首先将主干合并到分支中,解决所有冲突(包括树冲突),然后将结果合并回主干。这也使主干在合并期间更加稳定。

    【讨论】:

      【解决方案2】:

      您可以使用“两个 URL 合并”来将来自“主干”上的 Foo.c 的更改合并到分支并重命名的 Bar.c

      cd branch/B
      svn merge http://www/svn/svnroot/branches/B/Bar.c http://www/svn/trunk/Foo.c Bar.c
      

      而 branch/B 是工作副本。

      要最终消除冲突,开发者 A 和 B 应该就相同的文件名达成一致。可能不希望对相同的代码使用不同的文件。

      编辑: 通过查看“其他”vcs 如何处理此问题,我想从 “重命名文件和合并更改”段落中quote

      如果我修改了一个文件,而你重命名它 到一个新名称,然后我们合并我们的 各自的变化,我的修改 到原始名称下的文件 将传播到下的文件中 它的新名称。 (这是你的东西 可能期望“简单地工作”,但不是 实际上所有的修订控制系统 这样做。)

      也许是一个尝试Mercurial 的理由。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-10-14
        • 1970-01-01
        • 2012-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-06
        • 1970-01-01
        相关资源
        最近更新 更多