我在Eclipse CDT预构建步骤中使用以下命令,生成一个包含当前短Git哈希的头文件作为字符串宏:
git log --pretty=format:'#define GIT_HASH_STRING "%h"' -n 1 > ../Inc/gitcommit.h
效果很好,但它并没有表明工作树的状态。就像在运行git submodule status
时一样,如果有工作树更改,我希望它能吐出类似
a289542-dirty
这可能吗?我检查了man page的git-log格式,但没有看到任何看起来相关的内容。
上下文:通过嵌入式设备的CLI发出GIT_HASH_STRING
命令时,会显示version
宏。如果我可以在字符串中包含-dirty
标志,它可以作为设备运行未发布的固件版本的警告,该固件不与特定提交一致。
答案 0 :(得分:1)
git log
命令不检查工作树,因此无法执行此操作。
执行检查工作树的命令很多。一个简单的问题是git describe
:
git describe --always --dirty
如果工作树或索引相对于当前提交被修改,将打印出以-dirty
结尾的字符串(即,在git status
会说某事的情况相同的情况下暂停提交或不提交提交)。
如果你想检查子模块,还需要更多。