public ReleaseResult execute()

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;
    }