2016-04-04 12 views
0

自分のgitリポジトリにあるWebプロジェクトがあります。これは、独自のリポジトリにも存在するが、このソリューションに追加される他のプロジェクトを参照します。Visual Studio - ビルドでさまざまなリポジトリを取得

ビルドアクションのような他のプロジェクトをプルすることは可能ですか?理想的には、Webプロジェクトを構築するときに、マスターブランチをプルして他のすべてのプロジェクトを自動的に更新したいので、それぞれのリポジトリを手動で1つずつ手動で開く必要はありません。

+0

Webプロジェクトのポストビルドイベントでリポジトリをプルしようとしましたか? – stijn

+0

ポストかプレ?私は、Webプロジェクトの依存関係はWebプロジェクトの前に構築されていると仮定します。また、プレビルドイベントとポストビルドイベントでスクリプトを実行したことはありません。これの例はありますか? – blgrnboy

+0

申し訳ありませんが、はい、前に。スクリプトはcmd.exe経由で実行されるため、コマンドラインで使用するものを使用してください。あなたができるように、msbuild変数が展開されています。 'git --work-tree $(ProjectDir).. \ project1 --git-dir $(ProjectDir).. \ project1 \ .git pull' – stijn

答えて

2

ありMSBuildのではデフォルトの「BeforeBuild」標的である、以下を参照してください。https://msdn.microsoft.com/en-us/library/ms366724.aspx

これは「CoreBuild」ターゲットが実行される前に、あなたが必要なものは何でも「セットアップ」のプロセスを実行することができます。あなたのプロジェクトで次のようなことをすることができます:

<Target Name="BeforeBuild"> 
    <Exec Command="git.exe clone http://some/repo.git" /> 
</Target> 

もちろん、gitがマシンにインストールされ、システムパスから利用可能であることを前提としています。あなたはまた、例えば、これはより多くの「動的」にするためにMSBuildの「アイテム」を使用することができます。

<ItemGroup> 
    <ReposToInclude Include="//first/repo.git" /> 
    <ReposToInclude Include="//second/repo.git" /> 
    <ReposToInclude Include="//third/repo.git" /> 
</ItemGroup> 
<Target Name="BeforeBuild"> 
    <Exec Command="git.exe clone %(ReposToInclude.Identity)" /> 
</Target> 

アンItemGroupが配列のようなもので、「%」は「foreachの」文のようなものです。だから、この1つのエグゼクティブは全てのレポジスを反復し、gitクローンを行うか、引き出すか、それが必要なのは何でもします。

さらに、コード内の "IF"ステートメントと同様の "条件"を使用して調べることができます。条件付きでクローンを作成したり、いくつかの基準に基づいてプルすることができます。

これが役に立ちます。

関連する問題