TortoiseSVN解决树冲突的方法

时间:2010-11-08 10:03:37

标签: svn tortoisesvn tree tree-conflict

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

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

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

  • 开发人员A在trunk上工作会修改文件Foo.c并将其提交到存储库。
  • 我正在分支移动文件Foo.c到Bar.c并将其提交到存储库。

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

  • Bar.c已经在我的工作副本中,状态为“normal”
  • Foo.c被标记为因树冲突而丢失

在大多数情况下,我需要将Developer A对Foo.c的更改合并到重命名的Bar.c.

但是我该怎么办呢?

文件Foo.c与开发者A的更改在我的分支WC中不存在。

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

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

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

你能帮帮我吗?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

您可以使用“两个网址合并”,以便将“主干”上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

而分支/ B是工作副本。

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

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

  

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

也许有理由给Mercurial一个尝试。