Mercurial > hg > mercurial
changeset 692:dd11376b5f4a
hg => new API
author | eugene.petrenko@gmail.com |
---|---|
date | Thu, 19 Dec 2013 19:16:28 +0100 |
parents | d4ef6a366768 |
children | 2c9f7f6d8a12 |
files | mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialModificationInfoBuilder.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialModificationInfoBuilderTest.java |
diffstat | 2 files changed, 44 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialModificationInfoBuilder.java Thu Dec 19 19:10:00 2013 +0100 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialModificationInfoBuilder.java Thu Dec 19 19:16:28 2013 +0100 @@ -1,12 +1,14 @@ package jetbrains.buildServer.buildTriggers.vcs.mercurial; +import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.ChangeSet; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.HgVcsRoot; import jetbrains.buildServer.vcs.*; import org.jetbrains.annotations.NotNull; -import java.util.*; +import java.util.Collection; +import java.util.Collections; -public class MercurialModificationInfoBuilder implements ModificationInfoBuilder, MercurialServerExtension { +public class MercurialModificationInfoBuilder implements ChangesInfoBuilder, MercurialServerExtension { private final MercurialVcsSupport myVcs; private final HgVcsRootFactory myHgVcsRootFactory; @@ -24,27 +26,23 @@ myVcs.addExtension(this); } - @NotNull - public List<ModificationData> fetchModificationInfo(@NotNull VcsRoot root, - @NotNull RepositoryStateData state, - @NotNull CheckoutRules checkoutRules) throws VcsException { - HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(root); + public void fetchChangesInfo(@NotNull final VcsRoot root, + @NotNull final CheckoutRules checkoutRules, + @NotNull final Collection<String> revisions, + @NotNull final ChangesConsumer consumer) throws VcsException { + final HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(root); myVcs.syncRepository(hgRoot); - final List<ModificationData> changes = new ArrayList<ModificationData>(); - for (Map.Entry<String, String> e : state.getBranchRevisions().entrySet()) { - final String commitId = e.getValue(); - final RepositoryStateData oneStateData = RepositoryStateData.createVersionState(e.getKey(), commitId); - - final List<String> parents = myVcs.createRepo(hgRoot).parents().ofRevision(commitId).call(); - if (parents.isEmpty()) continue; + final OperationContext ctx = new OperationContext(myVcs, + myRepoFactory, + myHgPathProvider, + Collections.<String>emptyList(), + RepositoryStateData.createVersionState("", Collections.<String, String>emptyMap())); - final OperationContext ctx = new OperationContext(myVcs, myRepoFactory, myHgPathProvider, parents, oneStateData); - changes.addAll(myVcs.getCollectChangesPolicy().collectChanges(ctx, root, parents, commitId, checkoutRules)); + for (String commitId : revisions) { + for (ChangeSet set : myVcs.createRepo(hgRoot).log().withRevsets(commitId).call()) { + consumer.consumeChange(ModificationDataFactory.createModificationData(ctx, set, root, checkoutRules)); + } } - - return changes; } - - }
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialModificationInfoBuilderTest.java Thu Dec 19 19:10:00 2013 +0100 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialModificationInfoBuilderTest.java Thu Dec 19 19:16:28 2013 +0100 @@ -1,21 +1,22 @@ package jetbrains.buildServer.buildTriggers.vcs.mercurial; +import jetbrains.buildServer.vcs.ChangesConsumer; import jetbrains.buildServer.vcs.CheckoutRules; -import jetbrains.buildServer.vcs.ModificationData; -import jetbrains.buildServer.vcs.RepositoryStateData; import jetbrains.buildServer.vcs.VcsRoot; +import jetbrains.vcs.api.ChangeData; +import org.jetbrains.annotations.NotNull; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.io.File; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import static jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialSupportBuilder.mercurialSupport; import static jetbrains.buildServer.buildTriggers.vcs.mercurial.ServerPluginConfigBuilder.serverPluginConfig; import static jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsRootBuilder.vcsRoot; -import static jetbrains.buildServer.util.Util.map; import static org.testng.AssertJUnit.assertEquals; @RequiredHgVersion(min = "1.7.0") @@ -43,11 +44,14 @@ public void should_return_commits_for_every_revision_in_state(HgVersion _) throws Exception { VcsRoot root = vcsRoot().withUrl(myRemoteRepository.getAbsolutePath()).build(); - RepositoryStateData state = RepositoryStateData.createVersionState("default", - map("default", "505c5b9d01e6", "personal-branch", "9ec402c74298")); - List<ModificationData> changes = myModInfoBuilder.fetchModificationInfo(root, state, CheckoutRules.DEFAULT); + final List<ChangeData> changes = new ArrayList<ChangeData>(); + myModInfoBuilder.fetchChangesInfo(root, CheckoutRules.DEFAULT, Arrays.asList("505c5b9d01e6", "9ec402c74298"), new ChangesConsumer() { + public void consumeChange(@NotNull ChangeData change) { + changes.add(change); + } + }); - for (ModificationData change : changes) { + for (ChangeData change : changes) { if (change.getVersion().equals("505c5b9d01e6")) { Assert.assertEquals(change.getParentRevisions(), Arrays.asList("78e67807f916")); } else if (change.getVersion().equals("9ec402c74298")) { @@ -63,11 +67,14 @@ public void should_return_commits_for_every_revision_in_state_parent_child(HgVersion _) throws Exception { VcsRoot root = vcsRoot().withUrl(myRemoteRepository.getAbsolutePath()).build(); - RepositoryStateData state = RepositoryStateData.createVersionState("default", - map("default", "505c5b9d01e6", "personal-branch", "9ec402c74298", "x", "96b78d73081d")); - List<ModificationData> changes = myModInfoBuilder.fetchModificationInfo(root, state, CheckoutRules.DEFAULT); + final List<ChangeData> changes = new ArrayList<ChangeData>(); + myModInfoBuilder.fetchChangesInfo(root, CheckoutRules.DEFAULT, Arrays.asList("505c5b9d01e6", "9ec402c74298", "96b78d73081d"), new ChangesConsumer() { + public void consumeChange(@NotNull ChangeData change) { + changes.add(change); + } + }); - for (ModificationData change : changes) { + for (ChangeData change : changes) { if (change.getVersion().equals("505c5b9d01e6")) { Assert.assertEquals(change.getParentRevisions(), Arrays.asList("78e67807f916")); } else if (change.getVersion().equals("9ec402c74298")) { @@ -84,11 +91,15 @@ public void should_return_commits_for_every_revision_in_state_parent_gap_child(HgVersion _) throws Exception { VcsRoot root = vcsRoot().withUrl(myRemoteRepository.getAbsolutePath()).build(); - RepositoryStateData state = RepositoryStateData.createVersionState("default", - map("default", "505c5b9d01e6", "personal-branch", "9ec402c74298", "x", "dec47d2d49bf")); - List<ModificationData> changes = myModInfoBuilder.fetchModificationInfo(root, state, CheckoutRules.DEFAULT); + final List<ChangeData> changes = new ArrayList<ChangeData>(); + myModInfoBuilder.fetchChangesInfo(root, CheckoutRules.DEFAULT, Arrays.asList("505c5b9d01e6", "9ec402c74298", "dec47d2d49bf"), new ChangesConsumer() { + public void consumeChange(@NotNull ChangeData change) { + changes.add(change); + } + }); - for (ModificationData change : changes) { + + for (ChangeData change : changes) { if (change.getVersion().equals("505c5b9d01e6")) { Assert.assertEquals(change.getParentRevisions(), Arrays.asList("78e67807f916")); } else if (change.getVersion().equals("9ec402c74298")) {