changeset 271:c0540bbe7c2a

Revert premature commit. Parents are not part of API yet
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Wed, 20 Jul 2011 17:40:04 +0400
parents 0af40adc4791
children 5fd8b9e79e5b
files mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialAgentSideVcsSupport.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/ChangeSet.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Init.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/InitCommand.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommand.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/ParentsCommand.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommandTest.java
diffstat 9 files changed, 48 insertions(+), 128 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialAgentSideVcsSupport.java	Wed Jul 20 15:10:49 2011 +0400
+++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialAgentSideVcsSupport.java	Wed Jul 20 17:40:04 2011 +0400
@@ -81,7 +81,7 @@
     try {
       logger.message("Init repository at " + workingDir.getAbsolutePath());
       String defaultPullUrl = getDefaultPullUrl(settings, useLocalMirrors);
-      new InitCommand(settings, workingDir, defaultPullUrl).execute();
+      new Init(settings, workingDir, defaultPullUrl).execute();
     } catch (IOException e) {
       throw new VcsException("Error while initializing repository at " + workingDir.getAbsolutePath(), e);
     }
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/ChangeSet.java	Wed Jul 20 15:10:49 2011 +0400
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/ChangeSet.java	Wed Jul 20 17:40:04 2011 +0400
@@ -16,6 +16,7 @@
 package jetbrains.buildServer.buildTriggers.vcs.mercurial.command;
 
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -29,7 +30,7 @@
   @NotNull private Date myTimestamp;
   private String myDescription;
   private boolean myContainsFiles;
-  private List<ChangeSetRevision> myParents = new ArrayList<ChangeSetRevision>();
+  private List<ChangeSetRevision> myParents;
 
   public ChangeSet(final int revNumber, @NotNull final String id) {
     super(revNumber, id);
@@ -59,11 +60,10 @@
     myContainsFiles = containsFiles;
   }
 
-  public void clearParents() {
-    myParents.clear();
-  }
-
   public void addParent(@NotNull ChangeSetRevision rev) {
+    if (myParents == null) {
+      myParents = new ArrayList<ChangeSetRevision>();
+    }
     myParents.add(rev);
   }
 
@@ -94,10 +94,10 @@
   }
 
   /**
-   * Returns parents of this change set (empty list for initial commit).
+   * Returns parrents of this change set, or null if there were no parents.
    * @return see above
    */
-  @NotNull
+  @Nullable
   public List<ChangeSetRevision> getParents() {
     return myParents;
   }
@@ -116,6 +116,6 @@
    * @return true if changeset is initial changeset
    */
   public boolean isInitial() {
-    return getParents().isEmpty();
+    return getParents() == null;
   }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Init.java	Wed Jul 20 17:40:04 2011 +0400
