SVN外部迁移

时间:2016-09-14 20:18:03

标签: svn

我有几十个外部的SVN回购。所有外部都是参考“old_svr”定义的。将repo移动到新服务器“new_svr”,并且必须更改所有外部引用以引用“new_svr”而不是“old_svr”。

这样做: 1)我检查了新服务器的repo,这意味着所有的外部仍然指向“old_svr” 2)我在我的工作副本的顶层目录中cd并运行

  

svn propget -R svn:externals。 > old_externals.tmp   3)我在文件old_externals.tmp中将“old_svr”更改为“new_svr”   sed's / old_svr / new_svr / g'old_externals.tmp> new_externals.tmp   4)我将新的外部定义应用于我的工作副本   propset svn:externals -F new_externals.tmp   5)承诺改变   svn提交   6)更新工作副本   svn update

此时我收到很多错误: A)svn:警告:版本123处的URL“svn:// new_svr / path / tag / directory”不存在 B)仍旧引用旧服务器    svn:warning:未知主机名'old_svr'

问题: - 如何有效地删除所有referencs到old_svr,以便它不再出现。 - 我不知道为什么一些外部目录(大多数都经过精细处理)svn找不到合适的版本来更新。

YorgZ

2 个答案:

答案 0 :(得分:0)

您应该检查您的环境。使用最新的Subversion服务器和客户端。

从几年前(2008年)发布的Subversion 1.5开始,建议在svn:externals中使用与存储库相关的URL。在这种情况下使用它们有帮助,因为可以更改存储库的URL并且不需要svn:externals修改。有关回购相对URL的详细信息,请查看SVNBook | Externals definitions

答案 1 :(得分:0)

你至少(乍一看)两个错误一个方法上的缺陷

  • svn ps的语法对于外部因素是错误的(因此您不能在一个命令中使用所有内容)
  • (可能的小错误)svn pg > file在每个定义后用空行写文件,-F用于ps要求"每行定义"并且只接受#asly-line
  • BIG FLAW - 您没有仔细阅读命令说明并忽略错误输出

简而言之:

你的svn ps什么都不做(或者你有另一个ps?!)

>svn ps svn:externals -F z:\externals.new
svn: E205001: Try 'svn help propset' for more information
svn: E205001: Explicit target argument required

长:

必须为每个定义使用一个(正确的)propset(当前形式,当外部散布在回购时)

可以为所有定义使用一个(正确的)propset,如果你之前重构它们的定义(无论如何都是好的时间)并在一个存储库节点中收集所有定义(LOCALPATH必须是在过程中改变了):对于本地文件夹/数据/集合(链接到外部),它的定义可以是

Data - file:///Z:/Repo1/trunk/Collection Collection

(在分散的模型中)

. - file:///Z:/Repo1/trunk/Collection Data/Collection

(在集中/在主干/模型中)

具有相同的最终结果(在repo-tree的同一节点上具有相同的外部结构)