Mercurial > hg > mercurial
changeset 547:42aeecf691f9
Introduce OperationContext
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Thu, 21 Feb 2013 17:40:32 +0400 |
parents | dc7aae21ef23 |
children | 6c8911ed66f2 |
files | mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/OperationContext.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java |
diffstat | 2 files changed, 49 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/OperationContext.java Thu Feb 21 17:40:32 2013 +0400 @@ -0,0 +1,42 @@ +package jetbrains.buildServer.buildTriggers.vcs.mercurial; + +import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.HgVcsRoot; +import jetbrains.buildServer.vcs.VcsException; +import org.jetbrains.annotations.NotNull; + +import java.io.File; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class OperationContext { + + private final MercurialVcsSupport myVcs; + private Set<File> mySyncedDirs = new HashSet<File>(); + private Map<String, HgVersion> myHgVersions = new HashMap<String, HgVersion>(); + + public OperationContext(@NotNull MercurialVcsSupport vcs) { + myVcs = vcs; + } + + + public void syncRepository(@NotNull final HgVcsRoot root) throws VcsException { + File dir = myVcs.getWorkingDir(root); + if (mySyncedDirs.contains(dir)) + return; + myVcs.syncRepository(root); + mySyncedDirs.add(dir); + } + + @NotNull + public HgVersion getHgVersion(@NotNull ServerHgRepo repo) throws VcsException { + String hgPath = repo.getHgPath(); + HgVersion cachedVersion = myHgVersions.get(hgPath); + if (cachedVersion != null) + return cachedVersion; + HgVersion version = repo.version().call(); + myHgVersions.put(hgPath, version); + return version; + } +}
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java Thu Feb 21 17:35:17 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java Thu Feb 21 17:40:32 2013 +0400 @@ -18,6 +18,7 @@ private final ServerPluginConfig myConfig; private File myLogTemplate; private File myLogNoFilesTemplate; + private OperationContext myContext; public ServerHgRepo(@NotNull CommandSettingsFactory commandSettingsFactory, @NotNull ServerPluginConfig config, @@ -29,6 +30,10 @@ myConfig = config; } + public void setOperationContext(@NotNull OperationContext context) { + myContext = context; + } + public ServerHgRepo withLogTemplates(@NotNull File logTemplate, @NotNull File logNoFilesTemplate) { myLogTemplate = logTemplate; myLogNoFilesTemplate = logNoFilesTemplate; @@ -64,6 +69,8 @@ } private HgVersion getHgVersion() throws VcsException { + if (myContext != null) + return myContext.getHgVersion(this); return version().call(); }