@@ -0,0 +1,36 @@
+package jetbrains.buildServer.buildTriggers.vcs.mercurial.command;
+
+import com.intellij.execution.configurations.GeneralCommandLine;
+import jetbrains.buildServer.util.FileUtil;
+import jetbrains.buildServer.vcs.VcsException;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.File;
+
+/**
+ * @author dmitry.neverov
+ */
+public class Init extends BaseCommand {
+
+  private final String myDefaultPullUrl;
+
+  public Init(@NotNull final Settings settings, @NotNull File workingDir, @NotNull String defaultPullUrl) {
+    super(settings, workingDir);
+    myDefaultPullUrl = defaultPullUrl;
+  }
+
+  public void execute() throws VcsException {
+    new File(getWorkDirectory()).mkdirs();
+    GeneralCommandLine cli = createCommandLine();
+    cli.addParameter("init");
+    runCommand(cli);
+    writeDefaultPath();
+  }
+
+
+  private void writeDefaultPath() {
+    File hgrc = new File(new File(getWorkDirectory(), ".hg"), "hgrc");
+    String content = "[paths]\ndefault = " + myDefaultPullUrl;
+    FileUtil.writeFile(hgrc, content);
+  }
+}
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/InitCommand.java	Wed Jul 20 15:10:49 2011 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-package jetbrains.buildServer.buildTriggers.vcs.mercurial.command;
-
-import com.intellij.execution.configurations.GeneralCommandLine;
-import jetbrains.buildServer.util.FileUtil;
-import jetbrains.buildServer.vcs.VcsException;
-import org.jetbrains.annotations.NotNull;
-
-import java.io.File;
-
-/**
- * @author dmitry.neverov
- */
-public class InitCommand extends BaseCommand {
-
-  private final String myDefaultPullUrl;
-
-  public InitCommand(@NotNull final Settings settings, @NotNull File workingDir, @NotNull String defaultPullUrl) {
-    super(settings, workingDir);
-    myDefaultPullUrl = defaultPullUrl;
-  }
-
-  public void execute() throws VcsException {
-    new File(getWorkDirectory()).mkdirs();
-    GeneralCommandLine cli = createCommandLine();
-    cli.addParameter("init");
-    runCommand(cli);
-    writeDefaultPath();
-  }
-
-
-  private void writeDefaultPath() {
-    File hgrc = new File(new File(getWorkDirectory(), ".hg"), "hgrc");
-    String content = "[paths]\ndefault = " + myDefaultPullUrl;
-    FileUtil.writeFile(hgrc, content);
-  }
-}
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommand.java	Wed Jul 20 15:10:49 2011 +0400
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommand.java	Wed Jul 20 17:40:04 2011 +0400
@@ -103,11 +103,9 @@
     List<ChangeSet> result = new ArrayList<ChangeSet>();
     String[] lines = stdout.split("\n");
     ChangeSet current = null;
-    ChangeSet prev = null;
     int lineNum = 0;
     boolean insideDescription = false;
     StringBuilder descr = new StringBuilder();
-    boolean useTrivialParent = false;
     while (lineNum < lines.length) {
       String line = lines[lineNum];
       lineNum++;
@@ -119,14 +117,9 @@
           descr.setLength(0);
         }
 
-        prev = current;
         String revAndId = line.substring(CHANGESET_PREFIX.length()).trim();
         try {
           current = new ChangeSet(revAndId);
-          if (prev != null) {
-            current.addParent(prev);
-            useTrivialParent = true;
-          }
           result.add(current);
         } catch (IllegalArgumentException e) {
           LOG.warn("Unable to extract changeset id from the line: " + line);
@@ -149,10 +142,6 @@
 
       if (line.startsWith(PARENT_PREFIX)) {
         String parentRev = line.substring(PARENT_PREFIX.length()).trim();
-        if (useTrivialParent) {
-          current.clearParents();
-          useTrivialParent = false;
-        }
         current.addParent(new ChangeSetRevision(parentRev));
         continue;
       }
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/ParentsCommand.java	Wed Jul 20 15:10:49 2011 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-package jetbrains.buildServer.buildTriggers.vcs.mercurial.command;
-
-import com.intellij.execution.configurations.GeneralCommandLine;
-import jetbrains.buildServer.ExecResult;
-import jetbrains.buildServer.util.StringUtil;
-import jetbrains.buildServer.vcs.VcsException;
-import org.jetbrains.annotations.NotNull;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * @author dmitry.neverov
- */
-public class ParentsCommand extends BaseCommand {
-
-  private final String myRevision;
-
-
-  public ParentsCommand(@NotNull Settings settings, @NotNull File workingDir, @NotNull String revision) {
-    super(settings, workingDir);
-    myRevision = revision;
-  }
-
-
-  public List<String> execute() throws VcsException {
-    GeneralCommandLine cli = createCommandLine();
-    cli.addParameter("parents");
-    cli.addParameter("--template");
-    cli.addParameter("{rev}:{node|short}\n");
-    cli.addParameter("--rev");
-    cli.addParameter(myRevision);
-    ExecResult res = runCommand(cli);
-    return parseOutput(res.getStdout());
-  }
-
-
-  private List<String> parseOutput(String output) {
-    return Arrays.asList(StringUtil.splitByLines(output));
-  }
-}
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java	Wed Jul 20 15:10:49 2011 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java	Wed Jul 20 17:40:04 2011 +0400
@@ -571,8 +571,6 @@
           return result;
         }
 
