Mercurial > hg > mercurial
view mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/RepoFactory.java @ 448:d4c061183a5f
Merge Faradi-7.0.x
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Mon, 02 Jul 2012 16:26:50 +0400 |
parents | 6c43663744d9 |
children | efba721f9a1d |
line wrap: on
line source
package jetbrains.buildServer.buildTriggers.vcs.mercurial; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.AuthSettings; import jetbrains.buildServer.util.FileUtil; import jetbrains.buildServer.vcs.VcsException; import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.IOException; import static com.intellij.openapi.util.io.FileUtil.createTempFile; import static com.intellij.openapi.util.io.FileUtil.delete; /** * @author dmitry.neverov */ public final class RepoFactory { private final ServerPluginConfig myConfig; private File myLogTemplate; private File myLogNoFilesTemplate; public RepoFactory(@NotNull ServerPluginConfig config) throws IOException { myConfig = config; myLogTemplate = createLogTemplate(); myLogNoFilesTemplate = createLogNoFilesTemplate(); } @NotNull public ServerHgRepo create(@NotNull File workingDir, @NotNull String hgPath, @NotNull AuthSettings authSettings) throws VcsException { return new ServerHgRepo(myConfig, workingDir, hgPath, authSettings).withLogTemplates(getTemplate(), getLogNoFilesTemplate()); } public void dispose() { delete(myLogTemplate); } private File getTemplate() throws VcsException { if (myLogTemplate.isFile() && myLogTemplate.exists()) return myLogTemplate; try { myLogTemplate = createLogTemplate(); return myLogTemplate; } catch (IOException e) { throw new VcsException("Cannot create mercurial log template", e); } } private File getLogNoFilesTemplate() throws VcsException { if (myLogNoFilesTemplate.isFile() && myLogNoFilesTemplate.exists()) return myLogNoFilesTemplate; try { myLogNoFilesTemplate = createLogNoFilesTemplate(); return myLogNoFilesTemplate; } catch (IOException e) { throw new VcsException("Cannot create mercurial log template", e); } } private File createLogTemplate() throws IOException { File template = createTempFile("teamcity", "hg.log.template"); FileUtil.copyResource(RepoFactory.class, "/buildServerResources/log.template", template); return template; } private File createLogNoFilesTemplate() throws IOException { File template = createTempFile("teamcity", "hg.short.log.template"); FileUtil.copyResource(RepoFactory.class, "/buildServerResources/log.no.files.template", template); return template; } }