svn:externals&标记,如何在团队之间组合代码

时间:2009-12-23 05:40:53

标签: svn tags svn-externals

在我们公司,我们正在开发由不同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更新为这些标签,然后标记产品,最后将其交换回主干。

有更清洁的方法吗?请随意评论当前的结构。

1 个答案:

答案 0 :(得分:3)

我认为最好让你的外部定义引用模块的标签,而不是它们的中继。通过这种方式,您只需了解模块的已知里程碑,并且在标记核心产品时无需更改任何内容。

这与svn:externals中仅使用显式修订(而不是HEAD)的最佳实践(在SVN文档中建议)保持一致。