我正在尝试将工作副本文件夹从旧的专用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
哪个是正确的.....但是,错误的是,我该如何移动位置?
答案 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
。我不记得遇到过那个错误,但后来我所有的回购都使用了一个嵌套的结构,就像你搬到的那个,所以它可能我从来没有处理它: - )