Mercurial > hg > mercurial
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; + } }