changeset 258:0eed01dbf993

Add ability to disable pull protocol
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Thu, 16 Jun 2011 19:00:44 +0400
parents 3d1038cbb475
children b00f7c7d53e1
files mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CloneCommand.java mercurial-server/src/META-INF/build-server-plugin-mercurial.xml mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/PluginConfig.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/PluginConfigImpl.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java
diffstat 6 files changed, 46 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CloneCommand.java	Tue May 17 20:12:08 2011 +0400
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CloneCommand.java	Thu Jun 16 19:00:44 2011 +0400
@@ -27,6 +27,7 @@
   private boolean myUpdateWorkingDir = true;
   private String myRepository;
   private File myWorkingDir;
+  private boolean myUsePullProtocol = true;
 
   public CloneCommand(@NotNull Settings settings, @NotNull File workingDir) {
     super(settings, workingDir);
@@ -50,6 +51,10 @@
     myUpdateWorkingDir = updateWorkingDir;
   }
 
+  public void setUsePullProtocol(boolean usePullProtocol) {
+    myUsePullProtocol = usePullProtocol;
+  }
+
   public void execute() throws VcsException {
     GeneralCommandLine cli = createCommandLine();
     File parent = myWorkingDir.getParentFile();
@@ -59,7 +64,8 @@
       cli.addParameter("-r");
       cli.addParameter(myToId);
     }
-    cli.addParameter("--pull");
+    if (myUsePullProtocol)
+      cli.addParameter("--pull");
     if (!myUpdateWorkingDir) {
       cli.addParameter("-U");
     }
--- a/mercurial-server/src/META-INF/build-server-plugin-mercurial.xml	Tue May 17 20:12:08 2011 +0400
+++ b/mercurial-server/src/META-INF/build-server-plugin-mercurial.xml	Thu Jun 16 19:00:44 2011 +0400
@@ -3,4 +3,5 @@
 
 <beans default-autowire="constructor">
   <bean id="mercurialServer" class="jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialVcsSupport" />
+  <bean id="config" class="jetbrains.buildServer.buildTriggers.vcs.mercurial.PluginConfigImpl" />
 </beans>
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java	Tue May 17 20:12:08 2011 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java	Thu Jun 16 19:00:44 2011 +0400
@@ -58,14 +58,17 @@
   private VcsManager myVcsManager;
   private File myDefaultWorkFolderParent;
   private MirrorManager myMirrorManager;
+  private final PluginConfig myConfig;
 
   public MercurialVcsSupport(@NotNull final VcsManager vcsManager,
-                             @NotNull ServerPaths paths,
+                             @NotNull final ServerPaths paths,
                              @NotNull final SBuildServer server,
-                             @NotNull EventDispatcher<BuildServerListener> dispatcher) {
+                             @NotNull final EventDispatcher<BuildServerListener> dispatcher,
+                             @NotNull final PluginConfig config) {
     myVcsManager = vcsManager;
     myDefaultWorkFolderParent = new File(paths.getCachesDir(), "mercurial");
     myMirrorManager = new MirrorManager(myDefaultWorkFolderParent);
+    myConfig = config;
     dispatcher.addListener(new BuildServerAdapter() {
       @Override
       public void cleanupFinished() {
@@ -336,6 +339,7 @@
       cl.setRepository(mirrorDir.getAbsolutePath());
       cl.setToId(toVer.getId());
       cl.setUpdateWorkingDir(false);
+      cl.setUsePullProtocol(myConfig.isUsePullProtocol());
       cl.execute();
 
       UpdateCommand up = new UpdateCommand(settings, repRoot);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/PluginConfig.java	Thu Jun 16 19:00:44 2011 +0400
@@ -0,0 +1,10 @@
+package jetbrains.buildServer.buildTriggers.vcs.mercurial;
+
+/**
+ * @author dmitry.neverov
+ */
+public interface PluginConfig {
+
+  public boolean isUsePullProtocol();
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/PluginConfigImpl.java	Thu Jun 16 19:00:44 2011 +0400
@@ -0,0 +1,13 @@
+package jetbrains.buildServer.buildTriggers.vcs.mercurial;
+
+import jetbrains.buildServer.serverSide.TeamCityProperties;
+
+/**
+ * @author dmitry.neverov
+ */
+public class PluginConfigImpl implements PluginConfig {
+
+  public boolean isUsePullProtocol() {
+    return TeamCityProperties.getBooleanOrTrue("teamcity.hg.use.pull.protocol");
+  }
+}
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java	Tue May 17 20:12:08 2011 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java	Thu Jun 16 19:00:44 2011 +0400
@@ -60,7 +60,7 @@
     File systemDir = myTempFiles.createTempDir();
     myServerPaths = new ServerPaths(systemDir.getAbsolutePath(), systemDir.getAbsolutePath(), systemDir.getAbsolutePath());
     assertTrue(new File(myServerPaths.getCachesDir()).mkdirs());
-    myVcs = new MercurialVcsSupport((VcsManager)vcsManagerMock.proxy(), myServerPaths, (SBuildServer)serverMock.proxy(), dispatcher);
+    myVcs = new MercurialVcsSupport((VcsManager)vcsManagerMock.proxy(), myServerPaths, (SBuildServer)serverMock.proxy(), dispatcher, createPluginConfig());
   }
 
   protected String getTestDataPath() {
@@ -477,5 +477,13 @@
   public void test_collect_changes_using_checkout_rules() {
     assertTrue(myVcs.getCollectChangesPolicy() instanceof CollectChangesByCheckoutRules);
   }
+
+  private PluginConfig createPluginConfig() {
+    return new PluginConfig() {
+      public boolean isUsePullProtocol() {
+        return true;
+      }
+    };
+  }
 }