cvs2svn迁移后svn合并问题

时间:2010-01-29 20:35:59

标签: svn merge branch cvs2svn

我们的团队有一个cvs存储库,我们通过cvs2svn转换为svn。我们的存储库有一个主分支(让我们在main中调用),它有效地用作主干(尽管它在技术上从过去的主干分支出来)。

在cvs2svn转换后,我将main分支到branch

我在branch做了一些小改动,然后尝试将branch合并回main

[~/main] svn merge https:.../branch

这应该计算自分裂发生以来的差异branch,并将差异应用于main。然而,它可以追溯到过去几年,导致数十亿次冲突。

有关如何解决此问题的任何想法?我已经搜索谷歌,但找不到任何东西。

我知道我可以调用svn merge并传入确切的修订号。我正在寻找更好的选择。

1 个答案:

答案 0 :(得分:0)

你需要告诉svn merge你的合并点是什么,所以它知道要同步到main的提交范围。由于未指定范围,因此默认为HEAD修订版的提交范围。这导致了太多的修改。

这将获得您将同步的先前提交修订版:

svn log --xml --stop-on-copy https://.../branch | grep 'revision=' | head -n 1 | sed 's/.*revision="\([0-9][0-9]*\)".*/\1/g'

基本上,它会在分支上获得第一个副本版本(我将其称为“REV”)。然后,您将其合并到“主”副本的HEAD修订版(在主目录中):

cd main
svn merge https://.../branch:REV https://.../branch:HEAD .

这应该将“分支”副本上从REV到HEAD的所有更改应用到“主”副本。即使从分支到主要的重复合并,这应该可以正常工作。

干杯!