Mercurial > hg > mercurial
changeset 514:89e9c06fbc76
Move TeamCity-specific logic to separate module
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Mon, 26 Nov 2012 13:23:43 +0400 |
parents | 575d716a6846 |
children | 4688509f4e3a |
files | .idea/compiler.xml mercurial-server-tc/src/META-INF/build-server-plugin-mercurial-tc.xml mercurial-server-tc/src/META-INF/do-not-load-in-vcs-mode mercurial-server-tc/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCleaner.java mercurial-server-tc/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialExtensionRegistry.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialSupportBuilder.java |
diffstat | 7 files changed, 58 insertions(+), 52 deletions(-) [+] |
line wrap: on
line diff
--- a/.idea/compiler.xml Fri Nov 16 16:44:51 2012 +0400 +++ b/.idea/compiler.xml Mon Nov 26 13:23:43 2012 +0400 @@ -19,6 +19,7 @@ <entry name="?*.jsp" /> <entry name="?*.tag" /> <entry name="?*.template" /> + <entry name="do-not-load-in-vcs-mode" /> </wildcardResourcePatterns> <annotationProcessing> <profile default="true" name="Default" enabled="false">
--- a/mercurial-server-tc/src/META-INF/build-server-plugin-mercurial-tc.xml Fri Nov 16 16:44:51 2012 +0400 +++ b/mercurial-server-tc/src/META-INF/build-server-plugin-mercurial-tc.xml Mon Nov 26 13:23:43 2012 +0400 @@ -2,5 +2,7 @@ <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans default-autowire="constructor"> + <bean class="jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialExtensionRegistry"/> <bean class="jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialBranchSupport"/> + <bean class="jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialCleaner"/> </beans>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial-server-tc/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCleaner.java Mon Nov 26 13:23:43 2012 +0400 @@ -0,0 +1,24 @@ +package jetbrains.buildServer.buildTriggers.vcs.mercurial; + +import jetbrains.buildServer.serverSide.BuildServerAdapter; +import jetbrains.buildServer.serverSide.BuildServerListener; +import jetbrains.buildServer.serverSide.SBuildServer; +import jetbrains.buildServer.util.EventDispatcher; +import jetbrains.buildServer.vcs.VcsManager; +import org.jetbrains.annotations.NotNull; + +public class MercurialCleaner implements MercurialServerExtension { + + public MercurialCleaner(@NotNull final SBuildServer server, + @NotNull final VcsManager vcsManager, + @NotNull final EventDispatcher<BuildServerListener> dispatcher, + @NotNull final ServerPluginConfig config, + @NotNull final MirrorManager mirrorManager) { + dispatcher.addListener(new BuildServerAdapter() { + @Override + public void cleanupFinished() { + server.getExecutor().submit(new Cleanup(vcsManager, mirrorManager, config)); + } + }); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial-server-tc/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialExtensionRegistry.java Mon Nov 26 13:23:43 2012 +0400 @@ -0,0 +1,13 @@ +package jetbrains.buildServer.buildTriggers.vcs.mercurial; + +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; + +public class MercurialExtensionRegistry { + + public MercurialExtensionRegistry(@NotNull MercurialVcsSupport vcs, + @NotNull Collection<MercurialServerExtension> extensions) { + vcs.setExtensions(extensions); + } +}
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Fri Nov 16 16:44:51 2012 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Mon Nov 26 13:23:43 2012 +0400 @@ -15,8 +15,6 @@ */ package jetbrains.buildServer.buildTriggers.vcs.mercurial; -import com.intellij.openapi.util.Trinity; -import jetbrains.buildServer.BuildAgent; import jetbrains.buildServer.Used; import jetbrains.buildServer.buildTriggers.vcs.AbstractVcsPropertiesProcessor; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.*; @@ -54,7 +52,6 @@ */ public class MercurialVcsSupport extends ServerVcsSupport implements LabelingSupport, VcsFileContentProvider, CollectChangesBetweenRoots, CollectChangesBetweenRepositories, BuildPatchByCheckoutRules { - private final VcsManager myVcsManager; private final MirrorManager myMirrorManager; private final ServerPluginConfig myConfig; private final HgPathProvider myHgPathProvider; @@ -63,52 +60,36 @@ private final FileFilter myIgnoreDotHgFilter = new IgnoreDotHgFilter(); private final FileFilter myAcceptAllFilter = new AcceptAllFilter(); private final HgTestConnectionSupport myTestConnection; - private final Collection<MercurialServerExtension> myExtensions; + private Collection<MercurialServerExtension> myExtensions; - public MercurialVcsSupport(@NotNull final VcsManager vcsManager, - @NotNull final SBuildServer server, - @NotNull final EventDispatcher<BuildServerListener> dispatcher, + public MercurialVcsSupport(@NotNull final EventDispatcher<ServerListener> dispatcher, @NotNull final ResetCacheRegister resetCacheHandlerManager, @NotNull final ServerPluginConfig config, @NotNull final HgPathProvider hgPathProvider, @NotNull final RepoFactory repoFactory, @NotNull final MirrorManager mirrorManager, @NotNull final HgVcsRootFactory hgVcsRootFactory, - @NotNull final HgTestConnectionSupport testConnection, - @NotNull final Collection<MercurialServerExtension> extensions) { - myVcsManager = vcsManager; + @NotNull final HgTestConnectionSupport testConnection) { myConfig = config; myMirrorManager = mirrorManager; myHgPathProvider = hgPathProvider; myRepoFactory = repoFactory; myHgVcsRootFactory = hgVcsRootFactory; myTestConnection = testConnection; - myExtensions = extensions; resetCacheHandlerManager.registerHandler(new MercurialResetCacheHandler(myMirrorManager)); - dispatcher.addListener(new BuildServerAdapter() { - @Override - public void cleanupFinished() { - server.getExecutor().submit(new Cleanup(myVcsManager, myMirrorManager, myConfig)); - } - + dispatcher.addListener(new ServerListenerAdapter() { @Override public void serverShutdown() { myRepoFactory.dispose(); } - - @Override - public void sourcesVersionReleased(@NotNull final BuildAgent agent) { - super.sourcesVersionReleased(agent); - server.getExecutor().submit(new Runnable() { - public void run() { - deleteWithLocking(myMirrorManager.getMirrors()); - } - }); - } }); logUsedHg(); } + public void setExtensions(@NotNull Collection<MercurialServerExtension> extensions) { + myExtensions = extensions; + } + private void logUsedHg() { String hgPath = myConfig.getHgPath(); if (hgPath != null) @@ -117,17 +98,6 @@ Loggers.VCS.info("Server-wide hg path is not set, will use path from the VCS root settings"); } - private void deleteWithLocking(Collection<File> filesForDelete) { - for (File f : filesForDelete) { - lockWorkDir(f); - try { - FileUtil.delete(f); - } finally { - unlockWorkDir(f); - } - } - } - private List<VcsChange> toVcsChanges(final List<FileStatus> modifiedFiles, String prevVer, String curVer, CheckoutRules rules) { List<VcsChange> files = new ArrayList<VcsChange>(); for (FileStatus mf: modifiedFiles) { @@ -451,10 +421,8 @@ Map<String, String> branchRevisions = getBranchesRevisions(hgRoot); String defaultBranchName = hgRoot.getBranchName(); if (branchRevisions.get(defaultBranchName) == null) { - VcsException e = new VcsException("Cannot find revision of the default branch '" + + throw new VcsException("Cannot find revision of the default branch '" + defaultBranchName + "' of vcs root " + LogUtil.describe(root)); - e.setRoot(root); - throw e; } return RepositoryStateData.createVersionState(defaultBranchName, branchRevisions); }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java Fri Nov 16 16:44:51 2012 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java Mon Nov 26 13:23:43 2012 +0400 @@ -1,6 +1,7 @@ package jetbrains.buildServer.buildTriggers.vcs.mercurial; import com.intellij.openapi.diagnostic.Logger; +import jetbrains.buildServer.serverSide.CachePaths; import jetbrains.buildServer.serverSide.ServerPaths; import jetbrains.buildServer.serverSide.TeamCityProperties; import org.jetbrains.annotations.NotNull; @@ -24,8 +25,8 @@ private final File myCachesDir; - public ServerPluginConfigImpl(@NotNull final ServerPaths paths) { - myCachesDir = new File(paths.getCachesDir(), "mercurial"); + public ServerPluginConfigImpl(@NotNull final CachePaths paths) { + myCachesDir = paths.getCacheDirectory("mercurial"); } public boolean isUsePullProtocol() {
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialSupportBuilder.java Fri Nov 16 16:44:51 2012 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialSupportBuilder.java Mon Nov 26 13:23:43 2012 +0400 @@ -4,6 +4,7 @@ import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.TestCommandSettingsFactory; import jetbrains.buildServer.serverSide.BuildServerListener; import jetbrains.buildServer.serverSide.SBuildServer; +import jetbrains.buildServer.serverSide.ServerListener; import jetbrains.buildServer.util.EventDispatcher; import jetbrains.buildServer.util.cache.ResetCacheHandler; import jetbrains.buildServer.util.cache.ResetCacheRegister; @@ -34,13 +35,7 @@ public MercurialVcsSupport build() throws IOException { if (myContext == null) myContext = new Mockery(); - VcsManager vcsManager = myContext.mock(VcsManager.class); - final SBuildServer server = myContext.mock(SBuildServer.class); - final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); - myContext.checking(new Expectations() {{ - allowing(server).getExecutor(); will(returnValue(executor)); - }}); - EventDispatcher<BuildServerListener> dispatcher = EventDispatcher.create(BuildServerListener.class); + EventDispatcher<ServerListener> dispatcher = EventDispatcher.create(ServerListener.class); myHgRootFactory = new HgVcsRootFactory(myConfig); MirrorManagerImpl mirrorManager = new MirrorManagerImpl(myConfig); ServerHgPathProvider hgPathProvider = new ServerHgPathProvider(myConfig); @@ -50,8 +45,10 @@ myContext.checking(new Expectations() {{ allowing(resetCacheManager).registerHandler(with(any(ResetCacheHandler.class))); }}); - return new MercurialVcsSupport(vcsManager, server, dispatcher, resetCacheManager, myConfig, hgPathProvider, - repoFactory, mirrorManager, myHgRootFactory, testConnection, myExtensions); + MercurialVcsSupport vcs = new MercurialVcsSupport(dispatcher, resetCacheManager, myConfig, hgPathProvider, + repoFactory, mirrorManager, myHgRootFactory, testConnection); + vcs.setExtensions(myExtensions); + return vcs; }