在我的公司,我们使用一个SVN仓库来存储我们的C++代码。代码库由一个共同部分(基础设施和应用程序)和客户端项目(作为插件开发)组成。
仓库布局如下:
- 基础设施 - App1 - App2 - App3 - 为客户端1开发的项目
- App1插件 - App2插件 - 配置
- 为客户端2开发的项目
- App1插件 - App2插件 - 配置
每个客户端项目的典型发布包括项目数据和它所使用的每个项目(例如,基础设施)。
每个目录的实际布局为:
- 基础设施
- 分支 - 标签 - 主干
- 为客户端2开发的项目
- 分支 - 标签 - 主干
其他项目也是相同的布局。
我们有几个问题与上述布局有关:
仓库布局如下:
- 基础设施 - App1 - App2 - App3 - 为客户端1开发的项目
- App1插件 - App2插件 - 配置
- 为客户端2开发的项目
- App1插件 - App2插件 - 配置
每个客户端项目的典型发布包括项目数据和它所使用的每个项目(例如,基础设施)。
每个目录的实际布局为:
- 基础设施
- 分支 - 标签 - 主干
- 为客户端2开发的项目
- 分支 - 标签 - 主干
其他项目也是相同的布局。
我们有几个问题与上述布局有关:
- 对于客户项目,启动一个全新的开发环境很困难,因为必须检出所有涉及的项目(例如:基础设施、App1、App2、project-for-client-1)。
- 由于上述原因,很难在客户项目中标记发布版本。
- 如果客户项目需要更改一些公共代码(例如基础设施),我们有时会使用分支。很难跟踪哪些分支用于哪些项目。
SVN 中是否有任何方法可以解决以上任何问题?我考虑在客户项目中使用 svn:externals,但阅读了this post后,我明白这可能不是正确的选择。