我正在使用git作为版本控制,我正在尝试将当前提交的SHA1挂钩到Visual Studio构建中作为定义。
所以基本上我想转动命令的输出
git rev-parse HEAD
进入我可以嵌入输出二进制文件的定义。
提前致谢。
答案 0 :(得分:3)
坦率地说,我更喜欢Visual Studio中的预构建事件而不是Git post-commit。了解您是否从脏存储库构建还有其他好处。今天写了这篇文章。以下是从构建到执行的一般步骤:
构建过程具有预构建脚本,该脚本收集版本和存储库状态信息。在我们的示例中,VC ++使用Windows PowerShell version_info.ps1
脚本。
预构建脚本生成源代码文件,该代码库的其余部分需要该文件。生成的文件包含允许或拒绝运行版本所需的一切。在我们的例子中,它是一个C ++头文件version.h
。
代码包含检查构建是否合法运行的函数,并根据需要记录和停止该过程。该示例代码位于versionLogAndVet
示例文件的version.cpp
函数中。
在运行时,versionLogAndVet
函数只允许运行存储库状态/构建配置的允许组合。它还记录版本信息。
答案 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
该文件应保持未跟踪,因为(几乎)不可能在提交本身中包含提交的哈希值。