【问题标题】:Software version number insertion软件版本号插入
【发布时间】:2020-08-31 22:23:35
【问题描述】:

我一直在想一种方法,如何将Major.minor.build形式的软件版本号插入到源代码中,而无需手动修改源代码。

我有一个想法,版本号的所有部分都将来自 来自版本控制软件的信息(在我的例子中是 Mercurial)。 专业minor 将自动填充标签的编号(M.m),build 将填充 修订号。就是这个想法。

就实现而言,我认为我可以编写一个由某个钩子触发的脚本 (可能是 pretag 钩子)。这个脚本的目标是创建一个 C 语言头文件 具有以下内容的文件(例如Version.h

#define MAJOR   M 
#define MINOR   m
#define BUILD   b

Version.h 标头将包含在负责软件版本号的模块中 发布(在我的情况下,通过在通信表中填写几条记录)。实际上 将软件版本号填写到源代码中,这将是必要的 step - 编译,其中链接器确保上述符号的扩展 常数。

每当我发布新软件时,我都会先创建一个标签(分配实际数字 到上面的符号常数)。然后我运行编译过程,将之前检索到的数字推送到源代码中的正确位置。

您认为建议的方法可用吗?感谢您的任何建议。

【问题讨论】:

    标签: version-control mercurial versioning mercurial-hook


    【解决方案1】:
    1. 您可以(理论上)从非标记提交构建(否则您的树将被标记淹没)
    2. 适合您的型号
      • 0.8.1618(尾随 {rev})看起来不错,但考虑一下可能的历史重写(即使在同一个仓库中也可以更改本地版本)
      • 0.8.229f43b67c2a(尾随{{node|short})不利于眼睛,但在大多数情况下适合历史探索
    3. 我认为,您可以根据article in Mercurial wiki 的想法和我的建议,对您的构建链进行(可能)小幅修正:
      • 在标签中写完整版(mayor.minor.build)
      • 与最后一个标签的距离写入补丁(以提高可读性)

    我有完整版作为标签,使用自己的模板别名

    semver = "{latesttag}{ifeq(latesttagdistance,0,'','+{latesttagdistance}')}"

    用于构建可用且易于理解的版本字符串,而不是 wiki 中建议的平原 {node|short},因此,我当前的 nice tip 显示为 0.8.13+38

    HTH

    【讨论】:

      猜你喜欢
      • 2017-11-06
      • 2010-11-11
      • 2017-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多