20

我正在尝试将一个工作副本文件夹从它的旧专用 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

4 回答 4

14

据我了解,您不能使用svn switch(有或没有--relocate)移动到新的存储库。这样想:你的新版本库的 HEAD 版本是 x,你旧版本库的版本是 y,那么 SVN 应该如何处理工作副本的基本版本?

svn help switch--relocate用于:

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

由于情况并非如此,恐怕您必须重新结帐。

于 2010-01-28T15:22:25.270 回答
2

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

原因:我在同步目录中有几个帮助脚本弄乱了存储库的视图。

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

解决方案很残酷:我删除了(rm -rf)包含有问题文件的目录,然后再次运行 svn update 以重新获取外部文件。

至少这样我就不必再次进行大型结帐了。

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

于 2011-04-21T09:56:11.863 回答
1

也可能发生的是您正在对根的孩子进行重定位。

尝试对根文件夹进行重定位。所有子文件夹也将自动重新定位。

于 2014-02-10T16:46:27.683 回答
0

好吧,我假设您实际上已经通过svnadmin dump/迁移了存储库,svnadmin load因此在这种情况下,您可以尝试:svn switch --relocate https://newserver/some/directory如果遇到相同的错误,您实际上可能只需要执行新的svn co. 我不记得曾经遇到过这个错误,但是我所有的存储库都使用了一个嵌套结构,就像你要移动到的那样,所以我可能永远不必处理它:-)

于 2010-01-28T14:52:57.350 回答