Mercurial > hg > mercurial
changeset 456:f9bf9ec48347 Faradi-7.0.x
Option to force use of revsets for some vcs root
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Thu, 05 Jul 2012 19:07:01 +0400 |
parents | 5d4a7174c316 |
children | 33b9aab523af |
files | mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java |
diffstat | 6 files changed, 60 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java Tue Jul 03 18:49:51 2012 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java Thu Jul 05 19:07:01 2012 +0400 @@ -30,6 +30,7 @@ */ public class Settings { + private final VcsRoot myVcsRoot; private final HgPathProvider myHgPathProvider; private String myRepository; private String myHgCommandPath; @@ -44,6 +45,7 @@ private final AuthSettings myAuthSettings; public Settings(@NotNull final HgPathProvider hgPathProvider, @NotNull final VcsRoot vcsRoot) { + myVcsRoot = vcsRoot; myHgPathProvider = hgPathProvider; myRepository = vcsRoot.getProperty(Constants.REPOSITORY_PROP); myHgCommandPath = vcsRoot.getProperty(Constants.HG_COMMAND_PATH_PROP); @@ -56,6 +58,11 @@ myAuthSettings = new AuthSettings(myUsername, myPassword); } + @NotNull + public VcsRoot getVcsRoot() { + return myVcsRoot; + } + public String getCustomClonePath() { return myCustomClonePath; }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Tue Jul 03 18:49:51 2012 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Thu Jul 05 19:07:01 2012 +0400 @@ -611,7 +611,7 @@ String fromCommit = new ChangeSetRevision(fromVersion).getId(); String toCommit = new ChangeSetRevision(toVersion).getId(); try { - List<ChangeSet> changesets = createRepo(settings).collectChanges() + List<ChangeSet> changesets = createRepo(settings).collectChanges(settings) .fromRevision(fromCommit) .toRevision(toCommit) .call();
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java Tue Jul 03 18:49:51 2012 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java Thu Jul 05 19:07:01 2012 +0400 @@ -2,6 +2,8 @@ import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.*; import jetbrains.buildServer.vcs.VcsException; +import jetbrains.buildServer.vcs.VcsRoot; +import jetbrains.buildServer.vcs.VcsRootInstance; import org.jetbrains.annotations.NotNull; import java.io.File; @@ -40,9 +42,13 @@ } @NotNull - public CollectChangesCommand collectChanges() throws VcsException { - if (myConfig.dontUseRevsets()) + public CollectChangesCommand collectChanges(@NotNull Settings s) throws VcsException { + if (myConfig.dontUseRevsets()) { + VcsRoot root = s.getVcsRoot(); + if (shouldUseRevsetsFor(root)) + return new CollectChangesWithRevsets(this); return new CollectChangesNoRevsets(this, myLogNoFilesTemplate); + } HgVersion hgVersion = getHgVersion(); if (hgVersion.isEqualsOrGreaterThan(REVSET_HG_VERSION)) { @@ -55,4 +61,11 @@ private HgVersion getHgVersion() throws VcsException { return version().call(); } + + private boolean shouldUseRevsetsFor(@NotNull VcsRoot root) { + if (!(root instanceof VcsRootInstance)) + return false; + long parentId = ((VcsRootInstance) root).getParentId(); + return myConfig.getRevsetParentRootIds().contains(parentId); + } }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java Tue Jul 03 18:49:51 2012 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java Thu Jul 05 19:07:01 2012 +0400 @@ -1,7 +1,10 @@ package jetbrains.buildServer.buildTriggers.vcs.mercurial; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Set; + /** * @author dmitry.neverov */ @@ -17,4 +20,7 @@ public boolean dontUseRevsets(); public boolean checkRemoteRepositoryUpdateBeforePull(); + + @NotNull + Set<Long> getRevsetParentRootIds(); }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java Tue Jul 03 18:49:51 2012 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java Thu Jul 05 19:07:01 2012 +0400 @@ -1,17 +1,24 @@ package jetbrains.buildServer.buildTriggers.vcs.mercurial; +import com.intellij.openapi.diagnostic.Logger; import jetbrains.buildServer.serverSide.ServerPaths; import jetbrains.buildServer.serverSide.TeamCityProperties; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.File; +import java.util.HashSet; +import java.util.Set; + +import static com.intellij.openapi.util.text.StringUtil.isEmpty; +import static java.util.Collections.emptySet; /** * @author dmitry.neverov */ public class ServerPluginConfigImpl implements ServerPluginConfig { + private static final Logger LOG = Logger.getInstance(ServerPluginConfigImpl.class.getName()); private static final String PULL_TIMEOUT_SECONDS = "teamcity.hg.pull.timeout.seconds"; public static final int DEFAULT_PULL_TIMEOUT_SECONDS = 3600; @@ -47,4 +54,21 @@ public boolean checkRemoteRepositoryUpdateBeforePull() { return TeamCityProperties.getBoolean("teamcity.hg.check.repository.updated.before.pull"); } + + @NotNull + public Set<Long> getRevsetParentRootIds() { + String parentRootIds = TeamCityProperties.getProperty("teamcity.hg.use.revsets.root.ids", ""); + if (isEmpty(parentRootIds)) + return emptySet(); + + Set<Long> ids = new HashSet<Long>(); + for (String parentRootId : parentRootIds.split(",")) { + try { + ids.add(Long.parseLong(parentRootId)); + } catch (Exception e) { + LOG.warn("Cannot parse rootId \"" + parentRootId + "\", ignore it"); + } + } + return ids; + } }
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java Tue Jul 03 18:49:51 2012 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java Thu Jul 05 19:07:01 2012 +0400 @@ -3,6 +3,8 @@ import org.jetbrains.annotations.NotNull; import java.io.File; +import java.util.HashSet; +import java.util.Set; /** * @author dmitry.neverov @@ -45,6 +47,11 @@ public boolean checkRemoteRepositoryUpdateBeforePull() { return myCheckRemoteRepositoryUpdatedBeforePull; } + + @NotNull + public Set<Long> getRevsetParentRootIds() { + return new HashSet<Long>(); + } }; }