in maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java [66:123]
public ReleaseResult execute(
ReleaseDescriptor releaseDescriptor,
ReleaseEnvironment releaseEnvironment,
List<MavenProject> reactorProjects)
throws ReleaseExecutionException, ReleaseFailureException {
ReleaseResult relResult = new ReleaseResult();
validateConfiguration(releaseDescriptor);
logInfo(relResult, "Branching release with the label " + releaseDescriptor.getScmReleaseLabel() + "...");
ReleaseDescriptor basedirAlignedReleaseDescriptor =
ReleaseUtil.createBasedirAlignedReleaseDescriptor(releaseDescriptor, reactorProjects);
ScmRepository repository;
ScmProvider provider;
try {
repository = scmRepositoryConfigurator.getConfiguredRepository(
basedirAlignedReleaseDescriptor.getScmSourceUrl(),
releaseDescriptor,
releaseEnvironment.getSettings());
repository.getProviderRepository().setPushChanges(releaseDescriptor.isPushChanges());
repository.getProviderRepository().setWorkItem(releaseDescriptor.getWorkItem());
provider = scmRepositoryConfigurator.getRepositoryProvider(repository);
} catch (ScmRepositoryException e) {
throw new ReleaseScmRepositoryException(e.getMessage(), e.getValidationMessages());
} catch (NoSuchScmProviderException e) {
throw new ReleaseExecutionException("Unable to configure SCM repository: " + e.getMessage(), e);
}
BranchScmResult result;
try {
ScmFileSet fileSet = new ScmFileSet(new File(basedirAlignedReleaseDescriptor.getWorkingDirectory()));
String branchName = releaseDescriptor.getScmReleaseLabel();
ScmBranchParameters scmBranchParameters = new ScmBranchParameters();
scmBranchParameters.setMessage(releaseDescriptor.getScmCommentPrefix() + "copy for branch " + branchName);
scmBranchParameters.setRemoteBranching(releaseDescriptor.isRemoteTagging());
scmBranchParameters.setScmRevision(releaseDescriptor.getScmReleasedPomRevision());
scmBranchParameters.setPinExternals(releaseDescriptor.isPinExternals());
result = provider.branch(repository, fileSet, branchName, scmBranchParameters);
} catch (ScmException e) {
throw new ReleaseExecutionException("An error is occurred in the branch process: " + e.getMessage(), e);
}
if (!result.isSuccess()) {
throw new ReleaseScmCommandException("Unable to branch SCM", result);
}
relResult.setResultCode(ReleaseResult.SUCCESS);
return relResult;
}