移动代码库。我应该使用SVN切换,SVN重定位还是其他什么?

4
我计划将一个Subversion仓库从Linux服务器迁移到Windows服务器。我已经概述了迁移的步骤如下:
  1. 创建仓库的转储
  2. 将转储文件传输到目标Windows服务器
  3. 在新的Subversion服务器上上传仓库
  4. 更改所有对旧仓库的引用为新仓库
在一些挫败后,我终于达到了第四步,但遇到了一个困境...我不确定如何更改所有引用。我看到可以使用relocate,但也听说如果结构发生变化应该使用switch...这是工作项目,所以我需要确保在最后一步使用正确的命令以避免问题。
当前的文件结构如下:
svn://svn@servername/Source/Program Name/bin/Release 新的文件结构由VisualSVN Server决定,看起来像这样: https://ServerName.domain.local/svn/RepositoryName/Source/Program Name/bin/Release 重新定位是否适用于此,还是我走错了方向?
4个回答

5

之前的回答者没有阅读文档

>svn help switch

  2. The '--relocate' option is deprecated. This syntax is equivalent to
     'svn relocate FROM-PREFIX TO-PREFIX [PATH]'.

必须

  • 使用 svn relocate(因为您重写了超过前缀)
  • 使用第二种形式的relocate语法 relocate TO-URL [PATH],还可以查看svn help relocate中的示例
  2. TO-URL is the (complete) new repository URL to use for PATH.

Examples:

  ...

  svn relocate http://www.example.com/repo/project \

               svn://svn.example.com/repo/project

在这个例子中,旧的引用 svn://svn.example.com/repo/project 被替换为 http://www.example.com/repo/project


1
注意:自Subversion 1.7版本以来,“--relocate”选项已被弃用。在Subversion 1.6中,您可以使用“svn switch --relocate https://oldserver.com/reponame https://newserver.com/reponame”。[1.6文档](http://svnbook.red-bean.com/en/1.6/svn.ref.svn.c.switch.html)指出:“--relocate选项会导致svn switch执行不同的操作:它会更新您的工作副本,使其指向同一存储库目录,只是位于不同的URL上(通常是因为管理员已将存储库移动到另一个服务器或同一服务器上的另一个URL)。” - eyecatchUp

1

是的,svn switch --relocate 命令应该可以使用。但请注意,您必须重新定位您工作副本的根目录。


0
最简单的答案是:
当您将相同的数据目录(新基础URI)移动到新服务器时,您使用“Relocate”。
当您想在同一个代码库中在不同分支之间进行切换(具有共同祖先的路径)时,您使用“Switch”。
在两种情况下,代码库UUID保持不变。
如果您转储完整的代码库并将其恢复到新数据目录中,则本质上您正在使用相同的数据目录,此时代码库UUID保持不变。您可以使用“Relocate”。
如果更改了UUID或将其恢复到现有代码库中,则您唯一的选择是重新检出工作副本。

-2

使用svn switch --relocate命令,我刚在一个代码库上试过了,它就像魔法一样奏效。如果你正在使用TortoiseSVN,请使用“Relocate”命令,而不是“Switch”命令。


我已经安装了TortoiseSVN,但是我必须在批处理文件中使用这些命令,以便可以将其扩展到整个网络。 - Cipher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接