Mercurial > hg > mercurial
changeset 594:9cbf9205208e
Do not report subrepo config changes
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Fri, 26 Apr 2013 14:35:50 +0400 |
parents | ad112e314be5 |
children | f2a2bf159f4c |
files | mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCollectChangesPolicy.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SubrepoChangesTest.java |
diffstat | 2 files changed, 38 insertions(+), 63 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCollectChangesPolicy.java Thu Apr 25 20:54:42 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCollectChangesPolicy.java Fri Apr 26 14:35:50 2013 +0400 @@ -12,7 +12,6 @@ import java.util.*; import static java.util.Arrays.asList; -import static java.util.Collections.EMPTY_LIST; import static java.util.Collections.emptyList; import static java.util.Collections.emptyMap; @@ -300,7 +299,7 @@ if (!detectSubrepoChanges(hgRoot)) return emptyList(); - List<SubrepoConfigChange> subrepoConfigChanges = getSubrepoConfigChanges(changes); + List<SubrepoConfigChange> subrepoConfigChanges = getSubrepoConfigChanges(ctx, changes); List<ModificationData> subrepoChanges = new ArrayList<ModificationData>(); for (SubrepoConfigChange configChange : subrepoConfigChanges) { @@ -328,23 +327,44 @@ } - private List<SubrepoConfigChange> getSubrepoConfigChanges(@NotNull List<ModificationData> mainRootChanges) { + private List<SubrepoConfigChange> getSubrepoConfigChanges(@NotNull OperationContext ctx, @NotNull List<ModificationData> mainRootChanges) throws VcsException { List<SubrepoConfigChange> subrepoConfigChanges = new ArrayList<SubrepoConfigChange>(); for (ModificationData m : mainRootChanges) { - subrepoConfigChanges.addAll(getSubrepoConfigChanges(m)); + subrepoConfigChanges.addAll(getSubrepoConfigChanges(ctx, m)); } return subrepoConfigChanges; } - private List<SubrepoConfigChange> getSubrepoConfigChanges(@NotNull ModificationData m) { + @NotNull + private List<SubrepoConfigChange> getSubrepoConfigChanges(@NotNull OperationContext ctx, @NotNull ModificationData m) throws VcsException { List<SubrepoConfigChange> configChanges = new ArrayList<SubrepoConfigChange>(); - for (SubrepoConfigChange configChange : SubrepoConfigChangesAttributes.readSubrepoConfigChanges(m.getAttributes())) { - if (configChange.getSubrepoRootParams().isEmpty()) - continue; - if (configChange.getPreviousSubrepoRevisions().isEmpty()) - continue; - configChanges.add(configChange); + + HgVcsRoot mainRoot = myHgVcsRootFactory.createHgRoot(m.getVcsRoot()); + ServerHgRepo repo = myVcs.createRepo(ctx, mainRoot); + try { + for (HgSubrepoConfigChange c : repo.getSubrepoConfigChanges(m.getVersion(), m.getParentRevisions())) { + if (!(c.subrepoUrlChanged() || c.subrepoAdded() || c.subrepoRemoved())) { + SubRepo currentSubrepo = c.getCurrent(); + assert currentSubrepo != null; + String subrepoUrl = ctx.getStringFromPool(currentSubrepo.resolveUrl(mainRoot.getRepository())); + String curRevision = ctx.getStringFromPool(currentSubrepo.revision()); + List<String> prevRevisions = new ArrayList<String>(0); + for (SubRepo prevSubrepo : c.getPrevious()) { + prevRevisions.add(ctx.getStringFromPool(prevSubrepo.revision())); + } + String path = ctx.getStringFromPool(mainRoot.expandSubrepoPath(c.getPath())); + configChanges.add(new SubrepoConfigChange(mainRoot) + .setSubrepoPath(ctx.getStringFromPool(path)) + .setSubrepoRootParamDiff(Constants.REPOSITORY_PROP, subrepoUrl) + .setSubrepoRootParamDiff("teamcity.internal.subrepo", "true") + .setSubrepoRootParamDiff("teamcity.internal.subrepo.path", path) + .setCurrentSubrepoRevision(curRevision) + .setPreviousSubrepoRevisions(prevRevisions)); + } + } + } catch (URISyntaxException e) { + throw new VcsException(e); } return configChanges; } @@ -357,20 +377,14 @@ if (detectSubrepoChanges(root)) { try { ServerHgRepo repo = myVcs.createRepo(ctx, root); - SubrepoConfigChangesAttributes builder = new SubrepoConfigChangesAttributes(); - for (HgSubrepoConfigChange c : repo.getSubrepoConfigChanges(cset)) { - fillSubrepoConfigChanges(ctx, builder, root, c); - } - attributes.putAll(builder.buildAttributes()); - SubrepoRevisionAttributesBuilder attrBuilder = new SubrepoRevisionAttributesBuilder(); - for (HgSubrepoConfigChange c : repo.getSubrepoConfigChanges(cset)) { - if (!c.subrepoRemoved()) { - attrBuilder.addSubrepo(new SubrepoConfig(root) - .setSubrepoPath(root.expandSubrepoPath(c.getPath())) - .setSubrepoRootParamDiff(Constants.REPOSITORY_PROP, ctx.getStringFromPool(c.getCurrent().resolveUrl(root.getRepository()))) - .setSubrepoRevision(c.getCurrent().revision())); - } + for (SubRepo s : repo.getSubrepositories(cset).values()) { + attrBuilder.addSubrepo(new SubrepoConfig(root) + .setSubrepoPath(ctx.getStringFromPool(root.expandSubrepoPath(s.path()))) + .setSubrepoRootParamDiff(Constants.REPOSITORY_PROP, ctx.getStringFromPool(s.resolveUrl(root.getRepository()))) + .setSubrepoRootParamDiff("teamcity.internal.subrepo", "true") + .setSubrepoRootParamDiff("teamcity.internal.subrepo.path", ctx.getStringFromPool(root.expandSubrepoPath(s.path()))) + .setSubrepoRevision(ctx.getStringFromPool(s.revision()))); } attributes.putAll(attrBuilder.buildAttributes()); } catch (Exception e) { @@ -384,24 +398,4 @@ return emptyMap(); return attributes; } - - - private void fillSubrepoConfigChanges(@NotNull OperationContext ctx, - @NotNull SubrepoConfigChangesAttributes builder, - @NotNull HgVcsRoot mainRoot, - @NotNull HgSubrepoConfigChange c) throws URISyntaxException, VcsException { - List<String> prevRevisions = new ArrayList<String>(); - if (!(c.subrepoUrlChanged() || c.subrepoAdded() || c.subrepoRemoved())) { - String subrepoUrl = c.getCurrent().resolveUrl(mainRoot.getRepository()); - String curRevision = c.getCurrent().revision(); - for (SubRepo prevSubrepo : c.getPrevious()) { - prevRevisions.add(ctx.getStringFromPool(prevSubrepo.revision())); - } - builder.addSubrepoConfigChange(new SubrepoConfigChange(mainRoot) - .setSubrepoPath(ctx.getStringFromPool(mainRoot.expandSubrepoPath(c.getPath()))) - .setSubrepoRootParamDiff(Constants.REPOSITORY_PROP, ctx.getStringFromPool(subrepoUrl)) - .setCurrentSubrepoRevision(ctx.getStringFromPool(curRevision)) - .setPreviousSubrepoRevisions(prevRevisions)); - } - } }
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SubrepoChangesTest.java Thu Apr 25 20:54:42 2013 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SubrepoChangesTest.java Fri Apr 26 14:35:50 2013 +0400 @@ -126,25 +126,6 @@ } - public void report_subrepo_revision_changed(@NotNull HgVersion _) throws Exception { - ServerPluginConfig pluginConfig = new ServerPluginConfigBuilder() - .cachesDir(myTempFiles.createTempDir()) - .detectSubrepoChanges(true) - .build(); - myVcs = mercurialSupport().withConfig(pluginConfig).build(); - VcsRoot root = vcsRoot().withUrl(myRemoteRepo1.getAbsolutePath()).withSubrepoChanges(true).build(); - List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(root, "09c256b6163e", "d64d9799c143", CheckoutRules.DEFAULT); - ModificationData m = changes.get(0); - Map<String, String> attrs = m.getAttributes(); - List<SubrepoConfigChange> subrepoConfigChanges = SubrepoConfigChangesAttributes.readSubrepoConfigChanges(attrs); - assertEquals(1, subrepoConfigChanges.size()); - SubrepoConfigChange subrepoConfigChange = subrepoConfigChanges.get(0); - assertThat(subrepoConfigChange.getSubrepoPath(), is("r2")); - assertThat(subrepoConfigChange.getCurrentSubrepoRevision(), is("514c3e09cddf")); - assertThat(subrepoConfigChange.getPreviousSubrepoRevisions(), is(asList("ebb884b1b691"))); - } - - public void report_subrepo_changes(@NotNull HgVersion _) throws Exception { ServerPluginConfig pluginConfig = new ServerPluginConfigBuilder() .cachesDir(myTempFiles.createTempDir())