我有一个Web项目,它位于自己的git存储库中。它引用了同样位于其自己的存储库中的其他项目,但是已添加到此解决方案中。
是否有可能将这些其他项目作为某种构建操作?理想情况下,在构建Web项目时,我想拉动主分支并自动更新所有其他项目,这样我就不必手动打开每个存储库,逐个执行。< / p>
答案 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;代码中的语句。因此,您可以根据某些标准有条件地进行克隆或拉动。
希望这有帮助。