Git で TFS を使用してビルドしようとすると、TFS の git プロバイダーがまだサブ モジュールをサポートしていないという制限があります。少し面倒ですが、コンパイルの前に TFS にバッチ ファイルを実行するように指示することができます。これを使用して手動の git スクリプトを呼び出し、「スーパー」プロジェクトのすべてのサブモジュールを更新しました。
このバッチ ファイルが実行するコマンドは単純です: git submodule update --init --recursive
サブモジュールのソースを TFS に移行する前は、これはうまく機能していましたが、上記の git モジュール スクリプトが機能しなくなったため、TFS ビルドが失敗しています。
したがって、ビルド前に TFS が行うことは、現在のソースを Git からビルド サーバー上のフォルダーにプルすることです。
このフォルダーに対して Git Bash を開き、次のコマンドを実行すると: git submodule init git submodule update
次のエラーが表示されますが、それが何であるかを一生理解できません。「スーパープロジェクト」レポがプッシュされた後にサブモジュールのコミットがプッシュされたことを一般的に示しているこの特定のエラーを検索してみました。しかし、「スーパープロジェクト」のコミットとプッシュが完了する前に、すべてのサブモジュールのコミットとプッシュが実行されていることを確認できます。TFS git コマンドの出力は次のとおりです。
james@TFS /C/Builds/1/Technique Webs/MIS Console 5.2 Development/src (5.2development)
$ git submodule init
james@TFS /C/Builds/1/Technique Webs/MIS Console 5.2 Development/src (5.2development)
$ git submodule update
Username for 'http://tfs:8080': james
Password for 'http://james@TFS:8080': <password>
From http://TFS:8080/TFS/Technique/_git/Technique%20Library
* branch HEAD -> FETCH_HEAD
fatal: reference is not a tree: 33106ea146d470159e327c1b2d623d14f522cdd4
Unable to checkout '33106ea146d470159e327c1b2d623d14f522cdd4' in submodule path 'calc-engine'
james@TFS /C/Builds/1/Technique Webs/MIS Console 5.2 Development/src (5.2development)
$