SVN Switch Relocate - 不是存储库的根目录

时间:2010-01-28 14:43:05

标签: svn relocation

我正在尝试将工作副本文件夹从旧的专用svn服务器移动到新的svn服务器,并将其包含在子文件夹中。使用以下重定位命令:

svn switch --relocate https://oldserver/svn/repos https://newserver/some/directory 

我明白了:

svn: 'https://newserver/some/directory ' is not the root of the repository

哪个是正确的.....但是,错误的是,我该如何移动位置?

4 个答案:

答案 0 :(得分:14)

据我了解,您不能使用svn switch(有或没有--relocate)移动到新的存储库。这样考虑一下:您的新存储库的HEAD版本是x,您的旧存储库的版本是y,那么SVN应该对工作副本的基本版本做什么?

svn help switch--relocate用于:

  

重写工作副本网址元数据以仅反映语法更改。当存储库的根网址发生更改(例如方案或主机名更改)但您的工作副本仍然反映相同时使用同一存储库中的目录。

由于情况并非如此,我担心你不得不进行新的结账。

答案 1 :(得分:2)

我尝试了相同的操作,在这种情况下,我在文件中使用了svnsync的副本:url并使用mv / home / me / sync / therepo /home/me/sync/repos/therepo.

原因:我在同步目录中有几个帮助脚本搞乱了回购的视图。

svn switch --relocate大部分工作,除了一直抱怨的外部。

解决方案很残酷:我删除了(rm -rf)带有违规文件的目录并再次运行svn update以重新获取外部。

至少这种方式我不需要再次进行大额结账。

此外,现在我可以在稍后将svn服务器移动到新机器时为我的同事编写说明。

答案 2 :(得分:1)

也可能发生的事情是你正在重新安置根的孩子。

尝试在根文件夹上重新定位。所有子文件夹也将自动重定位。

答案 3 :(得分:0)

我假设您已经通过svnadmin dump / svnadmin load实际迁移了存储库,所以在这种情况下您可以尝试:svn switch --relocate https://newserver/some/directory如果您遇到相同的错误,您可能实际上只需执行此操作一个新的svn co。我不记得遇到过那个错误,但后来我所有的回购都使用了一个嵌套的结构,就像你搬到的那个,所以它可能我从来没有处理它: - )