钩子git命令到visual studio预构建步骤
Hook git command into visual studio pre build step
我正在使用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
文件应该保持不被跟踪,因为(几乎)不可能在提交本身中包含提交的哈希值。
相关文章:
- Android Studio:如何在build.gradle中定义自定义宏(针对不同的构建变体),并让原生C / C++
- 在Windows 10上使用Visual Studio 2019构建的Tesseract API c ++程序在Wind
- Visual Studio C++ 它只构建选项卡中显示的文件吗?
- 使用 Visual Studio 2019 构建 Hello World wxwidgets 应用程序时出错
- 无法在 Visual Studio 2010 中构建 Allegro C++ 程序
- 在 Boost::fiber 中引发的BOOST_ASSERT故障 Visual Studio "Debug" 构建
- Visual Studio 2019编译和构建
- 默认/样板代码在Visual Studio 2017中给我错误.E1574.虚幻.但构建成功了
- Visual Studio 2019:使用 vcvars64 从命令行构建C++.bat不再工作
- 在 Visual Studio 中构建一个没有 C/C++ 运行时的静态库
- 在Visual Studio 2017中使用c ++组件构建python解决方案时出现问题
- 在Visual Studio 2017中构建Qt可执行文件
- 所有Visual Studio安装程序崩溃,可视化构建工具也无法正常工作
- 在visual Studio中构建代码时,我遇到错误,.h文件丢失
- 如何使用cmake从Visual Studio构建为ia32解决方案
- Visual Studio 2017 中的 Tesseract 3.05 构建错误
- 如何使用Visual Studio 2017在Windows上构建OpenSSL?
- 如果使用平台工具集构建应用,则 CCheckListBox 项在选择时会重叠'Visual Studio 2017 (v141)'
- 如何在没有任何依赖库的情况下在Visual Studio中构建dll?
- 如何使用Visual Studio编译器使用cgo构建库?