private static Execution createExecution(final ExecutionRepository repository, final SourceCodeManagementService scmService, final Build build, final Execution execution, final int executionIdi, final Status status) {
Date date=build.createdOn();
if(execution!=null) {
if(execution.isFinished()) {
date=execution.result().finishedOn();
} else {
date=execution.createdOn();
}
}
final Execution newExecution=build.addExecution(executionId(build, executionIdi), after(date), build.codebase(), randomSHA1(build,executionIdi));
if(status!=null) {
newExecution.finish(new Result(status,after(newExecution.createdOn())));
}
repository.add(newExecution);
final CreateCommitCommand command =
CreateCommitCommand.
builder().
withRepositoryLocation(newExecution.codebase().location()).
withBranchName(newExecution.codebase().branchName()).
withCommitId(newExecution.commitId()).
withResource(build.buildId().resolve("scm/repo/master/"+newExecution.commitId()+"/")).
build();
scmService.createCommit(command);
return newExecution;
}