2013-03-20 44 views
2

我使用git作爲版本控制,我試圖將當前提交的SHA1掛接到Visual Studio構建中作爲定義。鉤git命令到Visual Studio預構建步驟

所以基本上我想打開命令

git rev-parse HEAD 

的輸出轉換成定義,我可以輸出二進制中嵌入。

在此先感謝。

回答

2

使用post-commitgithook,你可以把它放到一個文件中。我認爲 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的/掛鉤/後提交

文件應保持未被跟蹤,因爲它是(幾乎)不可能包括的散列內提交承諾本身。

+1

下面是一個可能存在問題的問題:http://stackoverflow.com/questions/12410164/github-for-windows-pre-commit-hook – forivall 2013-03-20 18:09:45

3

坦率地說,我更喜歡在Visual Studio中通過Git post-commit預生成事件。知道你是否從一個骯髒的存儲庫構建,還有額外的好處。今天寫了這篇文章。以下是從構建到執行的一般步驟:

構建過程具有預構建腳本,該構建腳本收集版本和存儲庫狀態信息。在我們的例子中,VC++使用Windows PowerShell version_info.ps1腳本。

預生成腳本生成源代碼文件,這是代碼庫的其餘部分所期望的。生成的文件具有允許或拒絕運行版本所需的所有內容。在我們的例子中,它是一個C++頭文件version.h

代碼包含檢查構建是否合法運行的功能,並根據需要記錄和停止進程。該示例代碼位於version.cpp示例文件的versionLogAndVet函數中。

在運行時,versionLogAndVet函數允許只運行存儲庫狀態/構建配置的許可組合。它還記錄版本信息。

The specifics and code examples are at the full post

相關問題