【问题标题】:How to check out SVN external URL directly?如何直接签出 SVN 外部 URL?
【发布时间】:2013-01-28 05:48:00
【问题描述】:

我有一个包含一些客户端文件的 Subversion 存储库。一些客户端将使用标准文件,但其他客户端将提供文件的自定义版本。为了适应这一点,我为将使用共享文件的客户端使用了 svn:externals。所以我们的结构是这样的:

svn
|+ top
   |+ shared
   |+ clients
      |+ custom1
      |+ custom2
      |+ shared1
      |+ shared2

客户端“custom1”是 Subversion 中包含该客户端自定义文件的真实文件夹,客户端“shared1”是/clients 文件夹上的一个svn:external 属性,它指向/top/shared

我希望的是,当我想部署一个新客户端时,我可以简单地将他们的文件夹导出到服务器,使用如下命令:

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

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

【问题讨论】:

    标签: svn svn-externals


    【解决方案1】:

    我最终做的是使用svn ls 来查看我是否正在访问物理目录。如果它不存在,则使用以下命令获取我的外部目标:

    svn propget svn:externals http://svn/top/clients/ | findstr "\<shared1\>" | sed "s/\(.*\)\s\(shared1\)/\1/"
    

    findstr 将获得我正在寻找的属性的单行,sed 命令将解析出目标 url(空格之前的部分)。

    【讨论】:

      【解决方案2】:

      http://svn/top/clients/shared1 不是 SVN 中的物理路径,而只是对您的外部的引用。因此,这就是您无法直接检查的原因。

      要摆脱这种情况,您可以在 SVN 中将 http://svn/top/clients/shared1 创建为一个空文件夹,并且可以将 http://svn/top/clients/shared1 文件夹上的 svn:external 属性指定为指向 /top/shared 而不是 /clients 文件夹.

      然后您的结帐将获得一个物理路径来结帐,但您无需将实际内容保存在此文件夹下。

      【讨论】:

      • 这将创建一个额外的文件夹层,它不能提供完全我正在寻找的内容,但它已经足够接近了。
      猜你喜欢
      • 1970-01-01
      • 2018-10-26
      • 2023-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多