TortoiseSVN可以使用编辑冲突窗口帮助解决几种树冲突。
问题是,在“ ...合并”冲突类型的情况下,TortoiseSVN无法猜测哪些文件需要合并。
例如,(案例:本地缺失,更新时传入删除)
将开发人员A的更改合并到我的分支工作副本会导致树冲突:
在大多数情况下,我需要将Developer A对Foo.c的更改合并到重命名的Bar.c.
但是我该怎么办呢?
文件Foo.c与开发者A的更改在我的分支WC中不存在。
TortoiseSVN帮助说“请注意,如果您从存储库中复制丢失的文件,然后将其标记为已解决,则会再次删除您的副本。您必须先解决冲突。“
那么,我是否需要选择 trunk 才能访问Foo.c文件进行合并?是否有更简单的方法来解决这个问题?
这个问题(TortoiseSVN如何解决树冲突)对我和我们的开发人员来说非常关键。
你能帮帮我吗?
答案 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一个尝试。