1

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

在 cvs2svn 转换后,我分支mainbranch.

我做了一个小改动branch,然后尝试合并branchmain

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

这应该计算branch自拆分发生以来的差异,并将该差异应用于main. 然而,它可以追溯到几年前,导致无数冲突。

有想法该怎么解决这个吗?我已经搜索了谷歌,但找不到任何东西。

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

4

1 回答 1

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 的所有更改应用到“主”副本。即使对于从分支到主的重复合并,这也应该可以正常工作。

干杯!

于 2010-02-02T00:51:42.977 回答