Search in sources :

Example 6 with UpdateScmResultWithRevision

use of org.apache.maven.scm.command.update.UpdateScmResultWithRevision in project maven-scm by apache.

the class UpdateMojo method execute.

/**
 * {@inheritDoc}
 */
public void execute() throws MojoExecutionException {
    super.execute();
    try {
        ScmRepository repository = getScmRepository();
        UpdateScmResult result = getScmManager().update(repository, getFileSet(), getScmVersion(scmVersionType, scmVersion), runChangelog);
        checkResult(result);
        if (result instanceof UpdateScmResultWithRevision) {
            String revision = ((UpdateScmResultWithRevision) result).getRevision();
            getLog().info("Storing revision in '" + revisionKey + "' project property.");
            if (// Remove the test when we'll use plugin-test-harness 1.0-alpha-2
            project.getProperties() != null) {
                project.getProperties().put(revisionKey, revision);
            }
            getLog().info("Project at revision " + revision);
        }
    } catch (IOException e) {
        throw new MojoExecutionException("Cannot run update command : ", e);
    } catch (ScmException e) {
        throw new MojoExecutionException("Cannot run update command : ", e);
    }
}
Also used : ScmRepository(org.apache.maven.scm.repository.ScmRepository) ScmException(org.apache.maven.scm.ScmException) UpdateScmResultWithRevision(org.apache.maven.scm.command.update.UpdateScmResultWithRevision) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) UpdateScmResult(org.apache.maven.scm.command.update.UpdateScmResult) IOException(java.io.IOException)

Example 7 with UpdateScmResultWithRevision

use of org.apache.maven.scm.command.update.UpdateScmResultWithRevision in project maven-scm by apache.

the class GitUpdateCommand method executeUpdateCommand.

/**
 * {@inheritDoc}
 */
protected UpdateScmResult executeUpdateCommand(ScmProviderRepository repo, ScmFileSet fileSet, ScmVersion scmVersion) throws ScmException {
    GitScmProviderRepository repository = (GitScmProviderRepository) repo;
    if (GitScmProviderRepository.PROTOCOL_FILE.equals(repository.getFetchInfo().getProtocol()) && repository.getFetchInfo().getPath().indexOf(fileSet.getBasedir().getPath()) >= 0) {
        throw new ScmException("remote repository must not be the working directory");
    }
    int exitCode;
    CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer();
    CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
    // fir we need to get the current reversion
    Commandline clRev = createLatestRevisionCommandLine(repository, fileSet.getBasedir(), scmVersion);
    GitLatestRevisionCommandConsumer consumerRev = new GitLatestRevisionCommandConsumer(getLogger());
    exitCode = GitCommandLineUtils.execute(clRev, consumerRev, stderr, getLogger());
    if (exitCode != 0) {
        return new UpdateScmResult(clRev.toString(), "The git-log command failed.", stderr.getOutput(), false);
    }
    String origSha1 = consumerRev.getLatestRevision();
    Commandline cl = createCommandLine(repository, fileSet.getBasedir(), scmVersion);
    exitCode = GitCommandLineUtils.execute(cl, stdout, stderr, getLogger());
    if (exitCode != 0) {
        return new UpdateScmResult(cl.toString(), "The git-pull command failed.", stderr.getOutput(), false);
    }
    // we also need to log exactly what has been updated
    GitDiffRawConsumer diffRawConsumer = new GitDiffRawConsumer(getLogger());
    Commandline clDiffRaw = GitDiffCommand.createDiffRawCommandLine(fileSet.getBasedir(), origSha1);
    exitCode = GitCommandLineUtils.execute(clDiffRaw, diffRawConsumer, stderr, getLogger());
    if (exitCode != 0) {
        return new UpdateScmResult(clDiffRaw.toString(), "The git-diff --raw command failed.", stderr.getOutput(), false);
    }
    // now let's get the latest version
    consumerRev = new GitLatestRevisionCommandConsumer(getLogger());
    exitCode = GitCommandLineUtils.execute(clRev, consumerRev, stderr, getLogger());
    if (exitCode != 0) {
        return new UpdateScmResult(clRev.toString(), "The git-log command failed.", stderr.getOutput(), false);
    }
    String latestRevision = consumerRev.getLatestRevision();
    return new UpdateScmResultWithRevision(cl.toString(), diffRawConsumer.getChangedFiles(), latestRevision);
}
Also used : ScmException(org.apache.maven.scm.ScmException) GitScmProviderRepository(org.apache.maven.scm.provider.git.repository.GitScmProviderRepository) Commandline(org.codehaus.plexus.util.cli.Commandline) UpdateScmResultWithRevision(org.apache.maven.scm.command.update.UpdateScmResultWithRevision) GitCommandLineUtils(org.apache.maven.scm.provider.git.gitexe.command.GitCommandLineUtils) CommandLineUtils(org.codehaus.plexus.util.cli.CommandLineUtils) UpdateScmResult(org.apache.maven.scm.command.update.UpdateScmResult) GitDiffRawConsumer(org.apache.maven.scm.provider.git.gitexe.command.diff.GitDiffRawConsumer)

Aggregations

UpdateScmResult (org.apache.maven.scm.command.update.UpdateScmResult)7 UpdateScmResultWithRevision (org.apache.maven.scm.command.update.UpdateScmResultWithRevision)7 ScmException (org.apache.maven.scm.ScmException)5 CommandLineUtils (org.codehaus.plexus.util.cli.CommandLineUtils)3 Commandline (org.codehaus.plexus.util.cli.Commandline)3 File (java.io.File)2 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)2 ChangeSet (org.apache.maven.scm.ChangeSet)2 ScmFile (org.apache.maven.scm.ScmFile)2 ScmResult (org.apache.maven.scm.ScmResult)2 ScmRepository (org.apache.maven.scm.repository.ScmRepository)2 CommandLineException (org.codehaus.plexus.util.cli.CommandLineException)2 CommandParameters (org.apache.maven.scm.CommandParameters)1 CheckOutScmResult (org.apache.maven.scm.command.checkout.CheckOutScmResult)1 BazaarConsumer (org.apache.maven.scm.provider.bazaar.command.BazaarConsumer)1 BazaarDiffConsumer (org.apache.maven.scm.provider.bazaar.command.diff.BazaarDiffConsumer)1 GitCommandLineUtils (org.apache.maven.scm.provider.git.gitexe.command.GitCommandLineUtils)1 GitDiffRawConsumer (org.apache.maven.scm.provider.git.gitexe.command.diff.GitDiffRawConsumer)1