软件版本号插入
Posted
技术标签:
【中文标题】软件版本号插入【英文标题】: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 - 编译,其中链接器确保上述符号的扩展
常数。
每当我发布新软件时,我都会先创建一个标签(分配实际数字 到上面的符号常数)。然后我运行编译过程,将之前检索到的数字推送到源代码中的正确位置。
您认为建议的方法可用吗?感谢您的任何建议。
【问题讨论】:
【参考方案1】:-
您可以(理论上)从非标记提交构建(否则您的树将被标记淹没)
适合您的型号
0.8.1618
(尾随 rev
)看起来不错,但考虑一下可能的历史重写(即使在同一个仓库中也可以更改本地版本)
0.8.229f43b67c2a
(尾随node|short
)不利于眼睛,但在大多数情况下适合历史探索
我认为,您可以根据article in Mercurial wiki 的想法和我的建议,对您的构建链进行(可能)小幅修正:
在标签中写完整版(mayor.minor.build)
将与最后一个标签的距离写入补丁(以提高可读性)
我有完整版作为标签,使用自己的模板别名
semver = "latesttagifeq(latesttagdistance,0,'','+latesttagdistance')"
用于构建可用且易于理解的版本字符串,而不是 wiki 中建议的平原 node|short
,因此,我当前的 nice tip
显示为 0.8.13+38
HTH
【讨论】:
以上是关于软件版本号插入的主要内容,如果未能解决你的问题,请参考以下文章