changeset 878:593c37cb219d

Generate less garbage New instance of HgVcsRoot was created to fill attributes of each modification
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Fri, 03 Oct 2014 22:48:45 +0200
parents 45311425ee3c
children c0c1a3f4b6f7
files mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCollectChangesPolicy.java
diffstat 1 files changed, 12 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCollectChangesPolicy.java	Fri Oct 03 22:29:27 2014 +0200
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCollectChangesPolicy.java	Fri Oct 03 22:48:45 2014 +0200
@@ -198,7 +198,7 @@
     //that parents should be processed before children:
     Collections.sort(csets, ASCENDING_REV_NUMS);
     for (ChangeSet cset : csets) {
-      result.add(createModificationData(ctx, cset, root, checkoutRules));
+      result.add(createModificationData(ctx, cset, root, hgRoot, checkoutRules));
     }
     return result;
   }
@@ -242,9 +242,10 @@
   private ModificationData createModificationData(@NotNull final OperationContext ctx,
                                                   @NotNull final ChangeSet cset,
                                                   @NotNull final VcsRoot root,
+                                                  @NotNull final HgVcsRoot hgRoot,
                                                   @NotNull final CheckoutRules checkoutRules) throws VcsException {
     final ModificationData result = ModificationDataFactory.createModificationData(ctx, cset, root, checkoutRules);
-    result.setAttributes(getAttributes(ctx, root, result));
+    result.setAttributes(getAttributes(ctx, root, hgRoot, result));
     return result;
   }
 
@@ -351,19 +352,21 @@
 
 
   @NotNull
-  private Map<String, String> getAttributes(@NotNull OperationContext ctx, @NotNull VcsRoot mainRoot, @NotNull ModificationData m) throws VcsException {
+  private Map<String, String> getAttributes(@NotNull OperationContext ctx,
+                                            @NotNull VcsRoot mainRoot,
+                                            @NotNull HgVcsRoot mainHgRoot,
+                                            @NotNull ModificationData m) throws VcsException {
     Map<String, String> attributes = new HashMap<String, String>();
-    HgVcsRoot root = myHgVcsRootFactory.createHgRoot(mainRoot);
-    if (detectSubrepoChanges(root)) {
+    if (detectSubrepoChanges(mainHgRoot)) {
       try {
-        ServerHgRepo repo = myVcs.createRepo(ctx, root);
+        ServerHgRepo repo = myVcs.createRepo(ctx, mainHgRoot);
         SubrepoRevisionAttributesBuilder attrBuilder = new SubrepoRevisionAttributesBuilder();
         for (SubRepo s : repo.getSubrepositories(m).values()) {
           attrBuilder.addSubrepo(new SubrepoConfig(mainRoot)
-                  .setSubrepoPath(ctx.getStringFromPool(root.expandSubrepoPath(s.path())))
-                  .setSubrepoRootParamDiff(Constants.REPOSITORY_PROP, ctx.getStringFromPool(s.resolveUrl(root.getRepository())))
+                  .setSubrepoPath(ctx.getStringFromPool(mainHgRoot.expandSubrepoPath(s.path())))
+                  .setSubrepoRootParamDiff(Constants.REPOSITORY_PROP, ctx.getStringFromPool(s.resolveUrl(mainHgRoot.getRepository())))
                   .setSubrepoRootParamDiff("teamcity.internal.subrepo", "true")
-                  .setSubrepoRootParamDiff("teamcity.internal.subrepo.path", ctx.getStringFromPool(root.expandSubrepoPath(s.path())))
+                  .setSubrepoRootParamDiff("teamcity.internal.subrepo.path", ctx.getStringFromPool(mainHgRoot.expandSubrepoPath(s.path())))
                   .setSubrepoRevision(ctx.getStringFromPool(s.revision())));
         }
         attributes.putAll(attrBuilder.buildAttributes());