Mercurial > hg > mercurial
changeset 453:dc95d4468323
Ability to run commands with traceback
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Tue, 03 Jul 2012 20:14:22 +0400 |
parents | 183656e9294a |
children | a400b00b8b2d |
files | mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfig.java mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfigImpl.java mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CloneCommand.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/PullCommand.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/UpdateCommand.java |
diffstat | 6 files changed, 39 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfig.java Tue Jul 03 18:59:14 2012 +0400 +++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfig.java Tue Jul 03 20:14:22 2012 +0400 @@ -11,4 +11,6 @@ boolean isUseLocalMirrors(@NotNull AgentRunningBuild build); int getPullTimeout(@NotNull AgentRunningBuild build); + + boolean runWithTraceback(@NotNull AgentRunningBuild build); }
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfigImpl.java Tue Jul 03 18:59:14 2012 +0400 +++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfigImpl.java Tue Jul 03 20:14:22 2012 +0400 @@ -37,6 +37,10 @@ return DEFAULT_PULL_TIMEOUT_SECONDS; } + public boolean runWithTraceback(@NotNull AgentRunningBuild build) { + return "true".equals(build.getSharedConfigParameters().get("teamcity.hg.run.commands.with.traceback")); + } + @Nullable public Integer parseTimeout(@Nullable String timeoutStr) { if (timeoutStr == null)
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java Tue Jul 03 18:59:14 2012 +0400 +++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java Tue Jul 03 20:14:22 2012 +0400 @@ -31,6 +31,7 @@ private final BuildProgressLogger myLogger; private final boolean myUseLocalMirrors; private int myPullTimeout; + private final boolean myUseTraceback; public MercurialIncludeRuleUpdater(@NotNull final AgentPluginConfig pluginConfig, @NotNull final MirrorManager mirrorManager, @@ -47,6 +48,7 @@ myLogger = build.getBuildLogger(); myUseLocalMirrors = myConfig.isUseLocalMirrors(build); myPullTimeout = myConfig.getPullTimeout(build); + myUseTraceback = myConfig.runWithTraceback(build); } @@ -74,6 +76,7 @@ delete(mirrorDir); myLogger.message("Clone repository " + myAuthSettings.getRepositoryUrlWithHiddenPassword(repositoryUrl) + " into local mirror " + mirrorRepo.path()); mirrorRepo.doClone().fromRepository(repositoryUrl) + .withTraceback(myUseTraceback) .setUpdateWorkingDir(false) .setUsePullProtocol(false) .useUncompressedTransfer(myRoot.isUncompressedTransfer()) @@ -86,6 +89,7 @@ } else { myLogger.message("Start pulling changes from " + myAuthSettings.getRepositoryUrlWithHiddenPassword(repositoryUrl)); mirrorRepo.pull().fromRepository(repositoryUrl) + .withTraceback(myUseTraceback) .withTimeout(myPullTimeout) .call(); myLogger.message("Local mirror changes successfully pulled"); @@ -101,6 +105,7 @@ if (repo.isEmpty()) {//can do clone only in empty dir myLogger.message("Start cloning from " + (myUseLocalMirrors ? "local mirror " : "") + myAuthSettings.getRepositoryUrlWithHiddenPassword(repositoryUrl)); repo.doClone().fromRepository(repositoryUrl) + .withTraceback(myUseTraceback) .setUsePullProtocol(false) .setUpdateWorkingDir(false) .useUncompressedTransfer(!myUseLocalMirrors && myRoot.isUncompressedTransfer()) @@ -117,6 +122,7 @@ myLogger.message("Start pulling changes from " + (myUseLocalMirrors ? "local mirror " : "") + myAuthSettings.getRepositoryUrlWithHiddenPassword(repositoryUrl)); try { repo.pull().fromRepository(repositoryUrl) + .withTraceback(myUseTraceback) .withTimeout(myPullTimeout) .call(); } catch (UnrelatedRepositoryException e) { @@ -161,12 +167,14 @@ if (subrepository.isValidRepository()) { myLogger.message("Pull from local mirror"); subrepository.pull().fromRepository(mirrorDir) + .withTraceback(myUseTraceback) .withTimeout(myPullTimeout) .call(); myLogger.message("done"); } else { myLogger.message("Clone subrepo from local mirror"); subrepository.doClone().fromRepository(mirrorDir) + .withTraceback(myUseTraceback) .setUpdateWorkingDir(false) .setUsePullProtocol(false) .call(); @@ -183,7 +191,7 @@ private void doUpdateWorkingDir(@NotNull HgRepo repo, @NotNull String revision) throws VcsException { myLogger.message("Updating working dir " + repo.path() + " to revision " + revision); - repo.update().toRevision(revision).call(); + repo.update().withTraceback(myUseTraceback).toRevision(revision).call(); myLogger.message("Working dir updated"); }
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CloneCommand.java Tue Jul 03 18:59:14 2012 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CloneCommand.java Tue Jul 03 20:14:22 2012 +0400 @@ -31,6 +31,7 @@ private File myWorkingDir; private boolean myUsePullProtocol = true; private boolean myUseUncompressedTransfer = false; + private boolean myTraceback; public CloneCommand(@NotNull String hgPath, @NotNull File workingDir, @NotNull AuthSettings authSettings) { super(hgPath, workingDir, authSettings); @@ -70,12 +71,19 @@ return this; } + public CloneCommand withTraceback(boolean runWithTraceback) { + myTraceback = runWithTraceback; + return this; + } + public void call() throws VcsException { myWorkingDir.mkdirs(); GeneralCommandLine cli = createCommandLine(); File parent = myWorkingDir.getParentFile(); cli.setWorkDirectory(parent.getAbsolutePath()); cli.addParameter("clone"); + if (myTraceback) + cli.addParameter("--traceback"); if (myToId != null) { cli.addParameter("-r"); cli.addParameter(myToId);
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/PullCommand.java Tue Jul 03 18:59:14 2012 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/PullCommand.java Tue Jul 03 20:14:22 2012 +0400 @@ -33,6 +33,7 @@ private String myPullUrl; private int myTimeout; + private boolean myTraceback; public PullCommand(@NotNull String hgPath, @NotNull File workingDir, @NotNull AuthSettings authSettings) { super(hgPath, workingDir, authSettings); @@ -53,10 +54,17 @@ return this; } + public PullCommand withTraceback(boolean runWithTraceback) { + myTraceback = runWithTraceback; + return this; + } + public void call() throws VcsException { ensureRepositoryIsNotLocked(); GeneralCommandLine cli = createCommandLine(); cli.addParameter("pull"); + if (myTraceback) + cli.addParameter("--traceback"); String pullUrl = myAuthSettings != null ? myAuthSettings.getRepositoryUrlWithCredentials(myPullUrl) : myPullUrl; cli.addParameter(pullUrl); runCommand(cli, with().timeout(myTimeout));
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/UpdateCommand.java Tue Jul 03 18:59:14 2012 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/UpdateCommand.java Tue Jul 03 20:14:22 2012 +0400 @@ -30,6 +30,7 @@ private String myToId; private String myBranchName; + private boolean myTraceback; public UpdateCommand(@NotNull String hgPath, @NotNull File workingDir, @NotNull AuthSettings authSettings) { super(hgPath, workingDir,authSettings); @@ -49,11 +50,18 @@ return this; } + public UpdateCommand withTraceback(boolean runWithTraceback) { + myTraceback = runWithTraceback; + return this; + } + public void call() throws VcsException { ensureWorkingDirIsNotLocked(); GeneralCommandLine cli = createCommandLine(); cli.addParameter("update"); + if (myTraceback) + cli.addParameter("--traceback"); addAuthConfigParams(cli); cli.addParameter("-C"); cli.addParameter("-r");