Mercurial > hg > mercurial
view mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgTestConnectionSupport.java @ 1124:a14a2f7e74d8 development/2024.03.x tip
2024.03.x branch is created
author | Nadia Burnasheva <nadezhda.burnasheva@jetbrains.com> |
---|---|
date | Thu, 15 Feb 2024 11:33:35 +0100 |
parents | 7bf4d943d5bb |
children |
line wrap: on
line source
/* * Copyright 2000-2018 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jetbrains.buildServer.buildTriggers.vcs.mercurial; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.HgVcsRoot; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.exception.MercurialNotFoundException; import jetbrains.buildServer.vcs.TestConnectionSupport; import jetbrains.buildServer.vcs.VcsException; import jetbrains.buildServer.vcs.VcsRoot; import org.jetbrains.annotations.NotNull; import java.io.File; /** * @author dmitry.neverov */ public class HgTestConnectionSupport implements TestConnectionSupport { private final HgVcsRootFactory myHgVcsRootFactory; private final RepoFactory myRepoFactory; private final MirrorManager myMirrorManager; private final HgPathProvider myHgPathProvider; public HgTestConnectionSupport(@NotNull HgVcsRootFactory hgVcsRootFactory, @NotNull RepoFactory repoFactory, @NotNull MirrorManager mirrorManager, @NotNull HgPathProvider hgPathProvider) { myHgVcsRootFactory = hgVcsRootFactory; myRepoFactory = repoFactory; myMirrorManager = mirrorManager; myHgPathProvider = hgPathProvider; } public String testConnection(@NotNull VcsRoot vcsRoot) throws VcsException { final HgVcsRoot root = myHgVcsRootFactory.createHgRoot(vcsRoot); final HgRepo repo = createRepo(root); try { repo.id().repository(root.getRepository()) .withAuthSettings(root.getAuthSettings()) .call(); return null; } catch (MercurialNotFoundException e) { throw friendlyException(root, e); } } private VcsException friendlyException(HgVcsRoot root, MercurialNotFoundException e) { return new VcsException("Cannot find mercurial executable at path '" + myHgPathProvider.getHgPath(root) + "'", e); } @NotNull private HgRepo createRepo(HgVcsRoot root) throws VcsException { return myRepoFactory.createRepo(root, getWorkingDir(root)); } private File getWorkingDir(HgVcsRoot root) { File customDir = root.getCustomWorkingDir(); return customDir != null ? customDir : myMirrorManager.getMirrorDir(root.getRepository()); } }