Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--.gitmodules180
-rw-r--r--README.md53
-rw-r--r--build/Repositories.props56
-rw-r--r--build/RepositoryBuild.targets5
-rw-r--r--build/repo.props1
-rw-r--r--build/repo.targets181
-rw-r--r--build/submodules.props55
-rw-r--r--build/tasks/BuildGraph/Repository.cs2
-rw-r--r--build/tasks/CalculateBuildGraph.cs2
m---------modules/Antiforgery9
m---------modules/AzureIntegration18
m---------modules/BasicMiddleware6
m---------modules/BrowserLink0
m---------modules/CORS6
m---------modules/Caching0
m---------modules/Common0
m---------modules/Configuration0
m---------modules/DataProtection6
m---------modules/DependencyInjection0
m---------modules/Diagnostics6
m---------modules/DotNetTools6
m---------modules/EntityFrameworkCore0
m---------modules/EventNotification0
m---------modules/FileSystem0
m---------modules/Hosting6
m---------modules/HtmlAbstractions8
m---------modules/HttpAbstractions8
m---------modules/HttpClientFactory0
m---------modules/HttpSysServer6
m---------modules/IISIntegration7
m---------modules/Identity6
m---------modules/JavaScriptServices6
m---------modules/JsonPatch8
m---------modules/KestrelHttpServer18
m---------modules/Localization6
m---------modules/Logging0
m---------modules/MetaPackages8
m---------modules/Microsoft.Data.Sqlite0
m---------modules/MusicStore6
m---------modules/Mvc18
m---------modules/MvcPrecompilation6
m---------modules/Options0
m---------modules/Proxy0
m---------modules/Razor6
m---------modules/ResponseCaching6
m---------modules/Routing6
m---------modules/Scaffolding0
m---------modules/Security10
m---------modules/ServerTests6
m---------modules/Session6
m---------modules/SignalR18
m---------modules/StaticFiles6
m---------modules/Testing0
m---------modules/WebSockets6
-rwxr-xr-xscripts/UpdateBuildTools.ps12
-rwxr-xr-x[-rw-r--r--]scripts/UpdateRepos.ps14
-rwxr-xr-xscripts/UpdateSubmodules.ps170
-rw-r--r--scripts/common.psm122
59 files changed, 568 insertions, 310 deletions
diff --git a/.gitignore b/.gitignore
index 5e36a0b23c..75392f570d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,7 +16,6 @@ StyleCop.Cache
node_modules
*.snk
.nuget
-.r
.deps
global.json
*.binlog
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000..ff191b1b02
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,180 @@
+[submodule "modules/Antiforgery"]
+ path = modules/Antiforgery
+ url = https://github.com/aspnet/Antiforgery.git
+ branch = dev
+[submodule "modules/AzureIntegration"]
+ path = modules/AzureIntegration
+ url = https://github.com/aspnet/AzureIntegration.git
+ branch = dev
+[submodule "modules/BasicMiddleware"]
+ path = modules/BasicMiddleware
+ url = https://github.com/aspnet/BasicMiddleware.git
+ branch = dev
+[submodule "modules/BrowserLink"]
+ path = modules/BrowserLink
+ url = https://github.com/aspnet/BrowserLink.git
+ branch = dev
+[submodule "modules/Caching"]
+ path = modules/Caching
+ url = https://github.com/aspnet/Caching.git
+ branch = dev
+[submodule "modules/Common"]
+ path = modules/Common
+ url = https://github.com/aspnet/Common.git
+ branch = dev
+[submodule "modules/Configuration"]
+ path = modules/Configuration
+ url = https://github.com/aspnet/Configuration.git
+ branch = dev
+[submodule "modules/CORS"]
+ path = modules/CORS
+ url = https://github.com/aspnet/CORS.git
+ branch = dev
+[submodule "modules/DataProtection"]
+ path = modules/DataProtection
+ url = https://github.com/aspnet/DataProtection.git
+ branch = dev
+[submodule "modules/DependencyInjection"]
+ path = modules/DependencyInjection
+ url = https://github.com/aspnet/DependencyInjection.git
+ branch = dev
+[submodule "modules/Diagnostics"]
+ path = modules/Diagnostics
+ url = https://github.com/aspnet/Diagnostics.git
+ branch = dev
+[submodule "modules/DotNetTools"]
+ path = modules/DotNetTools
+ url = https://github.com/aspnet/DotNetTools.git
+ branch = dev
+[submodule "modules/EntityFrameworkCore"]
+ path = modules/EntityFrameworkCore
+ url = https://github.com/aspnet/EntityFrameworkCore.git
+ branch = dev
+[submodule "modules/EventNotification"]
+ path = modules/EventNotification
+ url = https://github.com/aspnet/EventNotification.git
+ branch = dev
+[submodule "modules/FileSystem"]
+ path = modules/FileSystem
+ url = https://github.com/aspnet/FileSystem.git
+ branch = dev
+[submodule "modules/Hosting"]
+ path = modules/Hosting
+ url = https://github.com/aspnet/Hosting.git
+ branch = dev
+[submodule "modules/HtmlAbstractions"]
+ path = modules/HtmlAbstractions
+ url = https://github.com/aspnet/HtmlAbstractions.git
+ branch = dev
+[submodule "modules/HttpAbstractions"]
+ path = modules/HttpAbstractions
+ url = https://github.com/aspnet/HttpAbstractions.git
+ branch = dev
+[submodule "modules/HttpClientFactory"]
+ path = modules/HttpClientFactory
+ url = https://github.com/aspnet/HttpClientFactory.git
+ branch = dev
+[submodule "modules/HttpSysServer"]
+ path = modules/HttpSysServer
+ url = https://github.com/aspnet/HttpSysServer.git
+ branch = dev
+[submodule "modules/Identity"]
+ path = modules/Identity
+ url = https://github.com/aspnet/Identity.git
+ branch = dev
+[submodule "modules/IISIntegration"]
+ path = modules/IISIntegration
+ url = https://github.com/aspnet/IISIntegration.git
+ branch = dev
+[submodule "modules/JavaScriptServices"]
+ path = modules/JavaScriptServices
+ url = https://github.com/aspnet/JavaScriptServices.git
+ branch = dev
+[submodule "modules/JsonPatch"]
+ path = modules/JsonPatch
+ url = https://github.com/aspnet/JsonPatch.git
+ branch = dev
+[submodule "modules/KestrelHttpServer"]
+ path = modules/KestrelHttpServer
+ url = https://github.com/aspnet/KestrelHttpServer.git
+ branch = dev
+[submodule "modules/Localization"]
+ path = modules/Localization
+ url = https://github.com/aspnet/Localization.git
+ branch = dev
+[submodule "modules/Logging"]
+ path = modules/Logging
+ url = https://github.com/aspnet/Logging.git
+ branch = dev
+[submodule "modules/MetaPackages"]
+ path = modules/MetaPackages
+ url = https://github.com/aspnet/MetaPackages.git
+ branch = dev
+[submodule "modules/Microsoft.Data.Sqlite"]
+ path = modules/Microsoft.Data.Sqlite
+ url = https://github.com/aspnet/Microsoft.Data.Sqlite.git
+ branch = dev
+[submodule "modules/MusicStore"]
+ path = modules/MusicStore
+ url = https://github.com/aspnet/MusicStore.git
+ branch = dev
+[submodule "modules/Mvc"]
+ path = modules/Mvc
+ url = https://github.com/aspnet/Mvc.git
+ branch = dev
+[submodule "modules/MvcPrecompilation"]
+ path = modules/MvcPrecompilation
+ url = https://github.com/aspnet/MvcPrecompilation.git
+ branch = dev
+[submodule "modules/Options"]
+ path = modules/Options
+ url = https://github.com/aspnet/Options.git
+ branch = dev
+[submodule "modules/Proxy"]
+ path = modules/Proxy
+ url = https://github.com/aspnet/Proxy.git
+ branch = dev
+[submodule "modules/Razor"]
+ path = modules/Razor
+ url = https://github.com/aspnet/Razor.git
+ branch = dev
+[submodule "modules/ResponseCaching"]
+ path = modules/ResponseCaching
+ url = https://github.com/aspnet/ResponseCaching.git
+ branch = dev
+[submodule "modules/Routing"]
+ path = modules/Routing
+ url = https://github.com/aspnet/Routing.git
+ branch = dev
+[submodule "modules/Scaffolding"]
+ path = modules/Scaffolding
+ url = https://github.com/aspnet/Scaffolding.git
+ branch = dev
+[submodule "modules/Security"]
+ path = modules/Security
+ url = https://github.com/aspnet/Security.git
+ branch = dev
+[submodule "modules/ServerTests"]
+ path = modules/ServerTests
+ url = https://github.com/aspnet/ServerTests.git
+ branch = dev
+[submodule "modules/Session"]
+ path = modules/Session
+ url = https://github.com/aspnet/Session.git
+ branch = dev
+[submodule "modules/SignalR"]
+ path = modules/SignalR
+ url = https://github.com/aspnet/SignalR.git
+ branch = dev
+[submodule "modules/StaticFiles"]
+ path = modules/StaticFiles
+ url = https://github.com/aspnet/StaticFiles.git
+ branch = dev
+[submodule "modules/Testing"]
+ path = modules/Testing
+ url = https://github.com/aspnet/Testing.git
+ branch = dev
+[submodule "modules/WebSockets"]
+ path = modules/WebSockets
+ url = https://github.com/aspnet/WebSockets.git
+ branch = dev
diff --git a/README.md b/README.md
index 1b049850fa..0a1bc63329 100644
--- a/README.md
+++ b/README.md
@@ -1,51 +1,16 @@
Universe
-=========
+========
-This repo is to build the whole ASP.NET Core stack.
+Build infrastructure used to produce the whole ASP.NET Core stack.
## Getting started
- git clone git@github.com:aspnet/Universe.git
- cd Universe
- build
+```
+git clone --recursive https://github.com/aspnet/Universe.git
+cd Universe
+./build.cmd
+```
-The default build will clone all known repos as subfolders. The clone will be the dev branch.
+## More info
-If the build is run subsequently it will `git pull` the dev branch rather than clone. Note! This will cause a
-merge if you have local changes. We may tweak how this is done if it causes problems.
-
-After folders are up to date, `build.cmd compile` is executed in each of the enlisted subfolders.
-
-If there are errors the build will continue with the next repo.
-
-The last output is a list of which repos succeeded or failed.
-
-## build targets
-
-`build pull` will only clone or pull all repos.
-
-`build compile` this is the default target, described above.
-
-`build install` works like build compile, but will run `build.cmd install` in each subfolder. This means
-any nupkg produced by the repo are copied into the local `.nuget` folder to be picked up by subsequent
-repositories. The subfolders are built in dependency order.
-
-
-## Verifying cross repo changes
-You can use the Universe repo to preemptively verify and prepare follow ups for your breaking changes:
-- Clone the Universe repo https://github.com/aspnet/Universe
-- Add a branch attribute to the `build\Repositories.props` file to point to your branch in the repo you’re trying to verify. For instance,
- `<Repository Include="HtmlAbstractions" Commit="" />`
- becomes
- `<Repository Include="HtmlAbstractions" Commit="" Branch="prkrishn/breaking-changes" />`
- **Note**: This branch should have been pushed to the server already.
-- Run from the root of Universe
- `build.cmd /p:CompileOnly=true /p:ShallowClone=true /p:BuildGraphOf=HtmlAbstractions`
-
- This should clone and compile all the repos against your breaking changes branch. If you’d like to additionally run tests in all your dependencies (this will take a while and also you could hit some flaky tests), remove the first parameter:
- `build.cmd /p:ShallowClone=true /p:BuildGraphOf=HtmlAbstractions`
-
- The ShallowClone property speeds up git clone and is optional in both cases.
-
-
-This project is part of ASP.NET Core. You can find samples, documentation and getting started instructions for ASP.NET Core at the [Home](https://github.com/aspnet/home) repo.
+This project is part of ASP.NET Core. You can find samples, documentation and getting started instructions for ASP.NET Core at the [Home](https://github.com/aspnet/home) repo. \ No newline at end of file
diff --git a/build/Repositories.props b/build/Repositories.props
deleted file mode 100644
index 165c37c611..0000000000
--- a/build/Repositories.props
+++ /dev/null
@@ -1,56 +0,0 @@
-<Project>
- <ItemDefinitionGroup>
- <Repository>
- <Branch>dev</Branch>
- <Build>true</Build>
- </Repository>
- </ItemDefinitionGroup>
-
- <ItemGroup>
- <Repository Include="Antiforgery" Commit="" CloneUrl="" />
- <Repository Include="AzureIntegration" Commit="" CloneUrl="" />
- <Repository Include="BasicMiddleware" Commit="" CloneUrl="" />
- <Repository Include="BrowserLink" Commit="" CloneUrl="" />
- <Repository Include="Caching" Commit="" CloneUrl="" />
- <Repository Include="Common" Commit="" CloneUrl="" />
- <Repository Include="Configuration" Commit="" CloneUrl="" />
- <Repository Include="CORS" Commit="" CloneUrl="" />
- <Repository Include="DataProtection" Commit="" CloneUrl="" />
- <Repository Include="DependencyInjection" Commit="" CloneUrl="" />
- <Repository Include="Diagnostics" Commit="" CloneUrl="" />
- <Repository Include="DotNetTools" Commit="" CloneUrl="" />
- <Repository Include="EntityFramework" Commit="" CloneUrl="" />
- <Repository Include="EventNotification" Commit="" CloneUrl="" />
- <Repository Include="FileSystem" Commit="" CloneUrl="" />
- <Repository Include="Hosting" Commit="" CloneUrl="" />
- <Repository Include="HtmlAbstractions" Commit="" CloneUrl="" />
- <Repository Include="HttpAbstractions" Commit="" CloneUrl="" />
- <Repository Include="HttpClientFactory" Commit="" CloneUrl="" />
- <Repository Include="HttpSysServer" Commit="" CloneUrl="" />
- <Repository Include="Identity" Commit="" CloneUrl="" />
- <Repository Include="IISIntegration" Commit="" CloneUrl="" />
- <Repository Include="JavaScriptServices" Commit="" CloneUrl="" />
- <Repository Include="JsonPatch" Commit="" CloneUrl="" />
- <Repository Include="KestrelHttpServer" Commit="" CloneUrl="" />
- <Repository Include="Localization" Commit="" CloneUrl="" />
- <Repository Include="Logging" Commit="" CloneUrl="" />
- <Repository Include="MetaPackages" Commit="" CloneUrl="" />
- <Repository Include="Microsoft.Data.Sqlite" Commit="" CloneUrl="" />
- <Repository Include="MusicStore" Commit="" CloneUrl="" />
- <Repository Include="Mvc" Commit="" CloneUrl="" />
- <Repository Include="MvcPrecompilation" Commit="" CloneUrl="" />
- <Repository Include="Options" Commit="" CloneUrl="" />
- <Repository Include="Proxy" Commit="" CloneUrl="" />
- <Repository Include="Razor" Commit="" CloneUrl="" />
- <Repository Include="ResponseCaching" Commit="" CloneUrl="" />
- <Repository Include="Routing" Commit="" CloneUrl="" />
- <Repository Include="Scaffolding" Commit="" CloneUrl="" />
- <Repository Include="Security" Commit="" CloneUrl="" />
- <Repository Include="ServerTests" Commit="" CloneUrl="" />
- <Repository Include="Session" Commit="" CloneUrl="" />
- <Repository Include="SignalR" Commit="" CloneUrl="" />
- <Repository Include="StaticFiles" Commit="" CloneUrl="" />
- <Repository Include="Testing" Commit="" CloneUrl="" />
- <Repository Include="WebSockets" Commit="" CloneUrl="" />
- </ItemGroup>
-</Project>
diff --git a/build/RepositoryBuild.targets b/build/RepositoryBuild.targets
index 119cc5b8b1..13b2d979b0 100644
--- a/build/RepositoryBuild.targets
+++ b/build/RepositoryBuild.targets
@@ -6,8 +6,7 @@
<Repository>%(RepositoryToBuildInOrder.Identity)</Repository>
<AdditionalProperties>
RepositoryToBuild=%(RepositoryToBuildInOrder.Identity);
- BuildRepositoryRoot=%(RepositoryToBuildInOrder.RepositoryPath)\;
- CommitHash=%(RepositoryToBuildInOrder.Commit)
+ BuildRepositoryRoot=$([MSBuild]::NormalizeDirectory(%(RepositoryToBuildInOrder.RootPath)))
</AdditionalProperties>
</BatchedRepository>
</ItemGroup>
@@ -35,7 +34,7 @@
<RepositoryBuildArguments>$(RepositoryBuildArguments) '/p:DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath)'</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) '/p:CustomBeforeKoreBuildProps=$(MSBuildThisFileDirectory)repobuild\BeforeKoreBuild.props'</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) '/p:CustomAfterKoreBuildTargets=$(MSBuildThisFileDirectory)repobuild\AfterKoreBuild.targets'</RepositoryBuildArguments>
- <RepositoryBuildArguments>$(RepositoryBuildArguments) /p:BuildNumber=$(BuildNumber) /p:Configuration=$(Configuration) /p:CommitHash=$(CommitHash)</RepositoryBuildArguments>
+ <RepositoryBuildArguments>$(RepositoryBuildArguments) /p:BuildNumber=$(BuildNumber) /p:Configuration=$(Configuration)</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) /noconsolelogger '/l:RepoTasks.FlowLogger,$(MSBuildThisFileDirectory)tasks\bin\publish\RepoTasks.dll;Summary;FlowId=$(RepositoryToBuild)'</RepositoryBuildArguments>
<BuildArguments>$(_RepositoryBuildTargets) $(RepositoryBuildArguments)</BuildArguments>
diff --git a/build/repo.props b/build/repo.props
index 40b83474b9..3c0277344d 100644
--- a/build/repo.props
+++ b/build/repo.props
@@ -1,6 +1,7 @@
<Project>
<Import Project="artifacts.props" />
<Import Project="dependencies.props" />
+ <Import Project="submodules.props" />
<PropertyGroup>
<!-- This repo does not have solutions to build -->
diff --git a/build/repo.targets b/build/repo.targets
index 856c87bdd7..d907ee1eaf 100644
--- a/build/repo.targets
+++ b/build/repo.targets
@@ -3,20 +3,13 @@
<Import Project="push.targets" />
<PropertyGroup>
+ <SubmoduleRoot>$(RepositoryRoot)modules\</SubmoduleRoot>
<LineupBuildDir>$(ArtifactsDir)lineups\</LineupBuildDir>
- <ClearRepositoryCloneRoot Condition="'$(SkipClone)' == 'true'">false</ClearRepositoryCloneRoot>
- <_CloneRepositoryRoot>$(RepositoryRoot).r\</_CloneRepositoryRoot>
<_DependencyBuildDirectory>$(RepositoryRoot).deps\build\</_DependencyBuildDirectory>
<_DependencyLineupDir>$(RepositoryRoot).deps\lineups\</_DependencyLineupDir>
<_DependencyPackagesDirectory>$(_DependencyBuildDirectory)</_DependencyPackagesDirectory>
<_RestoreGraphSpecsDirectory>$(IntermediateDir)package-specs\</_RestoreGraphSpecsDirectory>
- <_RepositoryListFileName>Repositories.props</_RepositoryListFileName>
- <_DefaultRepositoryList>$(MSBuildThisFileDirectory)$(_RepositoryListFileName)</_DefaultRepositoryList>
- <_DependencyRepositoryList>$(_DependencyBuildDirectory)$(_RepositoryListFileName)</_DependencyRepositoryList>
- <_RepositoryListToImport Condition="Exists('$(_DependencyRepositoryList)')">$(_DependencyRepositoryList)</_RepositoryListToImport>
- <_RepositoryListToImport Condition="!Exists('$(_DependencyRepositoryList)')">$(_DefaultRepositoryList)</_RepositoryListToImport>
-
<_RepositoryBuildTargets Condition="'$(_RepositoryBuildTargets)'=='' AND '$(CompileOnly)'=='true'">/t:Package /t:VerifyPackages</_RepositoryBuildTargets>
<_RepositoryBuildTargets Condition="'$(_RepositoryBuildTargets)'==''">/t:Build</_RepositoryBuildTargets>
@@ -26,20 +19,16 @@
<IntermediateExternalPackageDir>$(IntermediateDir)ext\</IntermediateExternalPackageDir>
<GeneratedPackageVersionPropsPath>$(IntermediateDir)dependencies.props</GeneratedPackageVersionPropsPath>
- <PrepareDependsOn>$(PrepareDependsOn);VerifyPackageArtifactConfig;CleanArtifacts;CleanUniverseArtifacts</PrepareDependsOn>
+ <PrepareDependsOn>$(PrepareDependsOn);VerifyPackageArtifactConfig;CleanArtifacts;PrepareOutputPaths</PrepareDependsOn>
<RestoreDependsOn>$(RestoreDependsOn);RestoreExternalDependencies</RestoreDependsOn>
- <CleanDependsOn>$(CleanDependsOn);CleanArtifacts;CleanUniverseArtifacts</CleanDependsOn>
- <CompileDependsOn>$(CompileDependsOn);CloneRepositories;BuildRepositories</CompileDependsOn>
+ <CleanDependsOn>$(CleanDependsOn);CleanArtifacts</CleanDependsOn>
+ <CompileDependsOn>$(CompileDependsOn);BuildRepositories</CompileDependsOn>
<PackageDependsOn Condition="'$(TestOnly)' != 'true'">$(PackageDependsOn);CopyPackagesByCategory</PackageDependsOn>
<VerifyDependsOn Condition="'$(TestOnly)' != 'true'">$(VerifyDependsOn);VerifyCoherentVersions</VerifyDependsOn>
</PropertyGroup>
- <Import Project="$(_RepositoryListToImport)" />
-
- <Target Name="CleanUniverseArtifacts">
- <RemoveDir Directories="$(_CloneRepositoryRoot)" Condition="Exists('$(_CloneRepositoryRoot)') AND '$(ClearRepositoryCloneRoot)' != 'false'" />
- <RemoveDir Directories="$(LineupBuildDir)" />
- <MakeDir Directories="$(LineupBuildDir)" />
+ <Target Name="PrepareOutputPaths">
+ <MakeDir Directories="$(ArtifactsDir);$(BuildDir);$(LineupBuildDir)" />
</Target>
<Target Name="RestoreExternalDependencies">
@@ -49,21 +38,24 @@
</Target>
<Target Name="ResolveRepoInfo" DependsOnTargets="_PrepareRepositories">
+
+ <Error Text="%(Repository.RootPath) does not exist. Did you forget to clone the submodules? Run `git submodules update`." Condition="!Exists(%(Repository.RootPath))" />
+
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="GetArtifactInfo"
- Properties="RepositoryRoot=$(_CloneRepositoryRoot)%(Repository.Identity)\;KoreBuildRestoreTargetsImported=true;Configuration=$(Configuration);BuildNumber=$(BuildNumber)"
+ Properties="RepositoryRoot=%(Repository.RootPath);KoreBuildRestoreTargetsImported=true;Configuration=$(Configuration);BuildNumber=$(BuildNumber)"
ContinueOnError="WarnAndContinue">
<Output TaskParameter="TargetOutputs" ItemName="ArtifactInfo" />
</MSBuild>
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="ResolveSolutions"
- Properties="RepositoryRoot=$(_CloneRepositoryRoot)%(Repository.Identity)\;KoreBuildRestoreTargetsImported=true;Configuration=$(Configuration);BuildNumber=$(BuildNumber)"
+ Properties="RepositoryRoot=%(Repository.RootPath);KoreBuildRestoreTargetsImported=true;Configuration=$(Configuration);BuildNumber=$(BuildNumber)"
ContinueOnError="WarnAndContinue">
<Output TaskParameter="TargetOutputs" ItemName="Solution" />
</MSBuild>
- <Error Text="No solutions were found in '$(_CloneRepositoryRoot)'" Condition="@(Solution->Count()) == 0" />
+ <Error Text="No solutions were found in '$(SubmoduleRoot)'" Condition="@(Solution->Count()) == 0" />
</Target>
<Target Name="GenerateLineup" DependsOnTargets="ResolveRepoInfo">
@@ -113,104 +105,24 @@
<Error Text="KOREBUILD_REPOSITORY_EXCLUDE AND KOREBUILD_REPOSITORY_INCLUDE are specified."
Condition="'$(KOREBUILD_REPOSITORY_INCLUDE)' != '' AND '$(KOREBUILD_REPOSITORY_EXCLUDE)' != ''" />
- <!--
- Determine the protocol to clone individual repositories over. Clone repositories over https,
- if Universe was cloned over https
- -->
- <Exec
- Command="git config --get remote.origin.url"
- ConsoleToMSBuild="true"
- WorkingDirectory="$(RepositoryRoot)"
- IgnoreStandardErrorWarningFormat="true"
- StandardOutputImportance="low"
- IgnoreExitCode="true">
- <Output TaskParameter="ConsoleOutput" PropertyName="UniverseCloneUrl" />
- </Exec>
-
- <PropertyGroup>
- <_CloneOverHttps>true</_CloneOverHttps>
- <_CloneOverHttps Condition="'$(UniverseCloneUrl)' != '' AND !$(UniverseCloneUrl.StartsWith('https'))">false</_CloneOverHttps>
- </PropertyGroup>
-
<ItemGroup>
- <Repository Update="%(Identity)" RepositoryPath="$(_CloneRepositoryRoot)%(Identity)" />
- <Repository Update="%(Identity)" CloneUrl="git@github.com:aspnet/%(Identity)" Condition="'$(_CloneOverHttps)'!='true'" />
- <Repository Update="%(Identity)" CloneUrl="https://github.com/aspnet/%(Identity)" Condition="'$(_CloneOverHttps)'=='true'" />
+ <Repository Update="%(Identity)" RootPath="$(SubmoduleRoot)%(Identity)\" />
</ItemGroup>
</Target>
- <Target Name="CloneRepositories" DependsOnTargets="_PrepareRepositories" Condition="'$(SkipClone)' != 'true'">
- <ItemGroup>
- <_CloneRepository Include="$(MSBuildProjectFullPath)">
- <AdditionalProperties>
- CloneRepository=%(Repository.Identity);
- CloneUrl=%(Repository.CloneUrl);
- CloneBranch=%(Repository.Branch);
- CloneRepositoryCommit=%(Repository.Commit);
- UseGateBranch=$(UseGateBranch)
- </AdditionalProperties>
- </_CloneRepository>
- </ItemGroup>
-
- <Message Text="Using the repository list information from '$(_RepositoryListToImport)' to clone ..." Importance="High" />
-
- <MakeDir Directories="$(_CloneRepositoryRoot)" />
-
- <MSBuild Projects="@(_CloneRepository)"
- Targets="_CloneRepository"
- BuildInParallel="$(BuildInParallel)" />
-
- </Target>
-
- <Target Name="_CloneRepository">
- <PropertyGroup>
- <ShallowClone Condition="'$(ShallowClone)'=='' OR '$(CloneRepositoryCommit)'!=''">false</ShallowClone>
- <_CloneArguments>git clone --quiet $(CloneUrl) $(CloneRepository)</_CloneArguments>
- <_CloneArguments Condition="'$(ShallowClone)'=='true'">$(_CloneArguments) --depth 1</_CloneArguments>
- </PropertyGroup>
-
- <Message Text="Cloning $(CloneRepository) ..." Importance="High" />
- <Exec
- Command="$(_CloneArguments) --branch $(CloneBranch)-gate"
- Condition="'$(UseGateBranch)'=='true'"
- IgnoreExitCode="true"
- IgnoreStandardErrorWarningFormat="true"
- WorkingDirectory="$(_CloneRepositoryRoot)">
- <Output TaskParameter="ExitCode" PropertyName="GateBranchExitCode" />
- </Exec>
-
- <Warning Text="Using $(CloneBranch)-gate for $(CloneRepository)"
- Condition="'$(GateBranchExitCode)'=='0'" />
-
- <Exec
- Command="$(_CloneArguments) --branch $(CloneBranch)"
- Condition="'$(GateBranchExitCode)'!='0'"
- WorkingDirectory="$(_CloneRepositoryRoot)"
- EnvironmentVariables="GIT_TERMINAL_PROMPT=0"
- IgnoreStandardErrorWarningFormat="true"
- Timeout="180000" />
-
- <Message Text="Resetting $(CloneRepository) commit to $(CloneRepositoryCommit) ..." Importance="High" Condition="'$(CloneRepositoryCommit)'!=''"/>
- <Exec
- Command="git reset --quiet --hard $(CloneRepositoryCommit)"
- WorkingDirectory="$(_CloneRepositoryRoot)$(CloneRepository)"
- IgnoreStandardErrorWarningFormat="true"
- Condition="'$(CloneRepositoryCommit)'!=''" />
- </Target>
-
<Target Name="BuildRepositories"
- DependsOnTargets="_PrepareRepositories;_CreateRepositoriesListWithCommits;_UpdateNuGetConfig;_GenerateBuildGraph;_BuildRepositories" />
+ DependsOnTargets="_PrepareRepositories;_UpdateNuGetConfig;_GenerateBuildGraph;_BuildRepositories" />
<Target Name="_PrepareRestoreGraphSpecs" DependsOnTargets="_PrepareRepositories">
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="ResolveSolutions"
- Properties="RepositoryRoot=$(_CloneRepositoryRoot)%(Repository.Identity)\"
+ Properties="RepositoryRoot=%(Repository.RootPath)"
ContinueOnError="WarnAndContinue"
Condition="%(Repository.Build)">
<Output TaskParameter="TargetOutputs" ItemName="Solution" />
</MSBuild>
- <Error Text="No solutions were found in '$(_CloneRepositoryRoot)'" Condition="@(Solution->Count()) == 0" />
+ <Error Text="No solutions were found. Did you remember to checkout the git submodules? Run `git submodules update`." Condition="@(Solution->Count()) == 0" />
<ItemGroup>
<Solution>
@@ -219,8 +131,8 @@
<GraphSpecInputs Include="
@(Solution);
- $(_CloneRepositoryRoot)**\*.csproj;
- $(_CloneRepositoryRoot)**\dependencies.props" />
+ $(SubmoduleRoot)**\*.csproj;
+ $(SubmoduleRoot)**\dependencies.props" />
<GraphSpecOutputs Include="$(_RestoreGraphSpecsDirectory)%(Solution.Repository)\%(Solution.FileName)%(Solution.Extension).json" />
</ItemGroup>
</Target>
@@ -246,7 +158,7 @@
<Target Name="_UpdateNuGetConfig">
<UpdatePackageSource
- NuGetConfigPath="$(_CloneRepositoryRoot)%(Repository.Identity)\NuGet.config"
+ NuGetConfigPath="%(Repository.RootPath)NuGet.config"
SourceName="Dependencies"
SourceUri="$(_DependencyPackagesDirectory)"
Condition="Exists('$(_DependencyPackagesDirectory)') AND %(Repository.Build)" />
@@ -254,7 +166,7 @@
<MakeDir Directories="$(BuildDir)" Condition="!Exists('$(BuildDir)')" />
<UpdatePackageSource
- NuGetConfigPath="$(_CloneRepositoryRoot)%(Repository.Identity)\NuGet.config"
+ NuGetConfigPath="%(Repository.RootPath)NuGet.config"
SourceName="Artifacts"
Condition="%(Repository.Build)"
SourceUri="$(BuildDir)" />
@@ -289,57 +201,4 @@
ExternalDependencies="@(ExternalDependency)" />
</Target>
- <Target Name="_CreateRepositoriesListWithCommits" DependsOnTargets="_GetRepositoryCommits">
- <PropertyGroup>
- <RepositoryFileWithCommit>$(BuildDir)$(_RepositoryListFileName)</RepositoryFileWithCommit>
- </PropertyGroup>
- <Copy
- SourceFiles="$(_DefaultRepositoryList)"
- DestinationFiles="$(RepositoryFileWithCommit)" />
-
- <XmlPoke
- XmlInputPath="$(RepositoryFileWithCommit)"
- Query="//Repository[@Include='%(Repository.Identity)']/@Commit"
- Value="%(Repository.Commit)" />
-
- <XmlPoke
- XmlInputPath="$(RepositoryFileWithCommit)"
- Query="//Repository[@Include='%(Repository.Identity)']/@CloneUrl"
- Value="%(Repository.CloneUrl)" />
- </Target>
-
- <!-- Based on the solution here: http://stackoverflow.com/a/11331566 -->
- <Target Name="_GetRepositoryCommits" Outputs="%(Repository.Identity)">
- <PropertyGroup>
- <!--
- Attempt to read environment variables set up by the CI's VCS Root if available.
- * BUILD_VCS_URL_<RepositoryName> gives us the clone URL for a repository
- * BUILD_VCS_NUMBER_<RepositoryName> gives us the commit hash for a repository.
- -->
- <_RepositoryName>$([System.String]::new('%(Repository.Identity)').Replace('.', '_'))</_RepositoryName>
- <_CloneUrl>$([System.Environment]::GetEnvironmentVariable("BUILD_VCS_URL_$(_RepositoryName)"))</_CloneUrl>
- <_CommitHash>$([System.Environment]::GetEnvironmentVariable("BUILD_VCS_NUMBER_$(_RepositoryName)"))</_CommitHash>
- </PropertyGroup>
-
- <Warning Text="%(Repository.Identity) has not been cloned."
- Condition="!Exists('%(Repository.RepositoryPath)')" />
-
- <GetGitCommitInfo
- WorkingDirectory="%(Repository.RepositoryPath)"
- Condition="'$(_CommitHash)'=='' AND Exists('%(Repository.RepositoryPath)')">
-
- <Output TaskParameter="CommitHash" PropertyName="_CommitHash" />
- </GetGitCommitInfo>
-
- <ItemGroup>
- <Repository Update="%(Identity)" Commit="$(_CommitHash)" />
- <Repository Update="%(Identity)" CloneUrl="$(_CloneUrl)" Condition="'$(_CloneUrl)'!=''" />
- </ItemGroup>
-
- <PropertyGroup>
- <_CommitHash></_CommitHash>
- <_CloneUrl></_CloneUrl>
- </PropertyGroup>
- </Target>
-
</Project>
diff --git a/build/submodules.props b/build/submodules.props
new file mode 100644
index 0000000000..2b15369e0c
--- /dev/null
+++ b/build/submodules.props
@@ -0,0 +1,55 @@
+<Project>
+ <ItemDefinitionGroup>
+ <Repository>
+ <Build>true</Build>
+ </Repository>
+ </ItemDefinitionGroup>
+
+ <ItemGroup>
+ <Repository Include="Antiforgery" />
+ <Repository Include="AzureIntegration" />
+ <Repository Include="BasicMiddleware" />
+ <Repository Include="BrowserLink" />
+ <Repository Include="Caching" />
+ <Repository Include="Common" />
+ <Repository Include="Configuration" />
+ <Repository Include="CORS" />
+ <Repository Include="DataProtection" />
+ <Repository Include="DependencyInjection" />
+ <Repository Include="Diagnostics" />
+ <Repository Include="DotNetTools" />
+ <Repository Include="EntityFrameworkCore" />
+ <Repository Include="EventNotification" />
+ <Repository Include="FileSystem" />
+ <Repository Include="Hosting" />
+ <Repository Include="HtmlAbstractions" />
+ <Repository Include="HttpAbstractions" />
+ <Repository Include="HttpClientFactory" />
+ <Repository Include="HttpSysServer" />
+ <Repository Include="Identity" />
+ <Repository Include="IISIntegration" />
+ <Repository Include="JavaScriptServices" />
+ <Repository Include="JsonPatch" />
+ <Repository Include="KestrelHttpServer" />
+ <Repository Include="Localization" />
+ <Repository Include="Logging" />
+ <Repository Include="MetaPackages" />
+ <Repository Include="Microsoft.Data.Sqlite" />
+ <Repository Include="MusicStore" />
+ <Repository Include="Mvc" />
+ <Repository Include="MvcPrecompilation" />
+ <Repository Include="Options" />
+ <Repository Include="Proxy" />
+ <Repository Include="Razor" />
+ <Repository Include="ResponseCaching" />
+ <Repository Include="Routing" />
+ <Repository Include="Scaffolding" />
+ <Repository Include="Security" />
+ <Repository Include="ServerTests" />
+ <Repository Include="Session" />
+ <Repository Include="SignalR" />
+ <Repository Include="StaticFiles" />
+ <Repository Include="Testing" />
+ <Repository Include="WebSockets" />
+ </ItemGroup>
+</Project>
diff --git a/build/tasks/BuildGraph/Repository.cs b/build/tasks/BuildGraph/Repository.cs
index c1e3e5c619..a72137739e 100644
--- a/build/tasks/BuildGraph/Repository.cs
+++ b/build/tasks/BuildGraph/Repository.cs
@@ -35,7 +35,7 @@ namespace RepoTools.BuildGraph
Parallel.For(0, repositoryPaths.Count, new ParallelOptions { MaxDegreeOfParallelism = 6 }, i =>
{
var repositoryPath = repositoryPaths[i];
- var repositoryName = Path.GetFileName(repositoryPath);
+ var repositoryName = Path.GetFileName(repositoryPath.TrimEnd(new [] { '\\', '/' }));
var repository = Read(provider, repositoryName, repositoryPath);
repositories[i] = repository;
});
diff --git a/build/tasks/CalculateBuildGraph.cs b/build/tasks/CalculateBuildGraph.cs
index 0c574f41dd..5d922f7d39 100644
--- a/build/tasks/CalculateBuildGraph.cs
+++ b/build/tasks/CalculateBuildGraph.cs
@@ -39,7 +39,7 @@ namespace RepoTasks
{
var graphSpecProvider = new DependencyGraphSpecProvider(PackageSpecsDirectory.Trim());
- var repositoryPaths = Repositories.Select(r => r.GetMetadata("RepositoryPath")).ToList();
+ var repositoryPaths = Repositories.Select(r => r.GetMetadata("RootPath")).ToList();
var repositories = Repository.ReadAllRepositories(repositoryPaths, graphSpecProvider);
var graph = GraphBuilder.Generate(repositories, StartGraphAt, Log);
diff --git a/modules/Antiforgery b/modules/Antiforgery
new file mode 160000
+Subproject e1884586775c85e27f1b5f2dcad80ba1d84b2f2
diff --git a/modules/AzureIntegration b/modules/AzureIntegration
new file mode 160000
+Subproject c998d74e1de26897dddaf3c2df7165341a4c0db
diff --git a/modules/BasicMiddleware b/modules/BasicMiddleware
new file mode 160000
+Subproject 9f3ed006a12fdaddf2f5134cdc647433a054894
diff --git a/modules/BrowserLink b/modules/BrowserLink
new file mode 160000
+Subproject 7e2ff85a7622e20d697ed64936f8e4affb0865f
diff --git a/modules/CORS b/modules/CORS
new file mode 160000
+Subproject 8fd36866f9427b8a09cecdd6520ba54b064424c
diff --git a/modules/Caching b/modules/Caching
new file mode 160000
+Subproject c6a9cbbe4566d1d757b27d74a1aad5da8d12aed
diff --git a/modules/Common b/modules/Common
new file mode 160000
+Subproject 062ad3e7ca8fb86a471333864b6202926ea20aa
diff --git a/modules/Configuration b/modules/Configuration
new file mode 160000
+Subproject 94a5f9e3d122cf1b01c3621130f70739efec1fb
diff --git a/modules/DataProtection b/modules/DataProtection
new file mode 160000
+Subproject 49b2e22ab30239ed63d3f3b9478e7563e9a93ed
diff --git a/modules/DependencyInjection b/modules/DependencyInjection
new file mode 160000
+Subproject 88297e3c1116f952aa22013172ef2f9396f716e
diff --git a/modules/Diagnostics b/modules/Diagnostics
new file mode 160000
+Subproject 7ac0e06abf822738437dba3bfc5b3b01325045f
diff --git a/modules/DotNetTools b/modules/DotNetTools
new file mode 160000
+Subproject 1836201beecf81c3e2b4a50cc1666f5aa51f578
diff --git a/modules/EntityFrameworkCore b/modules/EntityFrameworkCore
new file mode 160000
+Subproject e70d7daef78b7ef76f989277c0b63bc6a666acf
diff --git a/modules/EventNotification b/modules/EventNotification
new file mode 160000
+Subproject 3f881f18d811b65046c1df798d4d97c98aa3908
diff --git a/modules/FileSystem b/modules/FileSystem
new file mode 160000
+Subproject 51e14a624c5f32bd2df62adf06dbe558574b4b1
diff --git a/modules/Hosting b/modules/Hosting
new file mode 160000
+Subproject 82ccf4f06e749d2044f3adb88e870b431341274
diff --git a/modules/HtmlAbstractions b/modules/HtmlAbstractions
new file mode 160000
+Subproject d687617a356b9a875ea5b09163ef9d443b4256b
diff --git a/modules/HttpAbstractions b/modules/HttpAbstractions
new file mode 160000
+Subproject c0f937239a0a099b73c67c96ab9e1c875952f67
diff --git a/modules/HttpClientFactory b/modules/HttpClientFactory
new file mode 160000
+Subproject 8a643346089ce2356ac4bcc07f217f256004a00
diff --git a/modules/HttpSysServer b/modules/HttpSysServer
new file mode 160000
+Subproject 02331040a127954eadaa859777379af77f41918
diff --git a/modules/IISIntegration b/modules/IISIntegration
new file mode 160000
+Subproject 94c895a1bd1b9bba48ce496200fd386322fb6a7
diff --git a/modules/Identity b/modules/Identity
new file mode 160000
+Subproject 52dfb0217597ae18efd5958e380fe8e56cde316
diff --git a/modules/JavaScriptServices b/modules/JavaScriptServices
new file mode 160000
+Subproject e583a17ef8381a15ae9f59635dae7e0cfbdd2aa
diff --git a/modules/JsonPatch b/modules/JsonPatch
new file mode 160000
+Subproject e453fafad52649daff689c24fa2374a143f4365
diff --git a/modules/KestrelHttpServer b/modules/KestrelHttpServer
new file mode 160000
+Subproject 0c34523e8b36be0236106aa174ede6aab9acce8
diff --git a/modules/Localization b/modules/Localization
new file mode 160000
+Subproject 98484b828334f3914c3c2f723b4c98c7acb8f62
diff --git a/modules/Logging b/modules/Logging
new file mode 160000
+Subproject e8e3e707f5131e22d7d27fce6bfcefdda1dbb81
diff --git a/modules/MetaPackages b/modules/MetaPackages
new file mode 160000
+Subproject d63542ca31614cff8a69c788d6fb1ebc8b0870f
diff --git a/modules/Microsoft.Data.Sqlite b/modules/Microsoft.Data.Sqlite
new file mode 160000
+Subproject 791993269cfbf97ec3fbdb5139d860ba61ef739
diff --git a/modules/MusicStore b/modules/MusicStore
new file mode 160000
+Subproject 1c0aeb08bb1ebd846726232226279bbe001782e
diff --git a/modules/Mvc b/modules/Mvc
new file mode 160000
+Subproject 2e4bc548f5921d2f4250314373473e453f3ca95
diff --git a/modules/MvcPrecompilation b/modules/MvcPrecompilation
new file mode 160000
+Subproject 00dd638c4ff35f53198ead9de7ccd40c26ec13c
diff --git a/modules/Options b/modules/Options
new file mode 160000
+Subproject 7e46634d3fc19df60edadc00386034ccde8f54c
diff --git a/modules/Proxy b/modules/Proxy
new file mode 160000
+Subproject 0d1e2319472707ceaae2dab5a044764f7686b28
diff --git a/modules/Razor b/modules/Razor
new file mode 160000
+Subproject 6c7551d9c7fc7a9e60d29ae6a39d46924960e6e
diff --git a/modules/ResponseCaching b/modules/ResponseCaching
new file mode 160000
+Subproject 85bd16418984058a4292f8071118d2794b8d8e0
diff --git a/modules/Routing b/modules/Routing
new file mode 160000
+Subproject bb413c6ac33fbc5bd5459033cb29afb3b002cdf
diff --git a/modules/Scaffolding b/modules/Scaffolding
new file mode 160000
+Subproject d8f8670c7b9fe467f9b20456549b19bee26f0e7
diff --git a/modules/Security b/modules/Security
new file mode 160000
+Subproject 88cb3df0ebdd524a8c56e74b740296941947fdf
diff --git a/modules/ServerTests b/modules/ServerTests
new file mode 160000
+Subproject f1e0205b9fedb29f0ea4901caf41acda56bdc59
diff --git a/modules/Session b/modules/Session
new file mode 160000
+Subproject a29e7cf687fef67e403f9909632e61fce4a7dba
diff --git a/modules/SignalR b/modules/SignalR
new file mode 160000
+Subproject 2419867dfcda3b11a83a30de6559f1c44b3da38
diff --git a/modules/StaticFiles b/modules/StaticFiles
new file mode 160000
+Subproject 5248d6057c759e5944eb3d0a9088457081abb09
diff --git a/modules/Testing b/modules/Testing
new file mode 160000
+Subproject 94569378d4e4fafa054560bfdc5a86b20d41553
diff --git a/modules/WebSockets b/modules/WebSockets
new file mode 160000
+Subproject f17facd32960ff7e0a64eac863cf444b98ea16d
diff --git a/scripts/UpdateBuildTools.ps1 b/scripts/UpdateBuildTools.ps1
index 0c16b148b2..0308041774 100755
--- a/scripts/UpdateBuildTools.ps1
+++ b/scripts/UpdateBuildTools.ps1
@@ -1,4 +1,4 @@
-#!/usr/bin/env powershell
+#!/usr/bin/env pwsh
<#
.SYNOPSIS
diff --git a/scripts/UpdateRepos.ps1 b/scripts/UpdateRepos.ps1
index 0530979e1b..9fe5ec896a 100644..100755
--- a/scripts/UpdateRepos.ps1
+++ b/scripts/UpdateRepos.ps1
@@ -1,4 +1,4 @@
-#!/usr/bin/env powershell
+#!/usr/bin/env pwsh
<#
.SYNOPSIS
@@ -38,7 +38,7 @@ try {
Invoke-Block { & git submodule update --init }
$update_errors = @()
- $submodules = Get-Submodules $ModuleDirectory
+ $submodules = Get-Submodules $RepoRoot
$updated_submodules = @()
foreach($submodule in $submodules)
{
diff --git a/scripts/UpdateSubmodules.ps1 b/scripts/UpdateSubmodules.ps1
index 2ccdc8cdb9..5a64ed2006 100755
--- a/scripts/UpdateSubmodules.ps1
+++ b/scripts/UpdateSubmodules.ps1
@@ -1,4 +1,4 @@
-#!/usr/bin/env powershell
+#!/usr/bin/env pwsh
<#
.SYNOPSIS
@@ -36,65 +36,71 @@ function Get-GitChanges([string]$Path) {
return $LastExitCode -ne 0
}
+Push-Location $RepoRoot | Out-Null
try {
Assert-Git
+ Write-Host "Checking that submodules are in a clean state first..."
if (Get-GitChanges $ModuleDirectory) {
Write-Error "$RepoRoot/modules is in an unclean state. Reset submodules first by running ``git submodule update``"
exit 1
}
- $submodules = Get-Submodules $ModuleDirectory
+ $submodules = Get-Submodules $RepoRoot -Verbose:$VerbosePreference
- $changes = $submodules `
- | % {
- Push-Location $_.path
- try {
- $vcs_name = "BUILD_VCS_NUMBER_" + $_.module
- $newCommit = [environment]::GetEnvironmentVariable($vcs_name)
+ foreach ($submodule in $submodules) {
+ $submodulePath = $submodule.path
+ Write-Host "Updating $submodulePath"
+
+ $vcs_name = "BUILD_VCS_NUMBER_" + $submodule.module
+ $newCommit = [environment]::GetEnvironmentVariable($vcs_name)
- if($newCommit -eq $null)
- {
- Write-Warning "TeamCity env variable '$vcs_name' not found."
- Write-Warning "git submodule update --remote"
- Invoke-Block { & git submodule update --remote }
+ if (-not $newCommit) {
+ Write-Warning "TeamCity env variable '$vcs_name' not found. Pulling the latest submodule branch instead"
+ Invoke-Block { & git submodule update --remote $submodulePath }
+ Push-Location $submodulePath | Out-Null
+ try {
$newCommit = $(git rev-parse HEAD)
}
- else
- {
- Invoke-Block { & git checkout $newCommit }
+ finally {
+ Pop-Location | Out-Null
}
-
- $_.newCommit = $newCommit
- if ($newCommit -ne $_.commit) {
- $_.changed = $true
- Write-Verbose "$($_.module) updated to $($_.newCommit)"
+ }
+ else {
+ Push-Location $submodulePath | Out-Null
+ try {
+ Invoke-Block { & git checkout $newCommit }
}
- else {
- Write-Verbose "$($_.module) did not change"
+ finally {
+ Pop-Location | Out-Null
}
- return $_
}
- finally {
- Pop-Location
+
+ $submodule.newCommit = $newCommit
+ if ($newCommit -ne $submodule.commit) {
+ $submodule.changed = $true
+ Write-Host -ForegroundColor Cyan "`t=> $($submodule.module) updated to $($submodule.newCommit)"
+ }
+ else {
+ Write-Host -ForegroundColor Magenta "`t$($submodule.module) did not change"
}
- } `
- | ? { $_.changed } `
- | % { "$($_.module) to $($_.newCommit.Substring(0, 8))" }
+ }
- $submodules `
+ $changes = $submodules `
| ? { $_.changed } `
| % {
Invoke-Block { & git add $_.path }
+ "$($_.module) => $($_.newCommit)"
}
if ($changes) {
- $shortMessage = "Updating submodule(s) $( $changes -join ' ,' )"
+ $shortMessage = "Updating submodule(s) `n`n$( $changes -join "`n" )"
# add this to the commit message to make it possible to filter commit triggers based on message
$message = "$shortMessage`n`n[auto-updated: submodules]"
if (-not $NoCommit -and ($Force -or ($PSCmdlet.ShouldContinue($shortMessage, 'Create a new commit with these changes?')))) {
Invoke-Block { & git commit -m $message @GitCommitArgs }
- } else {
+ }
+ else {
# If composing this script with others, return the message that would have been used
return @{
message = $message
diff --git a/scripts/common.psm1 b/scripts/common.psm1
index 9c08953171..3c78631d60 100644
--- a/scripts/common.psm1
+++ b/scripts/common.psm1
@@ -6,6 +6,7 @@ function Assert-Git {
}
function Invoke-Block([scriptblock]$cmd) {
+ $cmd | Out-String | Write-Verbose
& $cmd
# Need to check both of these cases for errors as they represent different items
@@ -16,15 +17,20 @@ function Invoke-Block([scriptblock]$cmd) {
}
}
-function Get-Submodules([string]$ModuleDirectory)
-{
- Invoke-Block { & git submodule update --init }
+function Get-Submodules {
+ param(
+ [Parameter(Mandatory = $true)]
+ [string]$RepoRoot
+ )
- $gitModules = Join-Path $RepoRoot ".gitmodules"
+ Invoke-Block { & git submodule update --init } | Out-Null
+
+ $moduleConfigFile = Join-Path $RepoRoot ".gitmodules"
$submodules = @()
- Get-ChildItem "$ModuleDirectory/*" -Directory | % {
- Push-Location $_
+ Get-ChildItem "$RepoRoot/modules/*" -Directory | % {
+ Push-Location $_ | Out-Null
+ Write-Verbose "Attempting to get submodule info for $_"
try {
$data = @{
path = $_
@@ -32,13 +38,13 @@ function Get-Submodules([string]$ModuleDirectory)
commit = $(git rev-parse HEAD)
newCommit = $null
changed = $false
- branch = $(git config -f $gitModules --get submodule.modules/$($_.Name).branch )
+ branch = $(git config -f $moduleConfigFile --get submodule.modules/$($_.Name).branch )
}
$submodules += $data
}
finally {
- Pop-Location
+ Pop-Location | Out-Null
}
}