软件版本号插入
Software version number insertion
我一直在想一种方法,如何将Major.minor.build形式的软件版本号插入到源代码中,而不需要手动修改源代码。
我有一个想法,版本号的所有部分都将来自
来自版本控制软件(在我的例子中是 Mercurial)的信息。 主要和
minor 将由标签编号 (M.m) 自动填充,build 将由
修订号。就是这个意思。
就实现而言,我认为我可以编写一个由某个钩子触发的脚本
(可能是 pretag 钩子)。这个脚本的目标是创建一个C语言头文件
包含以下内容的文件(例如 Version.h
)
#define MAJOR M
#define MINOR m
#define BUILD b
Version.h
header 将由负责软件版本号的模块包含
发布(在我的例子中是通过在通信 table 中填写几条记录)。实际上
将软件版本号填写到源代码中,这是第二次需要做的
步骤 - 链接器确保扩展上述符号的编译
常数。
每当我发布新软件时,我都会先创建一个标签(分配实际数字
到上面的符号常量)。然后我 运行 编译过程将之前检索到的数字推送到源代码中的正确位置。
您觉得推荐的方法好用吗?感谢您的任何建议。
- 您可以(理论上)从未标记的提交构建(否则您的树将被标记淹没)
- 对于您的模型
0.8.1618
(尾随 {rev}
)似乎不错,但考虑可能的历史重写(即使在同一个 repo 中也可以更改本地 rev)
0.8.229f43b67c2a
(尾随{{node|short}
)不好看,但在大多数情况下适合历史探索
- 我认为,您可以根据 article in Mercurial wiki 的想法和我的建议,对您的构建链进行(可能)小的修正:
- 在标签中写入完整版本 (mayor.minor.build)
- 将与最后一个标签的距离写入补丁(为了更好的可读性)
我有完整版作为标签,使用自己的模板别名
semver = "{latesttag}{ifeq(latesttagdistance,0,'','+{latesttagdistance}')}"
用于构建可用且易于理解的版本字符串,而不是在 wiki plain {node|short}
中建议的字符串,因此,我当前的 nice tip
显示为0.8.13+38
HTH
我一直在想一种方法,如何将Major.minor.build形式的软件版本号插入到源代码中,而不需要手动修改源代码。
我有一个想法,版本号的所有部分都将来自 来自版本控制软件(在我的例子中是 Mercurial)的信息。 主要和 minor 将由标签编号 (M.m) 自动填充,build 将由 修订号。就是这个意思。
就实现而言,我认为我可以编写一个由某个钩子触发的脚本
(可能是 pretag 钩子)。这个脚本的目标是创建一个C语言头文件
包含以下内容的文件(例如 Version.h
)
#define MAJOR M
#define MINOR m
#define BUILD b
Version.h
header 将由负责软件版本号的模块包含
发布(在我的例子中是通过在通信 table 中填写几条记录)。实际上
将软件版本号填写到源代码中,这是第二次需要做的
步骤 - 链接器确保扩展上述符号的编译
常数。
每当我发布新软件时,我都会先创建一个标签(分配实际数字 到上面的符号常量)。然后我 运行 编译过程将之前检索到的数字推送到源代码中的正确位置。
您觉得推荐的方法好用吗?感谢您的任何建议。
- 您可以(理论上)从未标记的提交构建(否则您的树将被标记淹没)
- 对于您的模型
0.8.1618
(尾随{rev}
)似乎不错,但考虑可能的历史重写(即使在同一个 repo 中也可以更改本地 rev)0.8.229f43b67c2a
(尾随{{node|short}
)不好看,但在大多数情况下适合历史探索
- 我认为,您可以根据 article in Mercurial wiki 的想法和我的建议,对您的构建链进行(可能)小的修正:
- 在标签中写入完整版本 (mayor.minor.build)
- 将与最后一个标签的距离写入补丁(为了更好的可读性)
我有完整版作为标签,使用自己的模板别名
semver = "{latesttag}{ifeq(latesttagdistance,0,'','+{latesttagdistance}')}"
用于构建可用且易于理解的版本字符串,而不是在 wiki plain {node|short}
中建议的字符串,因此,我当前的 nice tip
显示为0.8.13+38
HTH