3

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

所以基本上我想把命令的输出

git rev-parse HEAD

到我可以嵌入输出二进制文件的定义中。

提前致谢。

4

2 回答 2

3

坦率地说,我更喜欢 Visual Studio 中的预构建事件而不是 Git 提交后事件。知道您是否从脏存储库构建还有额外的好处。今天就写到这了。以下是从构建到执行的一般步骤:

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

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

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

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

详细信息和代码示例在全文中

于 2013-11-05T03:08:42.503 回答
1

使用post-commit githook,您可以将其放入文件中。我认为Windows 上的 git 带有一个 bourne shell,因此以下内容可以在提交后挂钩中使用。

#!/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

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

于 2013-03-20T18:06:18.877 回答