我正在尝试切换到新的 SVN 存储库。
我目前有以下结帐:
$ svn info
svn+ssh://some.server.edu/home/name/svn-repositories/proj/trunk
Run Code Online (Sandbox Code Playgroud)
现在我想切换,但出现错误:
$ svn switch --relocate \
svn+ssh://some.server.edu/home/name/svn-repositories/proj/trunk \
https://subversion.assembla.com/svn/name/trunk/proj .
svn: The repository at 'https://subversion.assembla.com/svn/name/trunk/proj'
has uuid '...', but the WC has '...'
Run Code Online (Sandbox Code Playgroud)
我认为重点svn switch --relocate
是有两个具有不同 uuid 的存储库?如何正确切换到新的存储库?
顺便说一句,目录应该是正确的:旧的proj/trunk
和新的trunk/proj
包含完全相同的文件等:
$ svn ls https://subversion.assembla.com/svn/<name>/trunk/proj
foo.txt
$ svn ls svn+ssh://some.server.edu/home/name/svn-repositories/proj/trunk
foo.txt
Run Code Online (Sandbox Code Playgroud)
我在 Mac 上使用 svn 1.6.5。
svn switch --relocate
期望在新 URL 上找到相同的存储库,而不是不同的 URL。
您是否使用svnsync
过创建新存储库?在这种情况下,您可以使用svnadmin setuuid
与旧存储库相同的 uuid。根据svn book 中的svnsync 文档,这应该使您能够重用现有的工作副本。
--relocate
如果用于访问现有存储库的 URL 发生更改,该标志会更新您的工作副本。SVN 没有一个好方法将工作副本切换到新存储库,因为即使它可能包含相同的文件,但许多其他内容可能会有所不同 - 历史记录、签入次数、文件内容等等,而 SVN 的设计初衷并不是考虑这些差异。
您纯粹从客户的角度提出了您的问题,但是对您正在尝试做的事情有一个更大的了解会很有用。例如,您是否正在尝试将自己的存储库移动到新服务器?如果是的话,您使用了什么方法,是否有更好的方法?或者您是否一直在使用由其他人管理的存储库并且他们移动了它?旧存储库的所有历史记录是否都存在于新存储库中?您/他们是否无法将 SVN 数据库文件复制到新服务器而不是创建全新的存储库?
有一种方法可以强制执行您想要的操作,即从工作副本中删除 .svn 目录(首先进行备份!),从新服务器中签出新副本,然后从工作副本中移动所有 .svn 目录。将新副本复制到工作副本中的相应位置。但只有在考虑了大局之后才可以这样做。
归档时间: |
|
查看次数: |
16137 次 |
最近记录: |