diff mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepo.java @ 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 6c8911ed66f2
children a7719626703d
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));
     }