changeset 554:110de749f460

Collect subrepo changes only if subrepo revision changed
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Wed, 27 Feb 2013 17:00:42 +0400
parents ccc305e56189
children 4f1c0ecc3371
files mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepo.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SubRepo.java
diffstat 2 files changed, 34 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepo.java	Mon Feb 25 18:43:55 2013 +0400
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepo.java	Wed Feb 27 17:00:42 2013 +0400
@@ -209,12 +209,16 @@
                                                               @NotNull Map<String, SubRepo> curSubrepos) {
     List<HgSubrepoConfigChange> configChanges = new ArrayList<HgSubrepoConfigChange>();
     for (Map.Entry<String, SubRepo> e : curSubrepos.entrySet()) {
+      String path = e.getKey();
       SubRepo curSubrepo = e.getValue();
       List<SubRepo> prevs = new ArrayList<SubRepo>();
       for (Map<String, SubRepo> prev : prevSubrepos) {
-        SubRepo prevSubrepo = prev.remove(e.getKey());
-        if (prevSubrepo != null)
-          prevs.add(prevSubrepo);
+        SubRepo prevSubrepo = prev.remove(path);
+        if (prevSubrepo == null) //no subrepo at this path in previous revision
+          continue;
+        if (prevSubrepo.equals(curSubrepo)) //subrepo configuration doesn't change since previous revision
+          continue;
+        prevs.add(prevSubrepo);
       }
       configChanges.add(new HgSubrepoConfigChange(e.getKey(), prevs, curSubrepo));
     }
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SubRepo.java	Mon Feb 25 18:43:55 2013 +0400
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SubRepo.java	Wed Feb 27 17:00:42 2013 +0400
@@ -85,4 +85,31 @@
   public static enum VcsType {
     hg, git, svn
   }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o)
+      return true;
+    if (!(o instanceof SubRepo))
+      return false;
+
+    SubRepo subRepo = (SubRepo) o;
+
+    if (!myPath.equals(subRepo.myPath))
+      return false;
+    if (!myRevision.equals(subRepo.myRevision))
+      return false;
+    if (!myUrl.equals(subRepo.myUrl))
+      return false;
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    int result = myPath.hashCode();
+    result = 31 * result + myUrl.hashCode();
+    result = 31 * result + myRevision.hashCode();
+    return result;
+  }
 }