在我们公司,我们正在开发由不同C / C ++模块组成的产品。理想情况下,每个层和模块应由不同的团队分别开发并独立测试。目前,我们将每个模块分成它自己的分支:\
模块是:
\hid \branches \tags \trunk \api \branches \tags \trunk \ui \branches \tags \trunk
另外,产品版本是通过组合模块构建的,并使用CI系统定期编译。
\productX \branches \5.0 \hid-4.0 (svn:externs \hid\branches\4.0) \api-3.0 (svn:externs \api\branches\3.0) \ui-5.0 (svn:externs \ui\branches\5.0) \tags \trunk
我们遇到的主要问题是'svn tag'与externs相关的行为。当前的外部引用了HEAD - 因为我们希望定期构建最新版本以确保所有模块协同工作。但是,一旦构建成功并且我们继续进行发布,如果有一种简单的方法可以自动标记所有内容 - 包括extern中使用的版本,那将是很好的。就目前而言,我们必须为模块创建标签,然后将externs更新为这些标签,然后标记产品,最后将其交换回主干。
有更清洁的方法吗?请随意评论当前的结构。
答案 0 :(得分:3)
我认为最好让你的外部定义引用模块的标签,而不是它们的中继。通过这种方式,您只需了解模块的已知里程碑,并且在标记核心产品时无需更改任何内容。
这与svn:externals
中仅使用显式修订(而不是HEAD)的最佳实践(在SVN文档中建议)保持一致。