use of org.apache.maven.scm.command.update.UpdateScmResult in project maven-scm by apache.
the class StarteamUpdateCommand method executeUpdateCommand.
// ----------------------------------------------------------------------
// AbstractUpdateCommand Implementation
// ----------------------------------------------------------------------
/**
* {@inheritDoc}
*/
protected UpdateScmResult executeUpdateCommand(ScmProviderRepository repo, ScmFileSet fileSet, ScmVersion version) throws ScmException {
if (getLogger().isInfoEnabled()) {
getLogger().info("Working directory: " + fileSet.getBasedir().getAbsolutePath());
}
StarteamScmProviderRepository repository = (StarteamScmProviderRepository) repo;
StarteamCheckOutConsumer consumer = new StarteamCheckOutConsumer(getLogger(), fileSet.getBasedir());
CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
List<File> updateFiles = fileSet.getFileList();
if (updateFiles.size() == 0) {
// update everything
Commandline cl = createCommandLine(repository, fileSet, version);
int exitCode = StarteamCommandLineUtils.executeCommandline(cl, consumer, stderr, getLogger());
if (exitCode != 0) {
return new UpdateScmResult(cl.toString(), "The starteam command failed.", stderr.getOutput(), false);
} else {
// hiden feature to allow Continuous Integration machine to
// delete local files. It affectively remove all build ouput as well
String doDeleteLocal = System.getProperty("maven.scm.starteam.deleteLocal");
if ("true".equalsIgnoreCase(doDeleteLocal)) {
this.deleteLocal(repository, fileSet, version);
}
}
} else {
// update only interested files already on the local disk
for (int i = 0; i < updateFiles.size(); ++i) {
File updateFile = (File) updateFiles.get(i);
ScmFileSet scmFileSet = new ScmFileSet(fileSet.getBasedir(), updateFile);
Commandline cl = createCommandLine(repository, scmFileSet, version);
int exitCode = StarteamCommandLineUtils.executeCommandline(cl, consumer, stderr, getLogger());
if (exitCode != 0) {
return new UpdateScmResult(cl.toString(), "The starteam command failed.", stderr.getOutput(), false);
}
}
}
return new UpdateScmResult(null, consumer.getCheckedOutFiles());
}
use of org.apache.maven.scm.command.update.UpdateScmResult 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);
}
}
use of org.apache.maven.scm.command.update.UpdateScmResult in project maven-scm by apache.
the class LocalScmProvider method update.
/**
* {@inheritDoc}
*/
public UpdateScmResult update(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
LocalUpdateCommand command = new LocalUpdateCommand();
command.setLogger(getLogger());
return (UpdateScmResult) command.execute(repository, fileSet, parameters);
}
use of org.apache.maven.scm.command.update.UpdateScmResult in project maven-scm by apache.
the class PerforceScmProvider method update.
protected UpdateScmResult update(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params) throws ScmException {
PerforceUpdateCommand command = new PerforceUpdateCommand();
command.setLogger(getLogger());
return (UpdateScmResult) command.execute(repository, fileSet, params);
}
use of org.apache.maven.scm.command.update.UpdateScmResult 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);
}
Aggregations