某些程序会以x.y.z-[git commit/svn id]
的形式打印一个版本(例如,1.3-9-gddc8d41
返回git describe --tags
)以用于开发版本。我想知道如何解决以下问题:
为了将版本放入要在运行时打印的程序中(例如,当使用--version
调用程序时),需要在编译时知道它。通常一个在测试后提交(这意味着编译)。
可以在提交之前确定修订版ID或甚至提交哈希,并将其写入版本文件。那是怎么做的?如果是,具体如何。
答案 0 :(得分:0)
如果要包含实际的SCM修订/提交标识符,则列出的第二种方式是通常的方式。重复文件集称为标记(在Git和SVN中),并且具有几个重要的约定属性:
这样,标签中的代码完全匹配从中复制的最后修订版本 - 版本信息除外 - 并且版本号的明显“不匹配”无关紧要。
SVN团队正是这样做的,here you can see an example标记了1.8.11并在同一次提交中设置了版本信息。
答案 1 :(得分:0)
抽象@ PartickQuirk的答案:人们通常可以在运行时通过两者实现反映SCM提交的版本的输出
没有必要复制任何文件(但SCM可能会在内部进行复制)。