Author: olamy
Date: Mon Nov 10 15:25:31 2008
New Revision: 712872

URL: http://svn.apache.org/viewvc?rev=712872&view=rev
Log:
[SCM-428] url syntax not good enough for the git scm provider
Now url with the format (<developerConnection>scm:git:[EMAIL 
PROTECTED]:olamy/scm-git-test-one-module.git</developerConnection>) is supported


Modified:
    
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/repository/GitScmProviderRepository.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/repository/GitScmProviderRepositoryTest.java

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java?rev=712872&r1=712871&r2=712872&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java
 Mon Nov 10 15:25:31 2008
@@ -206,7 +206,8 @@
         }
         else if ( url.startsWith( GitScmProviderRepository.PROTOCOL_GIT ) )
         {
-            if ( !url.startsWith( GitScmProviderRepository.PROTOCOL_GIT + 
"://" ) )
+            if ( ( !url.startsWith( GitScmProviderRepository.PROTOCOL_GIT + 
"://" ) )
+                && ( !url.startsWith( GitScmProviderRepository.PROTOCOL_GIT + 
"@" ) ) )
             {
                 result.messages.add( "A git 'git' url must be on the form 
'git://'." );
 

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/repository/GitScmProviderRepository.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/repository/GitScmProviderRepository.java?rev=712872&r1=712871&r2=712872&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/repository/GitScmProviderRepository.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/repository/GitScmProviderRepository.java
 Mon Nov 10 15:25:31 2008
@@ -191,8 +191,41 @@
 
             if ( indexColon > 0 )
             {
-                setHost( hostPort.substring( 0, indexColon ) );
-                setPort( Integer.parseInt( hostPort.substring( indexColon + 1 
) ) );
+                boolean sshGitDev = false;
+                // url = scm:git:[EMAIL 
PROTECTED]:22:olamy/scm-git-test-one-module.git
+                if ( hostPort.startsWith( "@" ) )
+                {
+                    setHost( hostPort.substring( 1, indexColon ) );
+                }
+                else
+                {
+                    setHost( hostPort.substring( 0, indexColon ) );
+                }
+                String port = hostPort.substring( indexColon + 1 );
+
+                if ( port.indexOf( ":" ) > 0 )
+                {
+                    port = port.substring( 0, port.indexOf( ":" ) );
+                    sshGitDev = true;
+                }
+                
+                // url = scm:git:[EMAIL 
PROTECTED]:olamy/scm-git-test-one-module.git -> Nan
+                try
+                {
+                    setPort( Integer.parseInt( port ) );
+                }
+                catch ( NumberFormatException e )
+                {
+                    if ( !PROTOCOL_GIT.equals( getProtocol() ) )
+                    {
+                        throw e;
+                    }
+                    sshGitDev = true;
+                }
+                if (sshGitDev)
+                {
+                    this.url = "git" + urlPath;
+                }
             }
             else
             {

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/repository/GitScmProviderRepositoryTest.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/repository/GitScmProviderRepositoryTest.java?rev=712872&r1=712871&r2=712872&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/repository/GitScmProviderRepositoryTest.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/repository/GitScmProviderRepositoryTest.java
 Mon Nov 10 15:25:31 2008
@@ -125,7 +125,39 @@
         testUrl( "scm:git:git://gitrepos.apache.org", 
"git://gitrepos.apache.org", null, null,
                  "gitrepos.apache.org" );
     }
+    
+    public void testGitDevURL()
+        throws Exception, ScmRepositoryException
+    {
+        try
+        {
+            testUrl( "scm:git:[EMAIL 
PROTECTED]:olamy/scm-git-test-one-module.git",
+                     "[EMAIL PROTECTED]:olamy/scm-git-test-one-module.git", 
null, null, "github.com" );
+        }
+        catch ( ScmRepositoryException e )
+        {
+            fail( e.getValidationMessages().toString() );
+            throw new Exception( e.getMessage(), e );
+        }
+    }
+
+    public void testGitDevURLWIthPort()
+        throws Exception, ScmRepositoryException
+    {
+        try
+        {
+            testUrl( "scm:git:[EMAIL 
PROTECTED]:222:olamy/scm-git-test-one-module.git",
+                     "[EMAIL 
PROTECTED]:222:olamy/scm-git-test-one-module.git", null, "github.com", 222 );
+        }
+        catch ( ScmRepositoryException e )
+        {
+            fail( e.getValidationMessages().toString() );
+            throw new Exception( e.getMessage(), e );
+        }
+    }     
 
+    
+    
     public void testLegalGitPortUrl()
         throws Exception
     {
@@ -160,9 +192,9 @@
     //
     // ----------------------------------------------------------------------
 
-    private void testUrl( String scmUrl, String expectedUrl, String 
expectedUser, String expectedPassword,
-                          String expectedHost )
-        throws Exception
+    private GitScmProviderRepository testUrl( String scmUrl, String 
expectedUrl, String expectedUser,
+                                              String expectedPassword, String 
expectedHost )
+        throws Exception, ScmRepositoryException
     {
         ScmRepository repository = scmManager.makeScmRepository( scmUrl );
 
@@ -170,8 +202,8 @@
 
         assertNotNull( "The provider repository was null.", 
repository.getProviderRepository() );
 
-        assertTrue( "The SCM Repository isn't a " + 
GitScmProviderRepository.class.getName() + ".",
-                    repository.getProviderRepository() instanceof 
GitScmProviderRepository );
+        assertTrue( "The SCM Repository isn't a " + 
GitScmProviderRepository.class.getName() + ".", repository
+            .getProviderRepository() instanceof GitScmProviderRepository );
 
         GitScmProviderRepository providerRepository = 
(GitScmProviderRepository) repository.getProviderRepository();
 
@@ -183,8 +215,9 @@
 
         assertEquals( "Password is incorrect", expectedPassword, 
providerRepository.getPassword() );
 
-        assertEquals( "Host is incorrect", expectedHost,
-                      ( (GitScmProviderRepository) 
repository.getProviderRepository() ).getHost() );
+        assertEquals( "Host is incorrect", expectedHost, 
providerRepository.getHost() );
+
+        return providerRepository;
     }
 
     private void testUrl( String scmUrl, String expectedUrl, String 
expectedUser, String expectedHost,


Reply via email to