Browse Source

don't build already built projects when building an entire repository

pull/5418/head
İsmail ÇAĞDAŞ 6 years ago
parent
commit
55d50c9bec
  1. 20
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultChangedProjectFinder.cs
  2. 10
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/GitRepositoryBuildStatus.cs
  3. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/BuildCommand.cs

20
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultChangedProjectFinder.cs

@ -118,7 +118,7 @@ namespace Volo.Abp.Cli.Build
{
if (forceBuild || repositoryBuildStatus == null || repositoryBuildStatus.CommitId.IsNullOrEmpty())
{
AddAllCsProjFiles(repository, changedProjectList);
AddAllCsProjFiles(repository, changedProjectList, repositoryBuildStatus);
}
else
{
@ -145,7 +145,10 @@ namespace Volo.Abp.Cli.Build
}
}
private void AddAllCsProjFiles(GitRepository repository, List<DotNetProjectInfo> changedFiles)
private void AddAllCsProjFiles(
GitRepository repository,
List<DotNetProjectInfo> changedFiles,
GitRepositoryBuildStatus status)
{
var allCsProjFiles = Directory.GetFiles(
repository.RootPath,
@ -161,8 +164,21 @@ namespace Volo.Abp.Cli.Build
.ToList();
}
// Filter already built files.
// TODO: create a class for repository extensions like getting last commitId
var lastCommitId = string.Empty;
using (var repo = new Repository(string.Concat(repository.RootPath, @"\.git")))
{
lastCommitId = repo.Head.Tip.Id.ToString();
}
foreach (var file in allCsProjFiles)
{
if (status.GetSelfOrChild(repository.Name).SucceedProjects.Any(e=> e.CsProjPath == file))
{
continue;
}
changedFiles.Add(
new DotNetProjectInfo(repository.Name, Path.Combine(repository.RootPath, file))
);

10
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/GitRepositoryBuildStatus.cs

@ -38,6 +38,16 @@ namespace Volo.Abp.Cli.Build
DependingRepositories = new List<GitRepositoryBuildStatus>();
}
public GitRepositoryBuildStatus GetSelfOrChild(string repositoryName)
{
if (RepositoryName == repositoryName)
{
return this;
}
return GetChild(repositoryName);
}
public GitRepositoryBuildStatus GetChild(string repositoryName)
{
foreach (var dependingRepository in DependingRepositories)

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/BuildCommand.cs

@ -73,7 +73,7 @@ namespace Volo.Abp.Cli.Commands
string.IsNullOrEmpty(maxParallelBuild) ? 1 : Convert.ToInt32(maxParallelBuild),
dotnetBuildArguments ?? ""
);
var buildStatus = BuildStatusGenerator.Generate(
buildConfig.GitRepository,
changedProjectFiles,

Loading…
Cancel
Save