133

我目前的SVN结构:

Path: .
URL: svn://someaddress.com.tr/project
Repository Root: svn://someaddress.com.tr
Repository UUID: -------------------------------------
Revision: 10297
Node Kind: directory
Schedule: normal
Last Changed Author: ----
Last Changed Rev: 9812
Last Changed Date: 2010-12-20 17:38:48 +0100 (Mon, 20 Dec 2010)

但是我们的项目(因此是 SVN 服务)将继续运行,sub.someaddress.com.tr而不是someaddress.com.tr(someaddress.com.tr 将很快被重定向到其他地方)。

由于它是开发服务器,我不确定该怎么做。我需要使用svn switchorsvn switch --relocate吗?另外,我需要切换 svn root someaddress.com.tr还是项目分支someaddress.com.tr/project

4

6 回答 6

233

鉴于 Apache Subversion 服务器将被移动到这个新的 DNS 别名sub.someaddress.com.tr

  • 对于 Subversion 1.7 或更高版本,使用svn relocate. 当 SVN 服务器的位置发生变化时使用重定位。switch仅当您要将本地工作副本更改为另一个分支或另一个路径时才使用。如果使用 TortoiseSVN,您可以按照TortoiseSVN 手册中的说明进行操作。如果使用 SVN 命令行界面,请参阅SVN 文档的这一部分。该命令应如下所示:

    svn relocate svn://sub.someaddress.com.tr/project

  • /project考虑到存储库的实际内容可能不会改变,请继续使用。

注意:svn relocate在 1.7 版之前不可用(感谢 ColinM 提供信息)。在旧版本中,您将使用:

    svn switch --relocate OLD NEW
于 2012-12-19T01:38:20.533 回答
13

Grepping URL 之前和之后可能会让您高枕无忧:

svn info | grep URL

  URL: svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal
  Relative URL: (...doesn't matter...)

并检查您的版本(> 1.7)以确保svn relocate使用正确:

svn --version

最后,添加到上述内容中,如果您的存储库 url 更改还涉及协议更改,您可能需要说明之前之后的 url(另见此处

svn relocate svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal
    https://svngate.mycompany.org/svn/repos/trunk/DataPortal

当然都在一行中。之后,感觉很好,一切都很顺利:

svn info | grep URL:

如果您愿意,多一点自信,新的 svn repo URL 已连接并可以正常工作:

svn status --show-updates
svn diff
于 2017-01-02T13:31:45.670 回答
7

如果您使用的是 TortoiseSVN 客户端,那么您可以按照以下步骤操作

右键单击源目录,然后单击SVN Relocate 图片#1

之后,您需要将 URL 更改为您想要的,单击确定,这将需要几秒钟。图片#2

于 2021-02-15T04:58:47.517 回答
6

就我而言,该svn relocate命令(以及svn switch --relocate)由于某种原因而失败(可能是存储库未正确移动,或者其他原因)。我遇到了这个错误:

$ svn relocate NEW_SERVER
svn: E195009: The repository at 'NEW_SERVER' has uuid 'e7500204-160a-403c-b4b6-6bc4f25883ea', but the WC has '3a8c444c-5998-40fb-8cb3-409b74712e46'

我不想重新下载整个存储库,所以我找到了一种解决方法。它适用于我的情况,但通常我可以想象很多事情都会被破坏(所以要么备份你的工作副本,要么准备好在出现问题时重新检查整个仓库)。

存储库地址及其 UUID 保存在.svn/wc.db工作副本的 SQLite 数据库文件中。只需打开数据库(例如在 SQLite 浏览器中),浏览表 REPOSITORY,root并将uuid列值更改为新值。您可以通过发出 找到新 repo 的 UUID svn info NEW_SERVER

同样,将此视为最后的手段。

于 2016-05-17T19:25:30.187 回答
1

在 Eclipse 中,断开项目(Team > Disconnect)并删除元数据,然后将项目连接到新存储库。 在项目上,右键单击,团队,断开连接

于 2021-07-27T23:41:35.767 回答
1

如果你想提交一个新的空仓库,你可以签出新的空仓库并提交到新的远程仓库。
签出一个新的空 Repo 不会删除您的本地文件。
试试这个: 例如,远程回购网址:https ://example.com/SVNTest cd [YOUR PROJECT PATH] rm -rf .svn svn co https://example.com/SVNTest ../[YOUR PROJECT DIR NAME] svn add ./* svn ci -m"changed repo url"

于 2018-06-25T06:28:22.187 回答