バージョン管理として git を使用しており、現在のコミットの SHA1 を定義としてビジュアル スタジオ ビルドにフックしようとしています。
だから基本的に私はコマンドの出力を変えたい
git rev-parse HEAD
出力バイナリに埋め込むことができる定義に。
前もって感謝します。
バージョン管理として git を使用しており、現在のコミットの SHA1 を定義としてビジュアル スタジオ ビルドにフックしようとしています。
だから基本的に私はコマンドの出力を変えたい
git rev-parse HEAD
出力バイナリに埋め込むことができる定義に。
前もって感謝します。
率直に言って、私は Git コミット後のイベントよりも Visual Studio でのビルド前のイベントの方が好きです。ダーティ リポジトリからビルドしているかどうかを知ることには、さらに利点があります。今日はそれについての書き込みを行いました。ビルドから実行までの一般的な手順は次のとおりです。
ビルド プロセスには、バージョンとリポジトリのステータス情報を収集するビルド前スクリプトがあります。この場合、VC++ は Windows PowerShellversion_info.ps1
スクリプトを使用します。
ビルド前スクリプトはソース コード ファイルを生成します。これは、コードベースの残りの部分で期待されています。生成されたファイルには、バージョンの実行を許可または拒否するために必要なすべてが含まれています。この場合、それは C++ ヘッダー ファイルですversion.h
。
コードには、ビルドの実行が正当かどうかをチェックし、必要に応じてプロセスをログに記録して停止する機能が含まれています。そのサンプル コードはversionLogAndVet
、サンプル ファイルの関数にありversion.cpp
ます。
実行時に、versionLogAndVet
関数はリポジトリ ステータス/ビルド構成の許可された組み合わせのみを実行できます。また、バージョン情報も記録します。
post-commit
githookを使用して、ファイルに入れることができます。Windows の git には bourne シェルが付属していると思うので、次のコードはポストコミット フックで機能します。
#!/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 として保存します
コミット自体にコミットのハッシュを含めることは (ほぼ) 不可能であるため、ファイルは追跡されないままにしておく必要があります。