在我的公司,我们使用一个 SVN 存储库来保存我们的 C++ 代码。代码库由公共部分(基础设施和应用程序)和客户端项目(作为插件开发)组成。
存储库布局如下所示:
- 基础设施
- 应用程序1
- 应用程序2
- 应用程序3
- project-for-client-1
- App1-插件
- App2-插件
- 配置
- 客户项目 2
- App1-插件
- App2-插件
- 配置
客户项目的典型发布包括项目数据和它使用的每个项目(例如基础设施)。
每个目录的实际布局是 -
- 基础设施
- 分支机构
- 标签
- 树干
- 客户项目 2
- 分支机构
- 标签
- 树干
其他项目也是如此。
上面的布局有几个问题:
- 很难为客户项目启动一个全新的开发环境,因为必须检查所有涉及的项目(例如:Infrastructure、App1、App2、project-for-client-1)。
- 出于与上述相同的原因,很难在客户端项目中标记发布。
- 如果客户项目需要更改一些通用代码(例如基础设施),我们有时会使用分支。很难跟踪项目中使用了哪些分支。
SVN 有什么办法可以解决以上问题吗?我曾想过在客户项目中使用 svn:externals,但在阅读了这篇文章后,我明白这可能不是正确的选择。