钩git命令到Visual Studio预构建步骤
问题描述:
我使用git作为版本控制,我试图将当前提交的SHA1挂接到Visual Studio构建中作为定义。钩git命令到Visual Studio预构建步骤
所以基本上我想打开命令
git rev-parse HEAD
的输出转换成定义,我可以输出二进制中嵌入。
在此先感谢。
答
使用post-commit
githook,你可以把它放到一个文件中。我认为 git在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的/挂钩/后提交
文件应保持未被跟踪,因为它是(几乎)不可能包括的散列内提交承诺本身。
答
坦率地说,我更喜欢在Visual Studio中通过Git post-commit预生成事件。知道你是否从一个肮脏的存储库构建,还有额外的好处。今天写了这篇文章。以下是从构建到执行的一般步骤:
构建过程具有预构建脚本,该构建脚本收集版本和存储库状态信息。在我们的例子中,VC++使用Windows PowerShell version_info.ps1
脚本。
预生成脚本生成源代码文件,这是代码库的其余部分所期望的。生成的文件具有允许或拒绝运行版本所需的所有内容。在我们的例子中,它是一个C++头文件version.h
。
代码包含检查构建是否合法运行的功能,并根据需要记录和停止进程。该示例代码位于version.cpp
示例文件的versionLogAndVet
函数中。
在运行时,versionLogAndVet
函数允许只运行存储库状态/构建配置的许可组合。它还记录版本信息。
下面是一个可能存在问题的问题:http://stackoverflow.com/questions/12410164/github-for-windows-pre-commit-hook – forivall 2013-03-20 18:09:45