# HG changeset patch # User Dmitry Neverov # Date 1361970042 -14400 # Node ID 110de749f460af877d081227d85c3980c52ef6b7 # Parent ccc305e561891e3197d656b12e6a417f9effe611 Collect subrepo changes only if subrepo revision changed diff -r ccc305e56189 -r 110de749f460 mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepo.java --- 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 curSubrepos) { List configChanges = new ArrayList(); for (Map.Entry e : curSubrepos.entrySet()) { + String path = e.getKey(); SubRepo curSubrepo = e.getValue(); List prevs = new ArrayList(); for (Map 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)); } diff -r ccc305e56189 -r 110de749f460 mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SubRepo.java --- 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; + } }