1

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

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

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

  • 开发主干的开发人员 A 修改文件 Foo.c 并将其提交到存储库。
  • 我正在处理分支将文件 Foo.c 移动到 Bar.c 并将其提交到存储库。

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

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

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

但是我该怎么做呢?

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

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

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

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

你可以帮帮我吗?

4

2 回答 2

4

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

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

于 2010-11-08T21:19:19.643 回答
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 如何处理此问题,我想引用“重命名文件和合并更改”段落:

如果我修改了一个文件,而你将它重命名为一个新名称,然后我们合并我们各自的更改,我对原始名称下的文件的修改将传播到新名称下的文件中。(这是您可能期望“简单地工作”的事情,但并非所有的修订控制系统都真正做到这一点。)

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

于 2010-11-08T20:48:54.763 回答