changeset 420:20f5eca6b8ec

Merge branch Faradi-7.0.x
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Thu, 26 Apr 2012 16:43:19 +0400
parents 74487e2c6356 (current diff) 743dc1646555 (diff)
children ef53ca83df1b
files
diffstat 8 files changed, 38 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommand.java	Tue Apr 17 16:39:32 2012 +0400
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommand.java	Thu Apr 26 16:43:19 2012 +0400
@@ -248,15 +248,29 @@
   }
 
   private void assignTrivialParents(final @NotNull List<ChangeSet> csets) throws VcsException {
+    Map<Integer, ChangeSet> revNumberMap = makeMapByRevNumber(csets);
     for (ChangeSet cset : csets) {
       if (cset.getParents().isEmpty()) {
         int parentRevNumber = cset.getRevNumber() - 1;
-        String parentId = getIdOf(parentRevNumber);
-        cset.addParent(new ChangeSetRevision(parentRevNumber, parentId));
+        ChangeSet parent = revNumberMap.get(parentRevNumber);
+        if (parent != null) {
+          cset.addParent(parent);
+        } else {
+          String parentId = getIdOf(parentRevNumber);
+          cset.addParent(new ChangeSetRevision(parentRevNumber, parentId));
+        }
       }
     }
   }
 
+  private Map<Integer, ChangeSet> makeMapByRevNumber(@NotNull List<ChangeSet> csets) throws VcsException {
+    Map<Integer, ChangeSet> csetMap = new HashMap<Integer, ChangeSet>();
+    for (ChangeSet cset : csets) {
+      csetMap.put(cset.getRevNumber(), cset);
+    }
+    return csetMap;
+  }
+
   private String getIdOf(int revNumber) throws VcsException {
     if (revNumber < 0)
       return ZERO_PARENT_ID;
--- a/mercurial-server/src/META-INF/build-server-plugin-mercurial.xml	Tue Apr 17 16:39:32 2012 +0400
+++ b/mercurial-server/src/META-INF/build-server-plugin-mercurial.xml	Thu Apr 26 16:43:19 2012 +0400
@@ -4,7 +4,7 @@
 <beans default-autowire="constructor">
   <bean id="mercurialServer" class="jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialVcsSupport" />
   <bean id="config" class="jetbrains.buildServer.buildTriggers.vcs.mercurial.ServerPluginConfigImpl" />
-  <bean id="commandFactory" class="jetbrains.buildServer.buildTriggers.vcs.mercurial.RepoFactory" />
+  <bean id="repoFactory" class="jetbrains.buildServer.buildTriggers.vcs.mercurial.RepoFactory" />
   <bean id="hgPathProvider" class="jetbrains.buildServer.buildTriggers.vcs.mercurial.ServerHgPathProvider"/>
   <bean id="mirrorManager" class="jetbrains.buildServer.buildTriggers.vcs.mercurial.MirrorManagerImpl" />
 </beans>
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/RepoFactory.java	Tue Apr 17 16:39:32 2012 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/RepoFactory.java	Thu Apr 26 16:43:19 2012 +0400
@@ -16,15 +16,17 @@
  */
 public final class RepoFactory {
 
+  private final ServerPluginConfig myConfig;
   private File myLogTemplate;
 
-  public RepoFactory() throws IOException {
+  public RepoFactory(@NotNull ServerPluginConfig config) throws IOException {
+    myConfig = config;
     myLogTemplate = createLogTemplate();
   }
 
   @NotNull
   public ServerHgRepo create(@NotNull File workingDir, @NotNull String hgPath, @NotNull AuthSettings authSettings) throws VcsException {
-    return new ServerHgRepo(workingDir, hgPath, authSettings).withLogTemplate(getTemplate());
+    return new ServerHgRepo(myConfig, workingDir, hgPath, authSettings).withLogTemplate(getTemplate());
   }
 
   public void dispose() {
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java	Tue Apr 17 16:39:32 2012 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java	Thu Apr 26 16:43:19 2012 +0400
@@ -12,10 +12,12 @@
 public class ServerHgRepo extends HgRepo {
 
   private final static HgVersion REVSET_HG_VERSION = new HgVersion(1, 7, 0);
+  private final ServerPluginConfig myConfig;
   private File myLogTemplate;
 
-  public ServerHgRepo(@NotNull File workingDir, @NotNull String hgPath, @NotNull AuthSettings authSettings) {
+  public ServerHgRepo(@NotNull ServerPluginConfig config, @NotNull File workingDir, @NotNull String hgPath, @NotNull AuthSettings authSettings) {
     super(workingDir, hgPath, authSettings);
+    myConfig = config;
   }
 
   public ServerHgRepo withLogTemplate(@NotNull File logTemplate) {
@@ -37,6 +39,9 @@
 
   @NotNull
   public CollectChangesCommand collectChanges() throws VcsException {
+    if (myConfig.dontUseRevsets())
+      return new CollectChangesNoRevsets(this);
+
     HgVersion hgVersion = getHgVersion();
     if (hgVersion.isEqualsOrGreaterThan(REVSET_HG_VERSION)) {
       return new CollectChangesWithRevsets(this);
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java	Tue Apr 17 16:39:32 2012 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java	Thu Apr 26 16:43:19 2012 +0400
@@ -13,4 +13,6 @@
   public boolean isUsePullProtocol();
 
   int getPullTimeout();
+
+  public boolean dontUseRevsets();
 }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java	Tue Apr 17 16:39:32 2012 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java	Thu Apr 26 16:43:19 2012 +0400
@@ -35,6 +35,10 @@
     return myCachesDir;
   }
 
+  public boolean dontUseRevsets() {
+    return TeamCityProperties.getBoolean("teamcity.hg.dont.use.revsets");
+  }
+
   public int getPullTimeout() {
     int timeout = TeamCityProperties.getInteger(PULL_TIMEOUT_SECONDS, DEFAULT_PULL_TIMEOUT_SECONDS);
     return timeout > 0 ? timeout : DEFAULT_PULL_TIMEOUT_SECONDS;
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java	Tue Apr 17 16:39:32 2012 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java	Thu Apr 26 16:43:19 2012 +0400
@@ -36,6 +36,10 @@
       public int getPullTimeout() {
         return ServerPluginConfigImpl.DEFAULT_PULL_TIMEOUT_SECONDS;
       }
+
+      public boolean dontUseRevsets() {
+        return false;
+      }
     };
   }
 
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Util.java	Tue Apr 17 16:39:32 2012 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Util.java	Thu Apr 26 16:43:19 2012 +0400
@@ -32,7 +32,7 @@
 
 
   public static MercurialVcsSupport createMercurialServerSupport(@NotNull Mockery context, ServerPluginConfig config) throws IOException {
-    return createMercurialServerSupport(context, config, new RepoFactory());
+    return createMercurialServerSupport(context, config, new RepoFactory(config));
   }