ビルド時にTFSワークスペースから変更セット番号またはリビジョン番号の情報を抽出する方法を探していますが、TFSサーバーからオフラインになっている可能性があります。
具体的な問題は次のとおりです。クロスプラットフォーム(Linux / g ++/makeおよびWindows/VS2010)のC++コードベースをSVNからTFSに移植しようとしています。ビルドプロセスの一部として、Makefile(Linux側)またはVSビルドプロパティは、svnversionまたはSubWCRevコマンドのフィルター処理された出力を含む「バージョン」ファイルを自動的に作成するように設定されます。この情報は、メインの実行可能ファイルのリビジョン番号と変更状態だけでなく、構築されてリンクに使用されるコンポーネントの静的ライブラリのレポートにも使用されます。
複雑な問題は、TFSサーバーが別の状態のVPNの最後にあり、確実に利用できないことです。TFSサーバーに接続していないときに、コードをローカルでビルドできることが重要です。TFコマンドラインツールは、私が知る限り、接続の確立を試みることを主張するか、リモートリソースにアクセスする権限がないことを報告します。
現在のVS/TortoiseSVNアプローチには、カスタムビルドステップ(「PreBuildEvent」の後に実行)があります。これは、SubWCRevを呼び出し、出力をフィルタリングしてsvnversionからの出力と互換性を持たせ、最後にヘッダーファイルに書き込みます。
set bv=$(IntDir)\$(ProjectName)_bv.h
SubWCRev "$(SolutionDir)\..\$(ProjectName)" | sed "s/:/ /g" | gawk "/revision/ {r=%24(NF)} /modifications/ {m=\"M\"} END {print \"#define $(ProjectName)_bv \\\"\" r m \"\\\"\"}" > "%bv%.tmp"
fc "%bv%" "%bv%.tmp" 2>nul >nul || copy "%bv%.tmp" "%bv%"
断続的に接続されたTFSで使用するための同様に簡単なソリューションを誰かが提供できますか?
どんな助けでも大歓迎です!