插入软件版本号

问题描述 投票:0回答:1

我一直在考虑一种方法,该方法如何将格式为[[Major.minor.build的软件版本号插入源代码,而无需手动修改源代码。

我有一个想法,版本号的所有部分都将从来自版本控制软件的信息(在我的情况下为Mercurial)。

主要

minor将由标签号(M.m)自动填充,构建将由修订号。那是主意。就实现而言,我认为我可以编写由某个钩子触发的脚本(可能是预标签钩)。该脚本的目标是创建一个C语言标头具有以下内容的文件(例如Version.h

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

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

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

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

version-control mercurial versioning mercurial-hook
1个回答
1
投票
    理论上,您可以从未标记的提交中构建(否则您的树将被标记淹没)
  1. 对于您的型号
    • [0.8.1618(跟踪{rev})似乎不错,但请考虑可能的历史记录重写(即使在相同的仓库中也可以更改本地版本)
  2. [0.8.229f43b67c2a(尾随{{node|short})对眼睛不利,但在大多数情况下对历史探索有利
  3. [我认为,您可以根据article in Mercurial wiki中的想法和我的建议,将您的想法(可能)进行一些小的更正以构建链。
    • 在标签中写完整版(mayor.minor.build)
  4. 到最后一个标签的距离写入补丁(以提高可读性)
我有

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

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

用于构建可用和易于理解的版本字符串,而不是在Wiki Plain {node|short}中建议,因此,我当前的

nice

tip显示为0.8.13+38HTH
© www.soinside.com 2019 - 2024. All rights reserved.