# HG changeset patch # User Pavel.Sher # Date 1220708788 -14400 # Node ID 4059fcc5473eb8394f633e009d45c46e18246014 # Parent 1490e298179965a3552bcdd57d34870d4fb78aa6 ask for credentials on mercurial settings page diff -r 1490e2981799 -r 4059fcc5473e mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Constants.java --- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Constants.java Fri Sep 05 01:15:29 2008 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Constants.java Sat Sep 06 17:46:28 2008 +0400 @@ -15,9 +15,12 @@ */ package jetbrains.buildServer.buildTriggers.vcs.mercurial; +import jetbrains.buildServer.vcs.VcsRoot; + public interface Constants { String VCS_NAME = "mercurial"; String REPOSITORY_PROP = "repositoryPath"; String HG_COMMAND_PATH_PROP = "hgCommandPath"; - String PUSH_URL = "pushUrl"; + String USERNAME = "username"; + String PASSWORD = VcsRoot.SECURE_PROPERTY_PREFIX + "password"; } diff -r 1490e2981799 -r 4059fcc5473e mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java --- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java Fri Sep 05 01:15:29 2008 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java Sat Sep 06 17:46:28 2008 +0400 @@ -17,13 +17,15 @@ import jetbrains.buildServer.buildTriggers.vcs.mercurial.Constants; import jetbrains.buildServer.buildTriggers.vcs.mercurial.PathUtil; -import jetbrains.buildServer.vcs.VcsRoot; +import jetbrains.buildServer.util.FileUtil; import jetbrains.buildServer.util.Hash; -import jetbrains.buildServer.util.FileUtil; import jetbrains.buildServer.util.StringUtil; +import jetbrains.buildServer.vcs.VcsRoot; import org.jetbrains.annotations.NotNull; import java.io.File; +import java.util.Set; +import java.util.HashSet; /** * Represents Mercurial repository settings @@ -33,13 +35,16 @@ private String myHgCommandPath; private File myWorkingDir; private File myWorkFolderParentDir; - private String myPushUrl; + private String myUsername; + private String myPassword; public Settings(@NotNull File workFolderParentDir, @NotNull VcsRoot vcsRoot) { myWorkFolderParentDir = workFolderParentDir; setRepository(vcsRoot.getProperty(Constants.REPOSITORY_PROP)); setHgCommandPath(vcsRoot.getProperty(Constants.HG_COMMAND_PATH_PROP)); - myPushUrl = vcsRoot.getProperty(Constants.PUSH_URL); + + myUsername = vcsRoot.getProperty(Constants.USERNAME); + myPassword = vcsRoot.getProperty(Constants.PASSWORD); } public Settings() { @@ -67,12 +72,34 @@ return myHgCommandPath; } + private final static Set AUTH_PROTOS = new HashSet(); + static { + AUTH_PROTOS.add("http://"); + AUTH_PROTOS.add("https://"); + AUTH_PROTOS.add("ssh://"); + } + /** - * Returns URL to use for push command if it was specified or repository path otherwise - * @return URL to use for push command if it was specified or repository path otherwise + * Returns URL to use for push command + * @return URL to use for push command */ public String getPushUrl() { - return StringUtil.isEmpty(myPushUrl) ? getRepository() : myPushUrl; + String cre = ""; + if (!StringUtil.isEmpty(myUsername)) { + cre += myUsername; + if (!StringUtil.isEmpty(myPassword)) { + cre += ":" + myPassword; + } + cre += "@"; + } + + for (String proto: AUTH_PROTOS) { + if (myRepository.startsWith(proto)) { + return proto + cre + myRepository.substring(proto.length()); + } + } + + return myRepository; } public void setHgCommandPath(@NotNull final String hgCommandPath) { diff -r 1490e2981799 -r 4059fcc5473e mercurial-server/resources/buildServerResources/mercurialSettings.jsp --- a/mercurial-server/resources/buildServerResources/mercurialSettings.jsp Fri Sep 05 01:15:29 2008 +0400 +++ b/mercurial-server/resources/buildServerResources/mercurialSettings.jsp Sat Sep 06 17:46:28 2008 +0400 @@ -3,7 +3,7 @@ - + + + + + + + + + + + + + +
@@ -15,5 +15,18 @@
You may require to provide authorization settings if you need to tag / label sources in the remote repository.