将git命令挂钩到Visual Studio预构建步骤中

3
我正在使用git作为版本控制,尝试将当前提交的SHA1值挂钩到Visual Studio构建中作为一个定义。所以基本上我想把这个命令的输出转换成:
git rev-parse HEAD

将其定义为我可以嵌入输出二进制文件中的内容。
提前感谢。
2个回答

3
坦白地说,我更喜欢在Visual Studio中使用预构建事件而不是Git提交后事件。这样做的额外好处是知道是否从脏库构建。今天的写作就是关于这个的。以下是从构建到执行的一般步骤:
构建过程具有预构建脚本,该脚本收集版本和存储库状态信息。在我们的情况下,VC++使用Windows PowerShell的version_info.ps1脚本。
预构建脚本生成源代码文件,其余代码库需要此文件。生成的文件包含了运行版本所需的所有内容。在我们的情况下,它是一个C++头文件version.h。
代码包含一个函数,检查构建是否合法,并根据需要记录并停止进程。该示例代码位于version.cpp示例文件的versionLogAndVet函数中。
在运行时,versionLogAndVet函数仅允许运行允许的存储库状态/构建配置组合。它还记录版本信息。 具体信息和代码示例请参见完整文章

1

使用post-commitgithook,您可以将其放入文件中。我认为Windows上的Git带有Bourne shell,因此以下内容将在post-commit挂钩中工作。

#!/bin/sh
GIT_SHA_INCLUDE_FILE=foo.h
echo -n '#define GIT_SHA ' > $GIT_SHA_INCLUDE_FILE
git rev-parse HEAD >> $GIT_SHA_INCLUDE_FILE

将其保存为.git/hooks/post-commit。

该文件应保持未跟踪状态,因为在提交本身中包含提交哈希几乎是不可能的。


1
这里有一个可能会出现问题的陷阱:https://dev59.com/jWjWa4cB1Zd3GeqPqWpL - forivall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接