【问题标题】:Can svn:externals be used while ignoring externals for that URL?svn:externals 可以在忽略该 URL 的外部时使用吗?
【发布时间】:2012-10-11 17:38:08
【问题描述】:

是否可以忽略 svn:externals 属性中引用的标记的外部依赖关系?这听起来像是一个很奇怪的问题,但让我解释一下……

我有相当多的单独和“可插入”代码模块集合,每个模块都可以作为独立项目进行独立测试、编译和开发。其中一些模块依赖于其他模块,通过 svn:externals 属性。问题是我们的测试框架gtest也是每个模块的依赖项,并且包含一个用于测试套件的静态库,这意味着每个模块至少~15Mb,因为我们已经为多个平台构建了这些静态库.

无论如何,这意味着一个相对简单的项目在签出时可能会占用超过 200Mb 的磁盘空间,这主要归功于每个模块的 gtest 副本。我的一些同事现在开始抱怨工作副本的体积过大,最好通过在每个模块的 top level 中简单地包含 gtest 依赖项来减少这种情况,并且只包含该副本在构建中。

基本上,我想要一种在我的 proplist 中设置 svn:externals 的方法,但检查每个依赖项,就好像我要将“--ignore-externals”传递给 svn co。这可能吗?我有一种感觉没有,但值得一问...

【问题讨论】:

    标签: svn svn-externals


    【解决方案1】:

    我建议查看稀疏结帐。仅签出顶级目录(使用“仅此项目”选项),获取外部文件。然后,对于您想要的每个模块,您可以使用所需的目录更新 WC,但省略外部文件。对所有子项目重复此操作。

    您可能仍然需要将 gtest 依赖项放在您的存储库中的另一个文件夹中,但我认为它可能对您有用。

    【讨论】:

      【解决方案2】:

      我不知道有什么方法可以让 svn 跳过单个依赖项。

      但我认为您可以通过在没有共享依赖项的情况下制作这些模块的标记版本来以另一种方式解决这个问题。然后其他依赖模块可以将它们的 svn:externals 指向这些标签,而不是指向独立编译的分支。

      我只是建议这样做,因为听起来您在使用单个大型共享库时遇到了一个非常具体的问题。任何更复杂的事情,你可能无法单独使用 svn:externals 解决这个问题。

      【讨论】:

      • 如何制作没有依赖关系的标记版本?
      【解决方案3】:

      从 1.6.0+ 开始的 Subversion 可以使用 svn:externals 引用 file 而不是目录。这可能有帮助吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-23
        • 2012-09-29
        相关资源
        最近更新 更多