我有一个包含一些客户端文件的Subversion存储库。某些客户端将使用标准文件,但其他客户端将提供文件的自定义版本。为了适应这种情况,我已经为将使用共享文件的客户端使用了svn:externals。所以我们的结构是这样的:
svn
|+ top
|+ shared
|+ clients
|+ custom1
|+ custom2
|+ shared1
|+ shared2
客户端“custom1”是Subversion中包含该客户端自定义文件的真实文件夹,客户端“shared1”是/clients
文件夹中指向/top/shared
的svn:external属性。 / p>
我希望的是,当我想部署一个新客户端时,我可以使用如下命令将其文件夹导出到服务器:
svn export http://svn/top/clients/custom1 \\server\custom1
或
svn export http://svn/top/clients/shared1 \\server\shared1
这适用于自定义客户端,因为它们在Svn中有一个“真实”文件夹,但对于配置了外部的客户端,我收到错误:
svn: E170000: URL 'http://svn/top/clients/shared1' doesn't exist
有没有办法可以直接签出/导出“外部”文件夹?
答案 0 :(得分:2)
我最终做的是使用svn ls查看我是否正在访问物理目录。如果它不存在则使用以下命令获取我的外部目标:
svn propget svn:externals http://svn/top/clients/ | findstr "\<shared1\>" | sed "s/\(.*\)\s\(shared1\)/\1/"
findstr
将获取我正在寻找的属性的单行,sed
命令将解析目标URL(空格前的部分)。
答案 1 :(得分:1)
http://svn/top/clients/shared1
不是SVN中的物理路径,而只是对外部的引用。所以,这就是你无法直接查看的原因。
要解决此问题,您可以在SVN中将http://svn/top/clients/shared1
创建为空文件夹,并且可以在http://svn/top/clients/shared1
文件夹上提供svn:external属性以将其指向/top/shared
而不是/clients
文件夹。
然后您的结账将获得结帐的实际路径,但您无需将实际内容保留在此文件夹下。