钩子git命令到visual studio预构建步骤

Hook git command into visual studio pre build step

本文关键字:构建 studio visual git 命令 钩子      更新时间:2023-10-16

我正在使用git作为版本控制,我正试图将当前提交的SHA1挂钩到visual studio构建中作为定义。

基本上我想把命令

的输出
git rev-parse HEAD

放入一个定义中,我可以将其嵌入到输出二进制文件中。

坦率地说,我更喜欢Visual Studio中的预构建事件,而不是Git的post-commit。知道是否从脏存储库构建还有一个额外的好处。我今天写了这方面的报道。下面是从构建到执行的一般步骤:

构建过程有一个预构建脚本,它收集版本和存储库状态信息。在我们的例子中,vc++使用了Windows PowerShell version_info.ps1脚本。

预构建脚本生成源代码文件,这是代码库的其余部分所期望的。生成的文件包含允许或拒绝运行该版本所需的所有内容。在我们的例子中,它是一个c++头文件version.h

代码包含检查构建是否合法运行的函数,并根据需要记录和停止进程。示例代码在version.cpp示例文件的versionLogAndVet函数中。

在运行时,versionLogAndVet函数只允许运行存储库状态/构建配置的允许组合。它还记录版本信息。

详细内容和代码示例见全文

使用post-commit githook,您可以将其放入文件中。我认为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

文件应该保持不被跟踪,因为(几乎)不可能在提交本身中包含提交的哈希值。