2016-04-04 3 views
0

Ich habe ein Web-Projekt, das in seinem eigenen Git-Repository ist. Es verweist auf andere Projekte, die sich ebenfalls in ihren eigenen Repositorys befinden, aber zu dieser Lösung hinzugefügt werden.Visual Studio - Git ziehen verschiedene Repositories auf Build

Ist es möglich, an diesen anderen Projekten als eine Art Build-Aktion zu arbeiten? Idealerweise würde ich beim Erstellen des Webprojekts den Master-Zweig ziehen und alle anderen Projekte automatisch aktualisieren, so dass ich nicht jedes ihrer Repositorys manuell öffnen muss, eins nach dem anderen, ein Pull für jedes.

+0

Haben Sie versucht, die Repos in einem Post-Build-Event des Webprojekts zu ziehen? – stijn

+0

Wäre es Post oder Pre? Ich würde davon ausgehen, dass Web-Projekt-Abhängigkeiten vor dem Web-Projekt erstellt werden? Außerdem habe ich niemals irgendwelche Arten von Skripten in Pre-/Post-Build-Events ausgeführt. Hättest du Beispiele dafür? – blgrnboy

+0

Sorry, ja, vor. Das Skript wird über cmd.exe ausgeführt. Verwenden Sie also alles, was Sie in der Befehlszeile verwenden. msbuild-Variablen werden erweitert, so dass Sie z.B. 'git --work-tree $ (Projektverzeichnis) .. \ project1 --git-dir $ (Projektverzeichnis) .. \ project1 \ .git pull' – stijn

Antwort

2

Es gibt default "Before" Ziele in MSBuild finden Sie unter: https://msdn.microsoft.com/en-us/library/ms366724.aspx

Dies ermöglicht es Ihnen, was auch immer "Setup" Prozesse, die Sie ausführen müssen, bevor die "CoreBuild" Ziel ausgeführt wird. so könnte man so etwas in Ihrem Projekt tun:

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

Dies setzt natürlich voraus, dass git an der Maschine und die von dem Systempfad installiert ist.

<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> 

Ein ItemGroup ist wie ein Array und das „%“ sind wie eine „foreach“ Erklärung: Sie können auch MSBuild „Items“ machen dies mehr „dynamisch“, zum Beispiel. Also wird dieser eine Exec über alle Repos iterieren und einen Git-Klon machen, oder ziehen, oder was auch immer es ist, was er tun muss.

Darüber hinaus möchten Sie möglicherweise mit "Bedingungen", die genau wie "IF" -Anweisungen in Code aussehen. Sie können also bedingt anhand bestimmter Kriterien einen Klon oder einen Pull erstellen.

Hoffe, das hilft.

Verwandte Themen