Visual Studio - Git在构建时提取各种存储库

时间:2016-04-04 21:08:50

标签: c# git msbuild visual-studio-2015

我有一个Web项目,它位于自己的git存储库中。它引用了同样位于其自己的存储库中的其他项目,但是已添加到此解决方案中。

是否有可能将这些其他项目作为某种构建操作?理想情况下,在构建Web项目时,我想拉动主分支并自动更新所有其他项目,这样我就不必手动打开每个存储库,逐个执行。< / p>

1 个答案:

答案 0 :(得分:2)

有默认&#34; BeforeBuild&#34; MSBuild中的目标,请参阅: https://msdn.microsoft.com/en-us/library/ms366724.aspx

这允许你运行任何&#34;设置&#34;在&#34; CoreBuild&#34; 目标运行之前,您需要的流程。所以,你可以在你的项目中做这样的事情:

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

这当然假设git安装在机器上并且可以从系统路径获得。你也可以使用MSBuild&#34; Items&#34;使这更多&#34;动态&#34;,例如:

<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就像一个数组,&#34;%&#34;就像一个&#34; foreach&#34;声明。因此,这个Exec将迭代所有的repos并执行git clone,或者pull,或者你需要它做什么。

此外,您可能希望查看使用&#34;条件&#34;这就像&#34; IF&#34;代码中的语句。因此,您可以根据某些标准有条件地进行克隆或拉动。

希望这有帮助。