Mercurial > hg > mercurial
changeset 9:7dadebd03515
use tip command instead of log in getCurrentVersion method
author | Pavel.Sher |
---|---|
date | Mon, 14 Jul 2008 21:17:17 +0400 |
parents | 2cb2df5a0dcd |
children | 76e3e3618cf7 |
files | mercurial/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java mercurial/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CatCommand.java mercurial/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CommandUtil.java mercurial/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/TipCommand.java |
diffstat | 4 files changed, 49 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Mon Jul 14 20:52:10 2008 +0400 +++ b/mercurial/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Mon Jul 14 21:17:17 2008 +0400 @@ -142,14 +142,8 @@ public String getCurrentVersion(final VcsRoot root) throws VcsException { updateWorkingDirectory(root); Settings settings = new Settings(myServerPaths, root); - LogCommand lc = new LogCommand(settings); - lc.setFromRevId("tip"); - lc.setToRevId("tip"); - List<ChangeSet> changes = lc.execute(); - if (changes.isEmpty()) { - throw new VcsException("Unable to obtain current version of repository"); - } - final ChangeSet changeSet = changes.get(0); + TipCommand lc = new TipCommand(settings); + ChangeSet changeSet = lc.execute(); return changeSet.getFullVersion(); }
--- a/mercurial/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CatCommand.java Mon Jul 14 20:52:10 2008 +0400 +++ b/mercurial/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CatCommand.java Mon Jul 14 21:17:17 2008 +0400 @@ -31,15 +31,14 @@ } for (String path: relPaths) { final File parentFile = new File(tempDir, path).getParentFile(); - if (!parentFile.mkdirs()) { + if (!parentFile.isDirectory() && !parentFile.mkdirs()) { throw new VcsException("Failed to create directory: " + parentFile.getAbsolutePath()); } } GeneralCommandLine cli = new GeneralCommandLine(); cli.setExePath(mySettings.getHgCommandPath()); - cli.addParameter("--cwd"); - cli.addParameter(mySettings.getWorkingDir()); + cli.setWorkDirectory(mySettings.getWorkingDir()); cli.addParameter("cat"); cli.addParameter("-o"); cli.addParameter(tempDir.getAbsolutePath() + File.separator + "%p");
--- a/mercurial/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CommandUtil.java Mon Jul 14 20:52:10 2008 +0400 +++ b/mercurial/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CommandUtil.java Mon Jul 14 21:17:17 2008 +0400 @@ -8,9 +8,13 @@ public class CommandUtil { public static void checkCommandFailed(@NotNull String cmdName, @NotNull ExecResult res) throws VcsException { if (res.getExitCode() > 0) { - final String message = "'" + cmdName + "' command failed. Err: " + res.getStderr() + "\nout: " + res.getStdout(); - Loggers.VCS.warn(message); - throw new VcsException(message); + commandFailed(cmdName, res); } } + + public static void commandFailed(final String cmdName, final ExecResult res) throws VcsException { + final String message = "'" + cmdName + "' command failed. Err: " + res.getStderr() + "\nout: " + res.getStdout(); + Loggers.VCS.warn(message); + throw new VcsException(message); + } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/TipCommand.java Mon Jul 14 21:17:17 2008 +0400 @@ -0,0 +1,38 @@ +package jetbrains.buildServer.buildTriggers.vcs.mercurial.command; + +import com.intellij.execution.configurations.GeneralCommandLine; +import jetbrains.buildServer.ExecResult; +import jetbrains.buildServer.SimpleCommandLineProcessRunner; +import jetbrains.buildServer.vcs.VcsException; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +/** + * @author Pavel.Sher + * Date: 14.07.2008 + */ +public class TipCommand { + @NotNull + private Settings mySettings; + + public TipCommand(@NotNull final Settings settings) { + mySettings = settings; + } + + @NotNull + public ChangeSet execute() throws VcsException { + GeneralCommandLine cli = new GeneralCommandLine(); + cli.setWorkDirectory(mySettings.getWorkingDir()); + cli.setExePath(mySettings.getHgCommandPath()); + cli.addParameter("tip"); + ExecResult res = SimpleCommandLineProcessRunner.runCommand(cli, null); + CommandUtil.checkCommandFailed("hg tip", res); + List<ChangeSet> changeSets = LogCommand.parseChangeSets(res.getStdout()); + if (changeSets.isEmpty()) { + CommandUtil.commandFailed("hg tip", res); + } + + return changeSets.get(0); + } +}