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()) if (forceBuild || repositoryBuildStatus == null || repositoryBuildStatus.CommitId.IsNullOrEmpty())
{ {
AddAllCsProjFiles(repository, changedProjectList); AddAllCsProjFiles(repository, changedProjectList, repositoryBuildStatus);
} }
else 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( var allCsProjFiles = Directory.GetFiles(
repository.RootPath, repository.RootPath,
@ -161,8 +164,21 @@ namespace Volo.Abp.Cli.Build
.ToList(); .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) foreach (var file in allCsProjFiles)
{ {
if (status.GetSelfOrChild(repository.Name).SucceedProjects.Any(e=> e.CsProjPath == file))
{
continue;
}
changedFiles.Add( changedFiles.Add(
new DotNetProjectInfo(repository.Name, Path.Combine(repository.RootPath, file)) 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>(); DependingRepositories = new List<GitRepositoryBuildStatus>();
} }
public GitRepositoryBuildStatus GetSelfOrChild(string repositoryName)
{
if (RepositoryName == repositoryName)
{
return this;
}
return GetChild(repositoryName);
}
public GitRepositoryBuildStatus GetChild(string repositoryName) public GitRepositoryBuildStatus GetChild(string repositoryName)
{ {
foreach (var dependingRepository in DependingRepositories) 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), string.IsNullOrEmpty(maxParallelBuild) ? 1 : Convert.ToInt32(maxParallelBuild),
dotnetBuildArguments ?? "" dotnetBuildArguments ?? ""
); );
var buildStatus = BuildStatusGenerator.Generate( var buildStatus = BuildStatusGenerator.Generate(
buildConfig.GitRepository, buildConfig.GitRepository,
changedProjectFiles, changedProjectFiles,

Loading…
Cancel
Save