# HG changeset patch # User Dmitry Neverov # Date 1308236444 -14400 # Node ID 73708ca4521f0b8c3e6dd5fc3adc729292b283dc # Parent 2c2a278ea51084570c57614465f4a745cd2f62a9 Add ability to disable pull protocol diff -r 2c2a278ea510 -r 73708ca4521f mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CloneCommand.java --- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CloneCommand.java Fri May 20 13:28:48 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"); } diff -r 2c2a278ea510 -r 73708ca4521f mercurial-server/src/META-INF/build-server-plugin-mercurial.xml --- a/mercurial-server/src/META-INF/build-server-plugin-mercurial.xml Fri May 20 13:28:48 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 @@ + diff -r 2c2a278ea510 -r 73708ca4521f mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java --- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Fri May 20 13:28:48 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 dispatcher) { + @NotNull final EventDispatcher 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); diff -r 2c2a278ea510 -r 73708ca4521f mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/PluginConfig.java --- /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(); + +} diff -r 2c2a278ea510 -r 73708ca4521f mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/PluginConfigImpl.java --- /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"); + } +} diff -r 2c2a278ea510 -r 73708ca4521f mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java --- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java Fri May 20 13:28:48 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; + } + }; + } }