changeset 354:5b3280c0fb2f

TW-19781 do clone instead of pull
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Mon, 23 Jan 2012 13:21:27 +0400
parents 15c86ab0046c
children 69d66e4f60e3
files mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java
diffstat 1 files changed, 19 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java	Wed Jan 18 14:03:35 2012 +0400
+++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java	Mon Jan 23 13:21:27 2012 +0400
@@ -20,6 +20,7 @@
 
 import static com.intellij.openapi.util.io.FileUtil.delete;
 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.command.CommandUtil.removePrivateData;
+import static jetbrains.buildServer.util.FileUtil.isEmptyDir;
 
 /**
  * @author dmitry.neverov
@@ -92,15 +93,26 @@
 
 
   private void updateRepository(File workingDir) throws VcsException, IOException {
-    if (!Settings.isValidRepository(workingDir)) {
-      initRepository(mySettings, workingDir, myUseLocalMirrors);
+    String defaultPullUrl = getDefaultPullUrl(mySettings, myUseLocalMirrors);
+    if (isEmptyDir(workingDir)) {
+      workingDir.mkdirs();
+      myLogger.message("Start cloning from " + removePrivateData(defaultPullUrl, Collections.singleton(mySettings.getPassword())));
+      CloneCommand clone = new CloneCommand(mySettings, workingDir);
+      clone.setRepository(defaultPullUrl);
+      clone.setUsePullProtocol(false);
+      clone.setUpdateWorkingDir(false);
+      clone.execute();
+      myLogger.message("Repository successfully cloned");
     } else {
-      ensureUseRightRepository(workingDir);
+      if (!Settings.isValidRepository(workingDir)) {
+        initRepository(mySettings, workingDir, myUseLocalMirrors);
+      } else {
+        ensureUseRightRepository(workingDir);
+      }
+      myLogger.message("Start pulling changes from " + removePrivateData(defaultPullUrl, Collections.singleton(mySettings.getPassword())));
+      new PullCommand(mySettings, workingDir, defaultPullUrl).execute(myPullTimeout);
+      myLogger.message("Changes successfully pulled");
     }
-    String defaultPullUrl = getDefaultPullUrl(mySettings, myUseLocalMirrors);
-    myLogger.message("Start pulling changes from " + removePrivateData(defaultPullUrl, Collections.singleton(mySettings.getPassword())));
-    new PullCommand(mySettings, workingDir, defaultPullUrl).execute(myPullTimeout);
-    myLogger.message("Changes successfully pulled");
   }