Mercurial > hg > mercurial
changeset 896:4e29b1244707
Add VCS root option to use shared mirrors during agent-side checkout
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Fri, 07 Nov 2014 18:07:06 +0100 |
parents | 5c981a92e658 |
children | 45876afb22f3 |
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/MercurialAgentSideVcsSupport.java mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Constants.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/HgVcsRoot.java mercurial-server/resources/buildServerResources/mercurialSettings.jsp |
diffstat | 7 files changed, 37 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfig.java Fri Nov 07 17:29:47 2014 +0100 +++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfig.java Fri Nov 07 18:07:06 2014 +0100 @@ -17,6 +17,7 @@ package jetbrains.buildServer.buildTriggers.vcs.mercurial; import jetbrains.buildServer.agent.AgentRunningBuild; +import jetbrains.buildServer.vcs.VcsRoot; import org.jetbrains.annotations.NotNull; import java.io.File; @@ -26,9 +27,9 @@ */ public interface AgentPluginConfig extends PluginConfig { - boolean isUseLocalMirrors(@NotNull AgentRunningBuild build); + boolean isUseLocalMirrors(@NotNull AgentRunningBuild build, @NotNull VcsRoot root); - boolean shareLocalMirrors(@NotNull AgentRunningBuild build); + boolean shareLocalMirrors(@NotNull AgentRunningBuild build, @NotNull VcsRoot root); int getPullTimeout(@NotNull AgentRunningBuild build);
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfigImpl.java Fri Nov 07 17:29:47 2014 +0100 +++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfigImpl.java Fri Nov 07 18:07:06 2014 +0100 @@ -18,7 +18,9 @@ import jetbrains.buildServer.agent.AgentRunningBuild; import jetbrains.buildServer.agent.BuildAgentConfiguration; +import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.HgVcsRoot; import jetbrains.buildServer.util.StringUtil; +import jetbrains.buildServer.vcs.VcsRoot; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -38,18 +40,21 @@ myAgentConfig = agentConfig; } - public boolean isUseLocalMirrors(@NotNull AgentRunningBuild build) { + public boolean isUseLocalMirrors(@NotNull AgentRunningBuild build, @NotNull VcsRoot root) { return Boolean.valueOf(build.getSharedConfigParameters().get("teamcity.hg.use.local.mirrors")) - || shareLocalMirrors(build); + || shareLocalMirrors(build, root); } @SuppressWarnings("ConstantConditions") - public boolean shareLocalMirrors(@NotNull AgentRunningBuild build) { - boolean defaultValue = false; + public boolean shareLocalMirrors(@NotNull AgentRunningBuild build, @NotNull VcsRoot root) { String buildValue = build.getSharedConfigParameters().get("teamcity.hg.shareLocalMirrors"); - if (buildValue == null || StringUtil.isEmpty(buildValue)) - return defaultValue; - return Boolean.valueOf(buildValue); + if (!StringUtil.isEmpty(buildValue)) + return Boolean.parseBoolean(buildValue); + HgVcsRoot hgRoot = new HgVcsRoot(root); + Boolean rootValue = hgRoot.getUseSharedMirrors(); + if (rootValue != null) + return rootValue; + return false; } @NotNull
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialAgentSideVcsSupport.java Fri Nov 07 17:29:47 2014 +0100 +++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialAgentSideVcsSupport.java Fri Nov 07 18:07:06 2014 +0100 @@ -50,7 +50,7 @@ public IncludeRuleUpdater getUpdater(@NotNull final VcsRoot vcsRoot, @NotNull final CheckoutRules checkoutRules, @NotNull final String toVersion, @NotNull final File checkoutDirectory, @NotNull final AgentRunningBuild build, boolean cleanCheckoutRequested) throws VcsException { MercurialIncludeRuleUpdater updater; - if (myConfig.shareLocalMirrors(build)) { + if (myConfig.shareLocalMirrors(build, vcsRoot)) { updater = new SharingMercurialUpdater(myConfig, myMirrorManager, myRepoFactory, vcsRoot, toVersion, build); } else { updater = new MercurialIncludeRuleUpdater(myConfig, myMirrorManager, myRepoFactory, vcsRoot, toVersion, build);
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java Fri Nov 07 17:29:47 2014 +0100 +++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java Fri Nov 07 18:07:06 2014 +0100 @@ -70,7 +70,7 @@ myAuthSettings = myRoot.getAuthSettings(); myToVersion = toVersion; myLogger = build.getBuildLogger(); - myUseLocalMirrors = pluginConfig.isUseLocalMirrors(build); + myUseLocalMirrors = pluginConfig.isUseLocalMirrors(build, root); myPullTimeout = pluginConfig.getPullTimeout(build); myUseTraceback = pluginConfig.runWithTraceback(build); myProfile = pluginConfig.runWithProfile(build);
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Constants.java Fri Nov 07 17:29:47 2014 +0100 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Constants.java Fri Nov 07 18:07:06 2014 +0100 @@ -39,4 +39,5 @@ String IGNORE_MISSING_DEFAULT_BRANCH = "IGNORE_MISSING_DEFAULT_BRANCH"; String CUSTOM_HG_CONFIG_PROP = "customHgConfig"; String TEAMCITY_HG_CONFIG_FILE_NAME = "teamcity"; + String USE_SHARED_MIRRORS = "useSharedMirrors"; }
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/HgVcsRoot.java Fri Nov 07 17:29:47 2014 +0100 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/HgVcsRoot.java Fri Nov 07 18:07:06 2014 +0100 @@ -49,6 +49,7 @@ private final PurgePolicy myPurgePolicy; private final boolean myIgnoreMissingDefaultBranch; private final String myCustomHgConfig; + private final Boolean myUseSharedMirrors; public HgVcsRoot(@NotNull final VcsRoot vcsRoot) { this(vcsRoot.getProperties()); @@ -70,6 +71,15 @@ myPurgePolicy = readPurgePolicy(vcsRootProperties); myIgnoreMissingDefaultBranch = Boolean.valueOf(getProperty(Constants.IGNORE_MISSING_DEFAULT_BRANCH, "false")); myCustomHgConfig = getProperty(Constants.CUSTOM_HG_CONFIG_PROP, ""); + myUseSharedMirrors = readUseSharedMirrors(); + } + + @Nullable + private Boolean readUseSharedMirrors() { + String prop = getProperty(Constants.USE_SHARED_MIRRORS); + if (StringUtil.isEmpty(prop)) + return null; + return Boolean.parseBoolean(prop); } @NotNull @@ -213,6 +223,11 @@ return myCustomHgConfig; } + @Nullable + public Boolean getUseSharedMirrors() { + return myUseSharedMirrors; + } + public static enum PurgePolicy { DONT_RUN, PURGE_UNKNOWN,
--- a/mercurial-server/resources/buildServerResources/mercurialSettings.jsp Fri Nov 07 17:29:47 2014 +0100 +++ b/mercurial-server/resources/buildServerResources/mercurialSettings.jsp Fri Nov 07 18:07:06 2014 +0100 @@ -124,5 +124,9 @@ </props:selectProperty> </td> </tr> + <tr class="advancedSetting"> + <th><label for="useSharedMirrors">Use shared mirrors:</label></th> + <td><props:checkboxProperty name="useSharedMirrors"/></td> + </tr> </l:settingsGroup> </table>