You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm-commits@maven.apache.org by ev...@apache.org on 2005/06/24 17:50:35 UTC
svn commit: r201634 - in
/maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src:
main/java/org/apache/maven/scm/provider/svn/
main/java/org/apache/maven/scm/provider/svn/repository/
test/java/org/apache/maven/scm/provider/svn/command/checkin/ ...
Author: evenisse
Date: Fri Jun 24 08:50:34 2005
New Revision: 201634
URL: http://svn.apache.org/viewcvs?rev=201634&view=rev
Log:
[SCM-40] Allow username configuration for svn+ssh
[SCM-41] username as part of svn+ssh url is now accepted
The general format for svn url is scm:(svn_protocol)/[username@]url like scm:svn+ssh://myusername@myserver/path_to_repo
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/SvnScmProvider.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkin/SvnCheckInCommandTest.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommandTest.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepositoryTest.java
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/SvnScmProvider.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/SvnScmProvider.java?rev=201634&r1=201633&r2=201634&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/SvnScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/SvnScmProvider.java Fri Jun 24 08:50:34 2005
@@ -51,7 +51,7 @@
// ----------------------------------------------------------------------
public ScmProviderRepository makeProviderScmRepository( String scmSpecificUrl, char delimiter )
- throws ScmRepositoryException
+ throws ScmRepositoryException
{
ScmUrlParserResult result = parseScmUrl( scmSpecificUrl );
@@ -94,28 +94,18 @@
int at = scmSpecificUrl.indexOf( "@" );
- String url;
+ String url = scmSpecificUrl;
String user = null;
String password = null;
- if ( at >= 1 )
- {
- user = scmSpecificUrl.substring( 0, at );
-
- url = scmSpecificUrl.substring( at + 1 );
- }
- else
- {
- url = scmSpecificUrl;
- }
+ String protocol = null;
// ----------------------------------------------------------------------
// Do some sanity checking of the SVN url
// ----------------------------------------------------------------------
- // todo: this could possibly be generalized for all providers.
if ( url.startsWith( "file" ) )
{
if ( !url.startsWith( "file:///" ) && !url.startsWith( "file://localhost/" ) )
@@ -124,6 +114,8 @@
return result;
}
+
+ protocol = "file://";
}
else if ( url.startsWith( "https" ) )
{
@@ -133,6 +125,8 @@
return result;
}
+
+ protocol = "https://";
}
else if ( url.startsWith( "http" ) )
{
@@ -142,6 +136,8 @@
return result;
}
+
+ protocol = "http://";
}
else if ( url.startsWith( "svn+ssh" ) )
{
@@ -151,6 +147,8 @@
return result;
}
+
+ protocol = "svn+ssh://";
}
else if ( url.startsWith( "svn" ) )
{
@@ -160,6 +158,23 @@
return result;
}
+
+ protocol = "svn://";
+ }
+
+ String urlPath = url.substring( protocol.length() );
+
+ int indexAt = urlPath.indexOf( "@" );
+
+ if ( indexAt > 0 && !"svn+ssh://".equals( protocol ) )
+ {
+ user = urlPath.substring( 0, indexAt );
+
+ url = protocol + urlPath.substring( indexAt + 1 );
+ }
+ else
+ {
+ url = protocol + urlPath;
}
result.repository = new SvnScmProviderRepository( url, user, password );
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java?rev=201634&r1=201633&r2=201634&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java Fri Jun 24 08:50:34 2005
@@ -26,7 +26,7 @@
extends ScmProviderRepository
{
/** */
- private final String url;
+ private String url;
/** */
private String user;
@@ -41,13 +41,13 @@
public SvnScmProviderRepository( String url, String user, String password )
{
- this.url = url;
-
this.tagBase = url.substring( 0, url.lastIndexOf( '/' ) ) + "/tags";
this.user = user;
this.password = password;
+
+ parseUrl( url );
}
public String getUrl()
@@ -83,5 +83,46 @@
public void setTagBase( String tagBase )
{
this.tagBase = tagBase;
+ }
+
+ private void parseUrl( String url )
+ {
+ String protocol = null;
+
+ if ( url.startsWith( "file" ) )
+ {
+ protocol = "file://";
+ }
+ else if ( url.startsWith( "https" ) )
+ {
+ protocol = "https://";
+ }
+ else if ( url.startsWith( "http" ) )
+ {
+ protocol = "http://";
+ }
+ else if ( url.startsWith( "svn+ssh" ) )
+ {
+ protocol = "svn+ssh://";
+ }
+ else if ( url.startsWith( "svn" ) )
+ {
+ protocol = "svn://";
+ }
+
+ String urlPath = url.substring( protocol.length() );
+
+ int indexAt = urlPath.indexOf( "@" );
+
+ if ( indexAt > 0 && !"svn+ssh://".equals( protocol ) )
+ {
+ this.user = urlPath.substring( 0, indexAt );
+
+ this.url = protocol + urlPath.substring( indexAt + 1 );
+ }
+ else
+ {
+ this.url = protocol + urlPath;
+ }
}
}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkin/SvnCheckInCommandTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkin/SvnCheckInCommandTest.java?rev=201634&r1=201633&r2=201634&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkin/SvnCheckInCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkin/SvnCheckInCommandTest.java Fri Jun 24 08:50:34 2005
@@ -66,14 +66,14 @@
public void testCommandLineTag()
throws Exception
{
- testCommandLine( "scm:svn:anonymous@http://foo.com/svn/trunk",
+ testCommandLine( "scm:svn:http://anonymous@foo.com/svn/trunk",
"svn --username anonymous --non-interactive commit " + messageFileString );
}
public void testCommandLineWithUsernameAndTag()
throws Exception
{
- testCommandLine( "scm:svn:anonymous@http://foo.com/svn/trunk",
+ testCommandLine( "scm:svn:http://anonymous@foo.com/svn/trunk",
"svn --username anonymous --non-interactive commit " + messageFileString );
}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommandTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommandTest.java?rev=201634&r1=201633&r2=201634&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommandTest.java Fri Jun 24 08:50:34 2005
@@ -47,14 +47,14 @@
public void testCommandLineTag()
throws Exception
{
- testCommandLine( "scm:svn:anonymous@http://foo.com/svn/trunk", "10",
+ testCommandLine( "scm:svn:http://anonymous@foo.com/svn/trunk", "10",
"svn --username anonymous --non-interactive update -r 10" );
}
public void testCommandLineWithUsernameAndTag()
throws Exception
{
- testCommandLine( "scm:svn:anonymous@http://foo.com/svn/trunk", "10",
+ testCommandLine( "scm:svn:http://anonymous@foo.com/svn/trunk", "10",
"svn --username anonymous --non-interactive update -r 10" );
}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepositoryTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepositoryTest.java?rev=201634&r1=201633&r2=201634&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepositoryTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepositoryTest.java Fri Jun 24 08:50:34 2005
@@ -45,37 +45,49 @@
public void testLegalFileURL()
throws Exception
{
- testUrl( "file:///tmp/repo" );
+ testUrl( "scm:svn:file:///tmp/repo", "file:///tmp/repo", null );
}
public void testLegalLocalhostFileURL()
throws Exception
{
- testUrl( "file://localhost/tmp/repo" );
+ testUrl( "scm:svn:file://localhost/tmp/repo", "file://localhost/tmp/repo", null );
}
public void testLegalHttpURL()
throws Exception
{
- testUrl( "http://subversion.tigris.org" );
+ testUrl( "scm:svn:http://subversion.tigris.org", "http://subversion.tigris.org", null );
}
public void testLegalHttpsURL()
throws Exception
{
- testUrl( "https://subversion.tigris.org" );
+ testUrl( "scm:svn:https://subversion.tigris.org", "https://subversion.tigris.org", null );
}
public void testLegalSvnURL()
throws Exception
{
- testUrl( "svn://subversion.tigris.org" );
+ testUrl( "scm:svn:svn://subversion.tigris.org", "svn://subversion.tigris.org", null );
+ }
+
+ public void testLegalSvnPlusUsernameURL()
+ throws Exception
+ {
+ testUrl( "scm:svn:svn://username@subversion.tigris.org", "svn://subversion.tigris.org", "username" );
}
public void testLegalSvnPlusSshURL()
throws Exception
{
- testUrl( "svn+ssh://subversion.tigris.org" );
+ testUrl( "scm:svn:svn+ssh://subversion.tigris.org", "svn+ssh://subversion.tigris.org", null );
+ }
+
+ public void testLegalSvnPlusSshPlusUsernameURL()
+ throws Exception
+ {
+ testUrl( "scm:svn:svn+ssh://username@subversion.tigris.org", "svn+ssh://username@subversion.tigris.org", null );
}
// ----------------------------------------------------------------------
@@ -92,16 +104,23 @@
//
// ----------------------------------------------------------------------
- private void testUrl( String url )
+ private void testUrl( String scmUrl, String expectedUrl, String expectedUser )
throws Exception
{
- ScmRepository repository = scmManager.makeScmRepository( "scm:svn:" + url );
+ ScmRepository repository = scmManager.makeScmRepository( scmUrl );
assertNotNull( "ScmManager.makeScmRepository() returned null", repository );
assertNotNull( "The provider repository was null.", repository.getProviderRepository() );
- assertTrue( "The SCM Repository isn't a " + SvnScmProviderRepository.class.getName() + ".", repository.getProviderRepository() instanceof SvnScmProviderRepository );
+ assertTrue( "The SCM Repository isn't a " + SvnScmProviderRepository.class.getName() + ".",
+ repository.getProviderRepository() instanceof SvnScmProviderRepository );
+
+ SvnScmProviderRepository providerRepository = (SvnScmProviderRepository) repository.getProviderRepository();
+
+ assertEquals( "url is incorrect", expectedUrl, providerRepository.getUrl() );
+
+ assertEquals( "User is incorrect", expectedUser, providerRepository.getUser() );
}
private void testIllegalUrl( String url )