2009-01-26 62 views
3

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

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

无论如何,这意味着一个相对简单的项目在签出时可能会占用200Mb的磁盘空间,其中大部分是由于每个模块的gtest副本。我的一些同事现在开始抱怨工作副本的臃肿大小,并且通过简单地包括每个模块的顶级处的gtest依赖性并且仅在构建中包括该副本。

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

回答

2

我会建议看稀疏结帐。签出顶部目录(只有'只有这个项目'选项),得到外部。然后,对于您想要的每个模块,您可以使用所需的目录更新WC,但省略了外部。重复所有子项目。

您可能仍然需要将gtest依赖项放在回购站中的另一个文件夹中,但我认为它可能适用于您。

0

我不知道有什么办法让svn跳过单一的依赖。

但我认为你可以用另一种方式解决这个问题,通过使这些模块的标签发布没有共享依赖。其他依赖模块可以将它们的svn:externals指向这些标记,而不是指向独立编译分支。

我只是建议这个,因为它听起来像你有一个单一的大型共享库非常具体的问题。任何更复杂的东西,你可能不会用svn来解决这个问题:仅仅是外部。

+0

如何在没有依赖的情况下制作标签发布? – 2009-02-27 21:23:58

0

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