我们的团队有一个cvs存储库,我们通过cvs2svn转换为svn。我们的存储库有一个主分支(让我们在main
中调用),它有效地用作主干(尽管它在技术上从过去的主干分支出来)。
在cvs2svn转换后,我将main
分支到branch
。
我在branch
做了一些小改动,然后尝试将branch
合并回main
:
[~/main] svn merge https:.../branch
这应该计算自分裂发生以来的差异branch
,并将差异应用于main
。然而,它可以追溯到过去几年,导致数十亿次冲突。
有关如何解决此问题的任何想法?我已经搜索谷歌,但找不到任何东西。
我知道我可以调用svn merge并传入确切的修订号。我正在寻找更好的选择。
答案 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的所有更改应用到“主”副本。即使从分支到主要的重复合并,这应该可以正常工作。
干杯!