如何在版本中维护修订/构建组件?

时间:2011-10-07 15:08:39

标签: version versioning release-management

在阅读了很多文章/ QA /常见问题/书籍后,我开始思考 [MAJOR]。[MINOR]。[REV] 是最有用的版本控制架构 描述项目版本(版本控制架构)之间的兼容性 对于开发人员,不用于营销)。

MAJOR更改向后不兼容,需要更改 项目名称,文件路径,GUID等。

MINOR更改向后兼容。马克介绍新的 特征

REV用于安全/错误修复。向后和向前兼容。

在我的工作中,许多项目依赖于存储的内部库 在发布服务器(FTP)上。它们有不同的版本,例如:

  1.0.0
  1.1.0
  1.1.1

依赖库的路径包括版本组件和硬件 在构建脚本中编码,用于自动下载到 lib dir。

问题:通常的做法是将库的路径包含在内 为内部开发构建脚本?

问题:这是最好的:在库名中包含版本号或 不?包含哪个组件?例如:

  libfoo-1.so
  libfoo-1.2.jar
  libfoo-2.3.14.dll

如果仅包含 [MAJOR] ,则可以在源代码中内联库名 和版本更改,您不需要修改任何代码。如 库有固定的名称你总是可以问库版本 运行时(通过调用适当的函数)。

如果每次细微更改都包含 [MAJOR]。[MINOR] 组件 需要更新所有受影响的项目(调用LoadLibrary, CLASSPATH env var)。并且您无法在运行时检查版本 通常在运行时搜索库的标准机制 不允许使用通配符按名称加载(例如“libbar-2。*”)。

我认为不需要 [REV] 。你只需要 以错误报告的方式提供此组件。

问题:我计划实现这样的架构:包发布到 路径,如:

  /srv/projs/foo/1.2.2

并创建符号链接

  /srv/projs/foo/1.2

来自之前的路径。所以每个依赖项目都不需要make 获取最新库的任何步骤。任何人都使用这样的架构吗?

1 个答案:

答案 0 :(得分:2)

如果您仍然没有使用(任何)SCM,那么您走错了路。 如果你不使用可以与旧SCM集成的构建器 - 你又走错了路径

文件的永久名称(不包含 *任何版本号)是维护源代码的最简单方法(您必须在构建内部修改任何内容)