我有几十个外部的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
答案 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 你的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的同一节点上具有相同的外部结构)