-        setChangeSetParents(settings, workingDir, changeSets.get(0));
-
         // invoke status command for each changeset and determine what files were modified in these changesets
         StatusCommand st = new StatusCommand(settings, workingDir);
         ChangeSet prev = new ChangeSet(fromVersion);
@@ -581,8 +579,8 @@
 
           String prevId = prev.getId();
           List<ChangeSetRevision> curParents = cur.getParents();
-          boolean merge = curParents.size() > 1;
-          if (!merge) {
+          boolean merge = curParents != null && curParents.size() > 1;
+          if (curParents != null && !merge) {
             prevId = curParents.get(0).getId();
           }
 
@@ -600,9 +598,6 @@
           List<VcsChange> files = toVcsChanges(modifiedFiles, prev.getFullVersion(), cur.getFullVersion(), checkoutRules);
           if (files.isEmpty() && !merge) continue;
           ModificationData md = new ModificationData(cur.getTimestamp(), files, cur.getDescription(), cur.getUser(), root, cur.getFullVersion(), cur.getId());
-          for (ChangeSetRevision revision : cur.getParents()) {
-            md.addParentRevision(revision.getFullVersion());
-          }
           if (merge) {
             md.setCanBeIgnored(false);
           }
@@ -615,14 +610,6 @@
     };
   }
 
-  private void setChangeSetParents(Settings settings, File workingDir, ChangeSet cset) throws VcsException {
-    ParentsCommand parents = new ParentsCommand(settings, workingDir, cset.getFullVersion());
-    List<String> parentRevisions = parents.execute();
-    for (String parentRevision : parentRevisions) {
-      cset.addParent(new ChangeSet(parentRevision));
-    }
-  }
-
   @NotNull
   public BuildPatchPolicy getBuildPatchPolicy() {
     return new BuildPatchByCheckoutRules() {
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java	Wed Jul 20 15:10:49 2011 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java	Wed Jul 20 17:40:04 2011 +0400
@@ -456,20 +456,6 @@
   }
 
 
-  public void collected_changes_should_contain_parents() throws Exception {
-    VcsRootImpl vcsRoot = createVcsRoot(mergeCommittsRepo());
-    List<ModificationData> changes = collectChanges(vcsRoot, "0:e0ad3ddde5aa", "4:6eeb8974fe67", new CheckoutRules(""));
-    Map<String, List<String>> child2parent = new HashMap<String, List<String>>();
-    for (ModificationData change : changes) {
-      child2parent.put(change.getVersion(), change.getParentRevisions());
-    }
-    assertEquals(Arrays.asList("0:e0ad3ddde5aa"), child2parent.get("1:a3d15477d297"));
-    assertEquals(Arrays.asList("0:e0ad3ddde5aa"), child2parent.get("2:db8a04d262f3"));
-    assertEquals(Arrays.asList("2:db8a04d262f3"), child2parent.get("3:2538c02bafeb"));
-    assertEquals(Arrays.asList("1:a3d15477d297", "3:2538c02bafeb"), child2parent.get("4:6eeb8974fe67"));
-  }
-
-
   private void assertFiles(final List<String> expectedFiles, final ModificationData modificationData) {
     List<String> actualFiles = new ArrayList<String>();
     for (VcsChange vc: modificationData.getChanges()) {
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommandTest.java	Wed Jul 20 15:10:49 2011 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommandTest.java	Wed Jul 20 17:40:04 2011 +0400
@@ -42,7 +42,7 @@
     assertEquals(toId, changeSet.getId());
     assertEquals("pavel@localhost", changeSet.getUser());
     assertEquals("dir1 created", changeSet.getDescription());
-    assertTrue(changeSet.getParents().isEmpty());
+    assertNull(changeSet.getParents());
   }
 
   public void testMoreThanOneChangeSet() throws Exception {