我有什么供应商分支中是当前/必需的吗?
我有一个C++代码库和SVN用于VCS。
我的代码使用多个第三方产品。我们使用每个产品的不同版本,并在不同的操作系统(Linux和Windows)上使用它们。
第三方产品(具有所需版本)出现在编译机器上,并在编译时使用,因此代码和使用的第三方版本之间的关系松散耦合。
我想
我想改变这种状况。这个想法是利用svn vendor branch。 与svn vendor branch中描述的不同,我们将存储第三方产品的二进制版本,而不是代码本身。这是因为我们从不修补第三方代码。
svn:external将用于使用适当版本的第三方产品。这里一个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
问题
在SVN红书vendor branch章,建议保持电流/含第三方产品的最新版本,所以从示例我们结束于:
repos/vendor/libcomplex/current - contains 1.1
repos/vendor/libcomplex/1.0
repos/vendor/libcomplex/1.1
由于我们不修补第三方代码,我没有看到任何维护当前/的点。 这看起来也得维护它,因此你可以看到svn提供了辅助perl脚本svn_load_dirs.pl来帮助。
我的猜测当前需要/到:
- 为了使不同版本的svn的releted紧接着svn相媲美。
- 作为一个版本以更高效的方式存储在svn仓库中。
我看不到我们真的需要这些。
所以问题是如果我们可以安全地绕过处理当前/在供应商分支?