如何直接查看SVN外部URL?

时间:2013-02-12 19:59:33

标签: svn svn-externals

我有一个包含一些客户端文件的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

有没有办法可以直接签出/导出“外部”文件夹?

2 个答案:

答案 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文件夹。

然后您的结账将获得结帐的实际路径,但您无需将实际内容保留在此文件夹下。