3

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

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

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

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

4

3 回答 3

2

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

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

于 2009-04-29T18:41:35.363 回答
0

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

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

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

于 2009-02-27T19:04:23.663 回答
0

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

于 2009-04-16T00:24:02.397 回答