【发布时间】:2015-09-16 04:55:08
【问题描述】:
我有什么
我有一个 C++ 代码库,svn 用于 VCS。
我的代码使用了几种第 3 方产品。我们使用每种产品的不同版本,并在不同的操作系统(Linux 和 Windows)上使用它们。
第 3 方产品(具有所需版本)存在于编译机上并在编译时使用,因此代码和使用的第 3 方版本之间的关系是松散耦合的。
我想要什么
我想改变现状。这个想法是利用svn vendor branch。 与svn vendor branch 中描述的不同,我们将存储第三方产品的二进制版本,而不是代码本身。这是因为我们从不修补第 3 方代码。
svn:external 将用于使用适当版本的第 3 方产品。这里是 svn 仓库的骨架:
svn_repo/vendor/product1/OS1/ver1 <- mymodule using it
vendor/product1/OS2/ver1 <- mymodule using it
vendor/product1/OS1/ver2
vendor/product1/OS1/ver2
vendor/product2/OS1/ver1
vendor/product2/OS2/ver1
vendor/product2/OS1/ver2 <- mymodule using it
vendor/product2/OS1/ver2 <- mymodule using it
mymodule/ <- this is my actual code referring to a particular
products from vendor/ using svn:external
mymodule/vendor/product1/OS1 <- reference to vendor/product1/OS1/ver1
mymodule/vendor/product1/OS2 <- reference to vendor/product1/OS2/ver1
mymodule/vendor/product2/OS1 <- reference to vendor/product1/OS1/ver2
mymodule/vendor/product3/OS2 <- reference to vendor/product1/OS2/ver2
问题
在vendor branch章节的svn红皮书中,建议维护一个current/包含最新版本的3rd方产品,所以从例子中我们最终得到:
repos/vendor/libcomplex/current - contains 1.1
repos/vendor/libcomplex/1.0
repos/vendor/libcomplex/1.1
由于我们不修补第 3 方代码,因此我认为维护当前 / 没有任何意义。 这看起来也必须维护它,因此您可以看到 svn 提供了辅助 perl 脚本 svn_load_dirs.pl 来帮助。
我的猜测当前/是必需的:
- 让不同版本的svn releted,然后svn可比较。
- 另一方面,版本以更有效的方式存储在 svn 存储库中。
我不认为我们真的需要这些。
所以问题是我们是否可以安全地绕过供应商分支中的 current/ 处理?
【问题讨论】:
标签: svn version-control