gpt4 book ai didi

svn - 供应商分支中是当前/必需的吗?

转载 作者:行者123 更新时间:2023-12-04 14:29:48 25 4
gpt4 key购买 nike

我有什么

我有一个 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

问题

在svn红皮书中vendor branch章,建议维护当前/包含最新版本的 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 来提供帮助。

我的猜测当前/需要:

  1. 使不同版本的svn releted,然后svn具有可比性。
  2. 另一方面,版本以更有效的方式存储在 svn 存储库中。

我不认为我们真的需要那些。

所以问题是我们是否可以安全地绕过 vendor 分支中 current/的处理?

最佳答案

我们按照您的建议采用类似的方法,即将供应商二进制文件放入我们的存储库,然后使用 svn:externals 使用相对路径指向这些二进制文件。它工作正常,我喜欢我们没有外部存储库依赖项。

您甚至可以考虑只为每个操作系统维护每个二进制文件的单个副本,即忘记在目录名称中指定版本,只需使用 Subversion 修订版作为 Controller 。这是使用您的 svn:externals 中的明确修订号完成的。属性(property),无论如何你都应该这样做。

因此 mymodule/vendor/product1/OS1 上的 svn:externals 将被设置为 -rXXX ^/vendor/product1/OS1 其中 XXX 是包含适当的修订mymodule 使用的版本。

例如,在我们的工具目录下,我们有 nunit 二进制文件。如果 nunit 发布新版本,我们会更新工具\nunit 并在日志中记录发布详细信息。我们所有引用 nunit 的项目都可以(可选)通过更改相关项目的 svn:externals 属性的修订号来开始使用新版本。如果任何项目不想更新,他们什么都不做:)

关于svn - 供应商分支中是当前/必需的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1425533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com