将git命令挂入visual studio预构建步骤

时间:2013-03-20 17:59:45

标签: c++ c visual-studio git

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

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

git rev-parse HEAD

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

提前致谢。

2 个答案:

答案 0 :(得分:3)

坦率地说,我更喜欢Visual Studio中的预构建事件而不是Git post-commit。了解您是否从脏存储库构建还有其他好处。今天写了这篇文章。以下是从构建到执行的一般步骤:

构建过程具有预构建脚本,该脚本收集版本和存储库状态信息。在我们的示例中,VC ++使用Windows PowerShell version_info.ps1脚本。

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

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

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

The specifics and code examples are at the full post

答案 1 :(得分:1)

使用post-commit githook,您可以将其放入文件中。我认为 git on windows附带了一个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

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