2012-05-02 19 views
3

我有一个svn存储库,指定了EOL,并且各种项目正在通过svnrdump转储和svnadmin加载到新存储库。为了讨论的目的,基本拓扑结构是:将SVN工作区指向具有不同父目录的不同服务器和存储库

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

这种特殊的仓库很大,我有一个开发者希望自己的老工作空间指向新的存储库。我看到的问题是TortoiseSVN允许重新定位事件,并且通过输入URL http://newrepo/repositories/newname,初始重定位似乎成功。但是,工作区现在认为在新的回购目录结构是这样的:

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)是新存储库的根级别。另外,我应该指出,在迁移过程中,变更被保留,但个别版本号不是。

+0

您的开发人员可能不得不将其项目与旧工作区断开连接,删除其项目并将其项目从新工作区导出。 –

+0

我指示他这样做。我的感觉是,由于目录结构已从旧版本更改为新版本库,因此将旧的工作区指向新版本库没有干净的方法。 – OrionRogue

+0

@GilbertLeBlanc,如果你想把你的评论作为一个正式的答案,这就是我所接受的。 – OrionRogue

回答

1

您的开发人员可能要:

  • 断开他从旧的工作区
  • 项目保存自己提交的修改(如果有的话)其他地方
  • 删除他的项目
  • 出口他从项目新工作区
  • 将其未提交的更改(如果有)重新应用于项目
4

我的工作副本有同样的问题。如果存储库UUID被复制到新的仓库(使用“svnlook uuid”和“svnadmin setuuid”命令),但是当我将我的工作副本升级到1.8时,尝试尝试这种“无效的重定位目标”错误将我的工作副本重新定位到新的回购。

我建议你只要删除工作文件夹根目录下隐藏的.svn文件夹,然后使用新的URL重新执行结帐操作即可。 SVN将只为新版本库再次“更新”这些文件,但只要您进行了全新的结算,它就会花费很长时间。如果您有任何已修改的文件,请在重新签出到相同的文件夹之前先创建一个修补程序文件,以防checkout命令覆盖已修改的文件。

记住有两个路径之间的差异:

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

第一条路径说的“NEWNAME目录复制到目标文件夹”里的第二条路径写着“复制NEWNAME目录的内容到目标文件夹“。

希望这会有所帮助。

相关问题