我有两个存储库,它们位于不同的服务器上,称之为repo-1和repo-2。
开始两个“中继线”是相同的:
repo-1 / trunk == repo-2 / trunk
与此同时,更改被提交到repo-1 / trunk,我正在努力并对repo-2 / trunk进行更改。
现在我需要将repo-1 / trunk中的更改合并到repo-2 / trunk。
我以为我会将repo-1 / trunk复制到repo-2 / tags / r1_20090224,然后将该标签合并到我的本地工作副本repo-2 / trunk(即c:\ dev \ repo2-trunk)。 / p>
有关如何执行此操作的任何建议?我正在尝试使用TortoiseSVN并执行“合并两个不同的树”,我使用了以下设置:
来自:repo-2 / trunk 收件人:repo-2 / tags / r1_20090224 工作副本:c:\ dev \ repo2-trunk
我也试过交换“从”和“到”......但没有运气。通过尝试这两个合并选项中的任何一个,我最终得到以下结果:
如果我从主干到标签合并(进入我的本地副本repo-2 / trunk),我会丢失主干更改并更改标签。
如果我从标签合并到主干(进入我的本地副本repo-2 / trunk),我会丢失标签更改并保持主干更改。
有关这方面的任何建议吗?
答案 0 :(得分:1)
首先找出树木相同的修订版。然后将该修订版本与repo-1存储库的HEAD合并到您的repo-2工作副本。
如果要在r123和r456之间合并更改,请使用命令行客户端与此类似,
svn merge http://domain.tld/repos1@123 http://domain.tld/repos1@456 repos2-workingcopy
答案 1 :(得分:1)
目前尚不完全清楚,但您需要从两棵树的 base 合并,即两个树干相同的点。
桑德打败了我,所以对他很有信心,但这里还有一些提示:答案 2 :(得分:1)
如果 svn merge
让您在两个网站/服务器上失败:
svn: Unusable URI: it does not refer to this repository
然后使用以下方法:
repo-2
开始偏离repo-1
的修订级别,比如123 ,然后:svn co http://server1/repo-1/trunk
svn diff -r123:HEAD http://server2/repo-2/trunk >repo2.patches
patch -p0 -i repo2.patches
svn ci --message "merged from repo-2"
答案 3 :(得分:0)
SVK可能会有所帮助。