将SVN工作空间指向不同的服务器&存储库与不同的父目录

时间:2012-05-02 19:59:49

标签: svn tortoisesvn migration

我有一个svn存储库,该存储库是EOL,并且各种项目正通过svnrdump dump和svnadmin加载到新存储库。出于讨论的目的,基本拓扑结构为:

old repo:  http://oldrepo/repositories/oldname/...
new repo:  http://newrepo/repositories/newname/...

这个特殊的存储库很大,我有一个开发人员希望将他的旧工作区指向新的存储库。我看到的问题是TortoiseSVN允许重定位事件,通过输入URL http://newrepo/repositories/newname,初始重定位似乎成功。但是,工作区现在认为新repo上的目录结构如下所示:

http://newrepo/repositories/newname/oldname

有没有办法删除工作区对oldname的引用?由于额外的非预期目录,SVN更新失败。我能想到的唯一选择是让这个开发人员从新存储库中检出新的所需工作空间,并让他将WIP文件复制到新工作区。客户端还有其他选择或解决方案吗?

编辑:工作目录为c:\ SVN \ FolderA。执行命令:svn relocate http://newrepo/repositories/newname/Folder1/FolderA将返回以下错误:

svn: E155024: Invalid relocation destination: 'http://newrepo/repositories/newname/Folder1/FolderA' (does not point to target)

我不确定这是多么相关,但原始存储库位置oldrepo是一个文件夹,但在新存储库中,newrepo(即:http://newrepo/repositories/newname)是新存储库的根级别。另外,我应该指出,在迁移过程中,保留了更改,但个别版本号却没有。

2 个答案:

答案 0 :(得分:4)

我的工作副本遇到了同样的问题。这个"无效的重定位目的地"如果将存储库UUID复制到新的存储库(使用" svnlook uuid"和#34; svnadmin setuuid"命令),则可能会避免错误,但是当我将工作副本升级到1.8时,我得到了尝试将我的工作副本重新定位到新仓库时出现此错误。

我建议您只删除工作文件夹根目录中隐藏的.svn文件夹,然后使用同一文件夹的新URL再次执行结帐。 SVN将只是"版本"新存储库的文件会再次出现,但只需执行新的结帐即可。如果您有任何已修改的文件,请在重新签出到同一文件夹之前创建补丁文件,以防checkout命令覆盖已修改的文件。

请注意,两条路径之间存在差异:

http://newrepo/repositories/newname
http://newrepo/repositories/newname/ <-- notice the final slash

第一条路径说&#34;将newname目录复制到目标文件夹&#34;其中第二条路径说&#34;将newname目录的内容复制到目标文件夹&#34;。

希望这有帮助。

答案 1 :(得分:1)

您的开发者可能需要:

  • 将他的项目与旧工作区断开连接
  • 在其他地方保存未提交的更改(如果有)
  • 删除他的项目
  • 从新工作区导出他的项目
  • 将未提交的更改(如果有)重新应用于项目