SVN:合并已在存储库中移动的分支

时间:2015-01-28 18:26:57

标签: svn version-control merge tortoisesvn branching-and-merging

因此,我们有一个相当复杂的存储库布局,移动操作的结果执行here

svn.contoso.com/root_repository_path/
    |- project1
    |- project2
    |    |- subprojectA
    |    |- subprojectB
    |- project3
    |- project4
    |-   |- subprojectA
    |-   |- subprojectB
    |    |- project5 (the project I'm on)

这些文件夹中的每一个都有一个完整的trunk / branches / tags结构,而project5专门有几个分支,所有这些分支都在之前追溯来自链接问题的同事开发人员重新组织了存储库。现在,我需要将一个分支(让它称之为闪亮功能分支)合并回另一个分支,父母'科;事情是,(Tortoise)当我尝试将有光泽特征分支的完整修订范围合并到父分支时,SVN会感到困惑,给我一个错误的形式:

'/svn/root_repository_path/!svn/bc/5555/project5/branches/shiny-feature' path not found

其中5555是存储库所在的当前版本。尝试仅合并移动分支的修订版会产生无操作合并,而排除分支移动修订版会产生与上述完全相同的错误。

我该怎么把这个分支合并回去?

2 个答案:

答案 0 :(得分:0)

首先,树枝中的其他部分是否可见?如果我理解正确,project5已从存储库树的根目录移动到project4下的分支所在的位置?

当合并分支本身时,Subversion通常没有太多的合并问题,因为它可以轻松地从旧位置向下走到树的新位置。如果`project5仍然在它下面有分支,这应该没问题:

$ svn co $RSVP_URL/project4/project5/trunk project5-trunk
$ cd project5-trunk
$ svn merge $RSVP_URL/project4/project5/branches/shiny-feature

如果您最近修订的树中不再显示该分支,则必须通过svn cp恢复该分支:

$ svn cp -r4321 $REPO_URL/project5/branches/shiny-feature@4321 \
    $REPO_URL/project4/branches/shiny-feature

@4321引脚修订。在删除闪亮功能分支之前,您说您对修订版本的修订版本感兴趣。 -r4321表示您正在复制该闪亮分支的修订版。

答案 1 :(得分:0)

事实证明,这个错误实际上是由于TortoiseSVN预先填充了分支的旧路径:

$REPO_URL/project4/branches/shiny-feature

而不是分支的当前路径:

$REPO_URL/project4/project5/branches/shiny_feature

修复此问题可以使合并无问题地工作。