Mercurial > hg > mercurial
view mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java @ 399:45f25ca68312 Faradi-7.0.x
Support local mirrors for subrepos
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Fri, 02 Mar 2012 14:24:58 +0400 |
parents | 24d926f22e85 |
children | f9bf9ec48347 |
line wrap: on
line source
/* * Copyright 2000-2011 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.command; import jetbrains.buildServer.buildTriggers.vcs.mercurial.Constants; import jetbrains.buildServer.buildTriggers.vcs.mercurial.HgPathProvider; import jetbrains.buildServer.buildTriggers.vcs.mercurial.PathUtil; import jetbrains.buildServer.util.StringUtil; import jetbrains.buildServer.vcs.VcsRoot; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.File; /** * Represents Mercurial repository settings */ public class Settings { private final HgPathProvider myHgPathProvider; private String myRepository; private String myHgCommandPath; private File myCustomWorkingDir; private String myUsername; private String myPassword; private String myBranchName; private boolean myUncompressedTransfer = false; private static final String DEFAULT_BRANCH_NAME = "default"; private String myCustomClonePath; private final String myUserForTag; private final AuthSettings myAuthSettings; public Settings(@NotNull final HgPathProvider hgPathProvider, @NotNull final VcsRoot vcsRoot) { myHgPathProvider = hgPathProvider; myRepository = vcsRoot.getProperty(Constants.REPOSITORY_PROP); myHgCommandPath = vcsRoot.getProperty(Constants.HG_COMMAND_PATH_PROP); myBranchName = vcsRoot.getProperty(Constants.BRANCH_NAME_PROP); myCustomClonePath = vcsRoot.getProperty(Constants.SERVER_CLONE_PATH_PROP); myUsername = vcsRoot.getProperty(Constants.USERNAME); myPassword = vcsRoot.getProperty(Constants.PASSWORD); myUncompressedTransfer = "true".equals(vcsRoot.getProperty(Constants.UNCOMPRESSED_TRANSFER)); myUserForTag = vcsRoot.getProperty(Constants.USER_FOR_TAG); myAuthSettings = new AuthSettings(myUsername, myPassword); } public String getCustomClonePath() { return myCustomClonePath; } public String getRepository() { return myRepository; } /** * Returns name of the branch to use (returns 'default' if no branch specified) * @return see above */ @NotNull public String getBranchName() { return StringUtil.isEmpty(myBranchName) ? DEFAULT_BRANCH_NAME : myBranchName; } /** * Returns true if current branch is default branch * @return see above */ public boolean isDefaultBranch() { return getBranchName().equals(DEFAULT_BRANCH_NAME); } public boolean isUncompressedTransfer() { return myUncompressedTransfer; } /** * @return path to hg command taking into account server-wide/agent-wide settings */ @NotNull public String getHgCommandPath() { return myHgPathProvider.getHgPath(this); } /** * @return path to hg command as it is set in VCS root settings */ public String getHgPath() { return myHgCommandPath; } public String getUsername() { return myUsername; } public String getPassword() { return myPassword; } @Nullable public String getUserForTag() { return myUserForTag; } public String getRepositoryUrlWithCredentials() { return myAuthSettings.getRepositoryUrlWithCredentials(myRepository); } /** * Set custom working dir for vcs root. This option make sence only for server-side checkout * @param customWorkingDir custom working dir */ public void setCustomWorkingDir(@NotNull final File customWorkingDir) { myCustomWorkingDir = PathUtil.getCanonicalFile(customWorkingDir); } /** * Returns custom working dir for root or null if default working dir should be used. * This options make sence only with server-side checkout. * @return see above */ @Nullable public File getCustomWorkingDir() { return myCustomWorkingDir; } public AuthSettings getAuthSettings() { return myAuthSettings; } public static boolean isValidRepository(File dir) { // need better way to check that repository copy is ok return dir.isDirectory() && new File(dir, ".hg").isDirectory(); } }