我想知道如何将Git提交哈希和/或其他信息添加到已编译二进制文件中的C++变量的内容中,而不必将其作为Git跟踪的源代码的一部分.
我需要跟踪嵌入式处理器上运行的已编译可执行文件中的固件版本信息.识别固件二进制文件的特定版本的方法,例如有意义的文件名,MD5校验和甚至日期/时间戳,在这个封闭的环境中是不可用的(即,没有文件系统).
一种方法是让设备的控制台输出产生识别文本,例如"版本1.2.3","提交哈希1bc123 ......"或类似文本.固件发布信息仅供维护人员使用,因此经过培训的操作员可以检查控制台输出.为了实现这一点,它可能涉及手动编辑版本字符串,然后编译成代码并在程序启动时输出到控制台.
对于使用签核工作流程来仔细检查版本信息是否正确的主要版本,这是可以接受的.然而,这是一个手动过程,它本质上是不可靠的.例如,如果开发人员忘记更新版本信息怎么办? - 现在编译的代码与其报告的版本字符串之间存在脱节.
每次用户想要测试硬件时新编译和下载代码的工作流程在所讨论的情况下是不实际的,即,更新固件是相当繁重的.
因此需要一种识别代码版本的自动方法.在这种情况下,使用Git,开发人员定期将他们的工作提交给功能分支.显示Git提交哈希,以及可能还有未分级更改,将是一种识别用于编译固件的源代码状态的方法.
要求是我希望我的应用程序可以获得信息,以便它能够显示:"Git commit:[01abcdef ... etc],branch:experimentalStuffDoNotRelease"
因此,我想在编译的C和/或C++代码中自动包含Git信息,例如提交哈希和分支.
开发环境让开发人员同时使用Windows和Linux,并使用Eclipse CDT,其工作流程相对简单:check out; 编译; 下载到硬件.