c++ - 使用自动构建系统进行版本控制

标签 c++ version-control build-automation versioning

我们最近转向了一个自动构建系统(内部的东西,还不是 Hudson 或 Teamcity)。
我们的版本存储在头文件中,并包含在一些 cpp 和资源文件中。它也被安装程序使用。

它的格式是 A.B.C.D 其中:

  • A 多年未变。
  • B 很少更改(主要版本)。
  • C 随次要版本发生变化。
  • 当新的次要版本(错误修复)交付给 QA 时,D 会发生变化。

到目前为止,负责构建新版本的人在开始构建之前手动递增 C/D(D 更常见),然后 checkin 更改,然后开始构建。在那个人成功构建应用程序之前,版本保持不变。

自然地,随着转向自动构建系统,我想摆脱更改版本号的手动步骤。

应该如何处理?

  • 无论是 QA 构建还是内部测试构建(即我正在研究某些功能,我想测试我还没有),我是否会在每次创建新构建时增加 D '打破任何东西)?
  • 增量步骤是自动构建系统中的任务吗?
  • 自增后是否要提交版本文件?
  • 如何避免在我的版本控制中出现大量干扰?我不想要大量的“版本递增”提交。
  • 如果构建失败我该怎么办?仍然增加版本并提交?

最佳答案

Do I increment D whenever a new build is made, whether it's a QA build or an internal-test build (i.e. I'm working on some feature and I'd like to test I haven't broke anything)?

Eclipse 基金会添加了一个 E 元素,即构建的日期和时间。我认为这对于内部测试版本来说是个好主意。是否要将 E 用于 QA 构建取决于您。

Is the increment step a task in the automatic build system?

看起来合乎逻辑,但您必须通过某种方式告诉该任务您正在执行何种构建。

How do I avoid having a lot of noise in my version control? I don't want tons of "version incremented" commits.

提交带有源代码的版本控制文件。

基本上,您的开发构建过程应按以下顺序进行。

  • 从开发源代码构建产品。
  • 如果构建成功,增加版本号。
  • 提交源代码和版本控制文件。
  • 从您的版本控制系统重新构建产品。
  • 如果构建失败,撤回源代码和版本控制文件提交。

这会测试您的构建和构建过程。第二次构建应该永远不会失败,但如果失败,则过程中存在问题。

您的生产构建过程将从第 2 步开始,跳过第 3 步。

What do I do if the build failed? Still increment the version and commit?

我的 E 是自动递增的。 :-) 我会拒绝其他元素 A、B、C 或 D。

关于c++ - 使用自动构建系统进行版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5007707/

相关文章:

git - git-svn 的钩子(Hook)

android - Android 上的 gradle 自定义任务顺序

java - Sonar 成功执行,未报告代码覆盖率

android - 创建通用应用程序并构建自动化

c++ - 是否有可能在没有得到 "new"ed 的结构中有一个 boost::variant?

c++ - VS代码 'cannot open source file "stdio.h“C/C++”

svn - 重新组织 svn 存储库

version-control - 版本升级与版本分支的优缺点

c++ - 带参数的类的 pthread 成员函数

C++ 交换 unique_ptr's