# HG changeset patch # User Dmitry Neverov # Date 1415809816 -3600 # Node ID 638d979c611711f2093ee170a41712e533f64683 # Parent 45876afb22f304e122b65003906801777c91035e Polishing 'use mirrors' option Rename 'Use shared mirrors' in the UI to 'Use mirrors' as it is in git, add an ability to change mirroring strategy (disable mirrors sharing on the agent). Unfortunately cannot change the USE_AGENT_MIRRORS property name because we already have VCS roots with the 'useSharedMirrors' prop. diff -r 45876afb22f3 -r 638d979c6117 mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfigImpl.java --- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfigImpl.java Mon Nov 10 21:48:09 2014 +0100 +++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfigImpl.java Wed Nov 12 17:30:16 2014 +0100 @@ -33,6 +33,9 @@ private static final String PULL_TIMEOUT_SECONDS = "teamcity.hg.pull.timeout.seconds"; private static final int DEFAULT_PULL_TIMEOUT_SECONDS = 3600; + public static final String VCS_ROOT_MIRRORS_STRATEGY = "teamcity.hg.mirrorStrategy"; + public static final String VCS_ROOT_MIRRORS_STRATEGY_SHARED_MIRRORS = "sharedMirrors"; + public static final String VCS_ROOT_MIRRORS_STRATEGY_MIRRORS_ONLY = "mirrors"; private final BuildAgentConfiguration myAgentConfig; @@ -41,8 +44,15 @@ } public boolean isUseLocalMirrors(@NotNull AgentRunningBuild build, @NotNull VcsRoot root) { - return Boolean.valueOf(build.getSharedConfigParameters().get("teamcity.hg.use.local.mirrors")) - || shareLocalMirrors(build, root); + String buildValue = build.getSharedConfigParameters().get("teamcity.hg.use.local.mirrors"); + if (!StringUtil.isEmpty(buildValue)) + return Boolean.parseBoolean(buildValue); + HgVcsRoot hgRoot = new HgVcsRoot(root); + Boolean rootValue = hgRoot.getUseAgentMirrors(); + String mirrorStrategy = getMirrorStrategy(build); + if (rootValue != null && rootValue && (VCS_ROOT_MIRRORS_STRATEGY_SHARED_MIRRORS.equals(mirrorStrategy) || VCS_ROOT_MIRRORS_STRATEGY_MIRRORS_ONLY.equals(mirrorStrategy))) + return true; + return false; } @SuppressWarnings("ConstantConditions") @@ -51,13 +61,22 @@ if (!StringUtil.isEmpty(buildValue)) return Boolean.parseBoolean(buildValue); HgVcsRoot hgRoot = new HgVcsRoot(root); - Boolean rootValue = hgRoot.getUseSharedMirrors(); - if (rootValue != null) - return rootValue; + Boolean rootValue = hgRoot.getUseAgentMirrors(); + String mirrorStrategy = getMirrorStrategy(build); + if (rootValue != null && rootValue && VCS_ROOT_MIRRORS_STRATEGY_SHARED_MIRRORS.equals(mirrorStrategy)) + return true; return false; } @NotNull + private String getMirrorStrategy(@NotNull AgentRunningBuild build) { + String strategy = build.getSharedConfigParameters().get(VCS_ROOT_MIRRORS_STRATEGY); + if (!StringUtil.isEmpty(strategy)) + return strategy; + return VCS_ROOT_MIRRORS_STRATEGY_SHARED_MIRRORS; + } + + @NotNull public File getCachesDir() { return myAgentConfig.getCacheDirectory("mercurial"); } diff -r 45876afb22f3 -r 638d979c6117 mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Constants.java --- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Constants.java Mon Nov 10 21:48:09 2014 +0100 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Constants.java Wed Nov 12 17:30:16 2014 +0100 @@ -39,5 +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"; + String USE_AGENT_MIRRORS = "useSharedMirrors"; } diff -r 45876afb22f3 -r 638d979c6117 mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/HgVcsRoot.java --- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/HgVcsRoot.java Mon Nov 10 21:48:09 2014 +0100 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/HgVcsRoot.java Wed Nov 12 17:30:16 2014 +0100 @@ -49,7 +49,7 @@ private final PurgePolicy myPurgePolicy; private final boolean myIgnoreMissingDefaultBranch; private final String myCustomHgConfig; - private final Boolean myUseSharedMirrors; + private final Boolean myUseAgentMirrors; public HgVcsRoot(@NotNull final VcsRoot vcsRoot) { this(vcsRoot.getProperties()); @@ -71,12 +71,12 @@ myPurgePolicy = readPurgePolicy(vcsRootProperties); myIgnoreMissingDefaultBranch = Boolean.valueOf(getProperty(Constants.IGNORE_MISSING_DEFAULT_BRANCH, "false")); myCustomHgConfig = getProperty(Constants.CUSTOM_HG_CONFIG_PROP, ""); - myUseSharedMirrors = readUseSharedMirrors(); + myUseAgentMirrors = readUseSharedMirrors(); } @Nullable private Boolean readUseSharedMirrors() { - String prop = getProperty(Constants.USE_SHARED_MIRRORS); + String prop = getProperty(Constants.USE_AGENT_MIRRORS); if (StringUtil.isEmpty(prop)) return null; return Boolean.parseBoolean(prop); @@ -224,8 +224,8 @@ } @Nullable - public Boolean getUseSharedMirrors() { - return myUseSharedMirrors; + public Boolean getUseAgentMirrors() { + return myUseAgentMirrors; } public static enum PurgePolicy { diff -r 45876afb22f3 -r 638d979c6117 mercurial-server/resources/buildServerResources/mercurialSettings.jsp --- a/mercurial-server/resources/buildServerResources/mercurialSettings.jsp Mon Nov 10 21:48:09 2014 +0100 +++ b/mercurial-server/resources/buildServerResources/mercurialSettings.jsp Wed Nov 12 17:30:16 2014 +0100 @@ -125,8 +125,14 @@ - - + + + +
+ When this option is enabled TeamCity creates a separate clone of the repository on each agent + and use it in checkout directory via mercurial share extension. +
+