You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by oc...@apache.org on 2011/05/23 21:08:15 UTC
svn commit: r1126667 - in /continuum/trunk:
continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/
continuum-release/
continuum-release/src/main/java/org/apache/maven/continuum/release/phase/
Author: oching
Date: Mon May 23 19:08:15 2011
New Revision: 1126667
URL: http://svn.apache.org/viewvc?rev=1126667&view=rev
Log:
[CONTINUUM-2628]
o use credentials in scm url if specified on update working copy phase in continuum-release. otherwise, use scm credentials of project
Modified:
continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/ContinuumScmUtils.java
continuum/trunk/continuum-release/pom.xml
continuum/trunk/continuum-release/src/main/java/org/apache/maven/continuum/release/phase/UpdateWorkingCopyPhase.java
Modified: continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/ContinuumScmUtils.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/ContinuumScmUtils.java?rev=1126667&r1=1126666&r2=1126667&view=diff
==============================================================================
--- continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/ContinuumScmUtils.java (original)
+++ continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/ContinuumScmUtils.java Mon May 23 19:08:15 2011
@@ -10,7 +10,7 @@ import org.apache.maven.scm.provider.git
*/
public class ContinuumScmUtils
{
- private static final String GIT_SCM_PROVIDERTYPE = "git";
+ public static final String GIT_SCM_PROVIDERTYPE = "git";
// CONTINUUM-2628
public static ContinuumScmConfiguration setSCMCredentialsforSSH( ContinuumScmConfiguration config,
Modified: continuum/trunk/continuum-release/pom.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-release/pom.xml?rev=1126667&r1=1126666&r2=1126667&view=diff
==============================================================================
--- continuum/trunk/continuum-release/pom.xml (original)
+++ continuum/trunk/continuum-release/pom.xml Mon May 23 19:08:15 2011
@@ -54,6 +54,10 @@ under the License.
<artifactId>continuum-api</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.continuum</groupId>
+ <artifactId>continuum-scm</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-settings</artifactId>
</dependency>
Modified: continuum/trunk/continuum-release/src/main/java/org/apache/maven/continuum/release/phase/UpdateWorkingCopyPhase.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-release/src/main/java/org/apache/maven/continuum/release/phase/UpdateWorkingCopyPhase.java?rev=1126667&r1=1126666&r2=1126667&view=diff
==============================================================================
--- continuum/trunk/continuum-release/src/main/java/org/apache/maven/continuum/release/phase/UpdateWorkingCopyPhase.java (original)
+++ continuum/trunk/continuum-release/src/main/java/org/apache/maven/continuum/release/phase/UpdateWorkingCopyPhase.java Mon May 23 19:08:15 2011
@@ -22,6 +22,8 @@ package org.apache.maven.continuum.relea
import java.io.File;
import java.util.List;
+import org.apache.commons.lang.StringUtils;
+import org.apache.continuum.scm.ContinuumScmUtils;
import org.apache.maven.scm.ScmBranch;
import org.apache.maven.scm.ScmException;
import org.apache.maven.scm.ScmFileSet;
@@ -32,6 +34,7 @@ import org.apache.maven.scm.manager.NoSu
import org.apache.maven.scm.manager.plexus.PlexusLogger;
import org.apache.maven.scm.provider.ScmProvider;
import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.ScmUrlUtils;
import org.apache.maven.scm.provider.git.gitexe.command.branch.GitBranchCommand;
import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository;
import org.apache.maven.scm.repository.ScmRepository;
@@ -72,6 +75,53 @@ public class UpdateWorkingCopyPhase
ScmRepository repository;
ScmProvider provider;
+
+ // CONTINUUM-2628
+ // if git ssh, use credentials specified in scm url if present. otherwise, use the scm credentials of project
+ String providerType = ScmUrlUtils.getProvider( releaseDescriptor.getScmSourceUrl() );
+ String scmSpecificUrl = releaseDescriptor.getScmSourceUrl().substring( providerType.length() + 5 );
+
+ if( providerType.contains( ContinuumScmUtils.GIT_SCM_PROVIDERTYPE ) && scmSpecificUrl.startsWith( GitScmProviderRepository.PROTOCOL_SSH ) )
+ {
+ scmSpecificUrl = scmSpecificUrl.substring( GitScmProviderRepository.PROTOCOL_SSH.length() + 3 );
+
+ // extract user information
+ int indexAt = scmSpecificUrl.indexOf( "@" );
+ String sshScmUsername = "";
+ String sshScmPassword = "";
+
+ if ( indexAt >= 0 )
+ {
+ String userInfo = scmSpecificUrl.substring( 0, indexAt );
+ sshScmUsername = userInfo;
+
+ int indexPwdSep = userInfo.indexOf( ":" );
+ // password is specified in the url
+ if ( indexPwdSep < 0 )
+ {
+ sshScmUsername = userInfo.substring( indexPwdSep + 1);
+ }
+ else
+ {
+ sshScmUsername = userInfo.substring( 0, indexPwdSep );
+ sshScmPassword = userInfo.substring( indexPwdSep + 1 );
+ }
+ }
+
+ if( !StringUtils.isBlank( sshScmUsername ) )
+ {
+ releaseDescriptor.setScmUsername( sshScmUsername );
+ if( !StringUtils.isBlank( sshScmPassword ) )
+ {
+ releaseDescriptor.setScmPassword( sshScmPassword );
+ }
+ else
+ {
+ releaseDescriptor.setScmPassword( null );
+ }
+ }
+ }
+
try
{
repository = scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor, settings );