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/07/04 19:30:27 UTC

svn commit: r209102 - in /maven/scm/trunk: ./ maven-scm-api/src/main/java/org/apache/maven/scm/provider/ maven-scm-api/src/main/java/org/apache/maven/scm/repository/ maven-scm-providers/maven-scm-provider-cvs/src/main/java/org/apache/maven/scm/provider...

Author: evenisse
Date: Mon Jul  4 10:30:26 2005
New Revision: 209102

URL: http://svn.apache.org/viewcvs?rev=209102&view=rev
Log:
[SCM-37]. Add ability to find the SCM url from a directory

Added:
    maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/repository/UnknownRepositoryStructure.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Extra
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Extra.Old
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Old
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Repository
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Root
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Template
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/pom.xml   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/util/
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/util/EntriesReader.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/util/Entry.java   (with props)
Modified:
    maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java
    maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/main/java/org/apache/maven/scm/provider/cvslib/CvsScmProvider.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/java/org/apache/maven/scm/provider/cvslib/repository/CvsScmProviderRepositoryTest.java
    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/test/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepositoryTest.java
    maven/scm/trunk/pom.xml

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java?rev=209102&r1=209101&r2=209102&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java Mon Jul  4 10:30:26 2005
@@ -24,8 +24,10 @@
 import org.apache.maven.scm.log.ScmLogDispatcher;
 import org.apache.maven.scm.log.ScmLogger;
 import org.apache.maven.scm.repository.ScmRepositoryException;
+import org.apache.maven.scm.repository.UnknownRepositoryStructure;
 import org.apache.maven.scm.command.Command;
 
+import java.io.File;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.Map;
@@ -148,5 +150,14 @@
     public ScmLogger getLogger()
     {
         return logDispatcher;
+    }
+
+    /**
+     * @see org.apache.maven.scm.provider.ScmProvider#makeProviderScmRepository(java.io.File, java.lang.String)
+     */
+    public ScmProviderRepository makeProviderScmRepository( File path )
+        throws ScmRepositoryException, UnknownRepositoryStructure
+    {
+        throw new UnknownRepositoryStructure();
     }
 }

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java?rev=209102&r1=209101&r2=209102&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java Mon Jul  4 10:30:26 2005
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+import java.io.File;
 import java.util.List;
 
 import org.apache.maven.scm.CommandParameters;
@@ -24,6 +25,7 @@
 import org.apache.maven.scm.ScmResult;
 import org.apache.maven.scm.log.ScmLogger;
 import org.apache.maven.scm.repository.ScmRepositoryException;
+import org.apache.maven.scm.repository.UnknownRepositoryStructure;
 
 /**
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
@@ -39,6 +41,9 @@
 
     ScmProviderRepository makeProviderScmRepository( String scmSpecificUrl, char delimiter )
         throws ScmRepositoryException;
+
+    ScmProviderRepository makeProviderScmRepository( File path )
+        throws ScmRepositoryException, UnknownRepositoryStructure;
 
     List validateScmUrl( String scmSpecificUrl, char delimiter );
 

Added: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/repository/UnknownRepositoryStructure.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/repository/UnknownRepositoryStructure.java?rev=209102&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/repository/UnknownRepositoryStructure.java (added)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/repository/UnknownRepositoryStructure.java Mon Jul  4 10:30:26 2005
@@ -0,0 +1,26 @@
+package org.apache.maven.scm.repository;
+
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * 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.
+ */
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public class UnknownRepositoryStructure
+    extends Exception
+{
+}

Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/repository/UnknownRepositoryStructure.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/repository/UnknownRepositoryStructure.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/main/java/org/apache/maven/scm/provider/cvslib/CvsScmProvider.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/main/java/org/apache/maven/scm/provider/cvslib/CvsScmProvider.java?rev=209102&r1=209101&r2=209102&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/main/java/org/apache/maven/scm/provider/cvslib/CvsScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/main/java/org/apache/maven/scm/provider/cvslib/CvsScmProvider.java Mon Jul  4 10:30:26 2005
@@ -20,8 +20,12 @@
 import org.apache.maven.scm.provider.ScmProviderRepository;
 import org.apache.maven.scm.provider.cvslib.repository.CvsScmProviderRepository;
 import org.apache.maven.scm.repository.ScmRepositoryException;
+import org.apache.maven.scm.repository.UnknownRepositoryStructure;
+import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.StringUtils;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.Map;
 import java.util.List;
 import java.util.ArrayList;
@@ -65,7 +69,7 @@
     // ----------------------------------------------------------------------
 
     public ScmProviderRepository makeProviderScmRepository( String scmSpecificUrl, char delimiter )
-    	throws ScmRepositoryException
+        throws ScmRepositoryException
     {
         ScmUrlParserResult result = parseScmUrl( scmSpecificUrl, delimiter );
 
@@ -77,6 +81,49 @@
         return result.repository;
     }
 
+    /**
+     * @see org.apache.maven.scm.provider.AbstractScmProvider#makeProviderScmRepository(java.io.File)
+     */
+    public ScmProviderRepository makeProviderScmRepository( File path )
+        throws ScmRepositoryException, UnknownRepositoryStructure
+    {
+        if ( path == null || !path.isDirectory() )
+        {
+            throw new ScmRepositoryException( path.getAbsolutePath() + " isn't a valid directory." );
+        }
+
+        File cvsDirectory = new File( path, "CVS" );
+
+        if ( !cvsDirectory.exists() )
+        {
+            throw new ScmRepositoryException( path.getAbsolutePath() + " isn't a cvs checkout directory." );
+        }
+
+        File cvsRootFile = new File( cvsDirectory, "Root" );
+        File moduleFile = new File( cvsDirectory, "Repository" );
+        String cvsRoot;
+        String module;
+
+        try
+        {
+            cvsRoot = FileUtils.fileRead( cvsRootFile ).trim().substring( 1 );
+        }
+        catch ( IOException e )
+        {
+            throw new ScmRepositoryException( "Can't read " + cvsRootFile.getAbsolutePath() );
+        }
+        try
+        {
+            module = FileUtils.fileRead( moduleFile ).trim();
+        }
+        catch ( IOException e )
+        {
+            throw new ScmRepositoryException( "Can't read " + moduleFile.getAbsolutePath() );
+        }
+
+        return makeProviderScmRepository( cvsRoot + ":" + module, ':' );
+    }
+
     public List validateScmUrl( String scmSpecificUrl, char delimiter )
     {
         ScmUrlParserResult result = parseScmUrl( scmSpecificUrl, delimiter );
@@ -117,16 +164,15 @@
 
         String cvsroot;
 
-        String transport = tokens[ 0 ];
+        String transport = tokens[0];
 
         if ( transport.equalsIgnoreCase( TRANSPORT_LOCAL ) )
         {
             // use the local repository directory eg. '/home/cvspublic'
-            cvsroot = tokens[ 1 ];
+            cvsroot = tokens[1];
         }
-        else if ( transport.equalsIgnoreCase( TRANSPORT_PSERVER ) ||
-                  transport.equalsIgnoreCase( TRANSPORT_LSERVER ) ||
-                  transport.equalsIgnoreCase( TRANSPORT_EXT ) )
+        else if ( transport.equalsIgnoreCase( TRANSPORT_PSERVER ) || transport.equalsIgnoreCase( TRANSPORT_LSERVER )
+                  || transport.equalsIgnoreCase( TRANSPORT_EXT ) )
         {
             if ( tokens.length != 4 && transport.equalsIgnoreCase( TRANSPORT_EXT ) )
             {
@@ -144,18 +190,18 @@
             if ( transport.equalsIgnoreCase( TRANSPORT_LSERVER ) )
             {
                 //create the cvsroot as the local socket cvsroot
-                cvsroot = tokens[ 1 ] + ":" + tokens[ 2 ];
+                cvsroot = tokens[1] + ":" + tokens[2];
             }
             else
             {
                 //create the cvsroot as the remote cvsroot
                 if ( tokens.length == 4 )
                 {
-                    cvsroot = ":" + transport + ":" + tokens[ 1 ] + ":" + tokens[ 2 ];
+                    cvsroot = ":" + transport + ":" + tokens[1] + ":" + tokens[2];
                 }
                 else
                 {
-                    cvsroot = ":" + transport + ":" + tokens[ 1 ] + ":" + tokens[ 2 ] + ":" + tokens[ 3 ];
+                    cvsroot = ":" + transport + ":" + tokens[1] + ":" + tokens[2] + ":" + tokens[3];
                 }
             }
         }
@@ -172,7 +218,7 @@
 
         if ( !transport.equalsIgnoreCase( TRANSPORT_LOCAL ) )
         {
-            String userhost = tokens[ 1 ];
+            String userhost = tokens[1];
 
             int index = userhost.indexOf( "@" );
 
@@ -196,25 +242,25 @@
 
         if ( transport.equals( TRANSPORT_LOCAL ) )
         {
-            path = tokens[ 1 ];
+            path = tokens[1];
 
-            module = tokens[ 2 ];
+            module = tokens[2];
         }
         else
         {
             if ( tokens.length == 4 )
             {
-                path = tokens[ 2 ];
+                path = tokens[2];
 
-                module = tokens[ 3 ];
+                module = tokens[3];
             }
             else
             {
-                port = new Integer( tokens[ 2 ] ).intValue();
+                port = new Integer( tokens[2] ).intValue();
 
-                path = tokens[ 3 ];
+                path = tokens[3];
 
-                module = tokens[ 4 ];
+                module = tokens[4];
             }
         }
 

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/java/org/apache/maven/scm/provider/cvslib/repository/CvsScmProviderRepositoryTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/java/org/apache/maven/scm/provider/cvslib/repository/CvsScmProviderRepositoryTest.java?rev=209102&r1=209101&r2=209102&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/java/org/apache/maven/scm/provider/cvslib/repository/CvsScmProviderRepositoryTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/java/org/apache/maven/scm/provider/cvslib/repository/CvsScmProviderRepositoryTest.java Mon Jul  4 10:30:26 2005
@@ -17,6 +17,7 @@
  */
 
 import org.apache.maven.scm.provider.cvslib.AbstractCvsScmTest;
+import org.apache.maven.scm.provider.cvslib.CvsScmProvider;
 import org.apache.maven.scm.repository.ScmRepository;
 import org.apache.maven.scm.repository.ScmRepositoryException;
 import org.codehaus.plexus.scm.ScmManager;
@@ -39,6 +40,25 @@
         scmManager = getScmManager();
     }
 
+    public void testParseConnectionFromPath()
+        throws Exception
+    {
+        CvsScmProvider provider = new CvsScmProvider();
+
+        CvsScmProviderRepository repo = (CvsScmProviderRepository) provider
+            .makeProviderScmRepository( getTestFile( "src/test/resources/checkoutdir" ) );
+
+        assertEquals( "ext", repo.getTransport() );
+
+        assertEquals( "evenisse", repo.getUser() );
+
+        assertEquals( "cvs.surefire.codehaus.org", repo.getHost() );
+
+        assertEquals( "/home/projects/surefire/scm", repo.getPath() );
+
+        assertEquals( "surefire", repo.getModule() );
+    }
+
     public void testParseRemotePserverConnection()
         throws Exception
     {
@@ -59,25 +79,25 @@
     }
 
     public void testParseRemotePserverConnectionWithPort()
-    throws Exception
-{
-    String url = "pserver:anoncvs@cvs.apache.org:2401:/home/cvspublic:maven";
+        throws Exception
+    {
+        String url = "pserver:anoncvs@cvs.apache.org:2401:/home/cvspublic:maven";
 
-    CvsScmProviderRepository repo = testUrl( url );
+        CvsScmProviderRepository repo = testUrl( url );
 
-    assertEquals( "pserver", repo.getTransport() );
+        assertEquals( "pserver", repo.getTransport() );
 
-    assertEquals( "anoncvs", repo.getUser() );
+        assertEquals( "anoncvs", repo.getUser() );
 
-    assertEquals( "cvs.apache.org", repo.getHost() );
+        assertEquals( "cvs.apache.org", repo.getHost() );
 
-    assertEquals( "/home/cvspublic", repo.getPath() );
+        assertEquals( "/home/cvspublic", repo.getPath() );
 
-    assertEquals( 2401, repo.getPort() );
+        assertEquals( 2401, repo.getPort() );
 
-    assertEquals( ":pserver:anoncvs@cvs.apache.org:2401:/home/cvspublic", repo.getCvsRoot() );
+        assertEquals( ":pserver:anoncvs@cvs.apache.org:2401:/home/cvspublic", repo.getCvsRoot() );
 
-}
+    }
 
     public void testParseRemotePserverConnectionWithBarsAsDelimiter()
         throws Exception
@@ -114,9 +134,9 @@
 
         assertNull( repo.getHost() );
 
-        assertEquals("/home/cvspublic", repo.getPath() );
+        assertEquals( "/home/cvspublic", repo.getPath() );
 
-        assertEquals("/home/cvspublic", repo.getCvsRoot() );
+        assertEquals( "/home/cvspublic", repo.getCvsRoot() );
     }
 
     // ----------------------------------------------------------------------
@@ -132,8 +152,8 @@
 
         assertNotNull( "The provider repository was null.", repository.getProviderRepository() );
 
-        assertTrue( "The SCM Repository isn't a " + CvsScmProviderRepository.class.getName() + ".",
-                    repository.getProviderRepository() instanceof CvsScmProviderRepository );
+        assertTrue( "The SCM Repository isn't a " + CvsScmProviderRepository.class.getName() + ".", repository
+            .getProviderRepository() instanceof CvsScmProviderRepository );
 
         return (CvsScmProviderRepository) repository.getProviderRepository();
     }
@@ -158,4 +178,4 @@
             // expected
         }
     }
- }
+}

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries?rev=209102&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries Mon Jul  4 10:30:26 2005
@@ -0,0 +1 @@
+/pom.xml/1.10/Sat Jul  2 13:13:10 2005//

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Extra
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Extra?rev=209102&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Extra (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Extra Mon Jul  4 10:30:26 2005
@@ -0,0 +1,9 @@
+D/surefire///
+D/surefire-beanshell///
+D/surefire-booter///
+D/surefire-jython///
+D/surefire-web///
+D/surefire-xmlrpc///
+D/xdocs///
+/project.xml///
+/pom.xml///

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Extra.Old
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Extra.Old?rev=209102&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Extra.Old (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Extra.Old Mon Jul  4 10:30:26 2005
@@ -0,0 +1,9 @@
+D/surefire////
+D/surefire-beanshell////
+D/surefire-booter////
+D/surefire-jython////
+D/surefire-web////
+D/surefire-xmlrpc////
+D/xdocs////
+/project.xml////
+/pom.xml////

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Old
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Old?rev=209102&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Old (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Entries.Old Mon Jul  4 10:30:26 2005
@@ -0,0 +1,9 @@
+D/surefire////
+D/surefire-beanshell////
+D/surefire-booter////
+D/surefire-jython////
+D/surefire-web////
+D/surefire-xmlrpc////
+D/xdocs////
+/project.xml/1.2/Fri Oct  8 21:29:26 2004//
+/pom.xml/1.6/Wed Mar 23 20:50:26 2005//

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Repository
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Repository?rev=209102&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Repository (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Repository Mon Jul  4 10:30:26 2005
@@ -0,0 +1 @@
+surefire

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Root
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Root?rev=209102&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Root (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Root Mon Jul  4 10:30:26 2005
@@ -0,0 +1 @@
+:ext:evenisse@cvs.surefire.codehaus.org:/home/projects/surefire/scm

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Template
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/CVS/Template?rev=209102&view=auto
==============================================================================
    (empty)

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/pom.xml
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/pom.xml?rev=209102&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/pom.xml (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/pom.xml Mon Jul  4 10:30:26 2005
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>surefire</groupId>
+  <artifactId>surefire-root</artifactId>
+  <packaging>pom</packaging>
+  <name>SureFire Parent</name>
+  <version>1.1-SNAPSHOT</version>
+  <description>Surefire is a test framework project.</description>
+  <url>http://surefire.codehaus.org/</url>
+  <issueManagement>
+    <system>jira</system>
+    <url>http://jira.codehaus.org/browse/SUREFIRE</url>
+  </issueManagement>
+  <ciManagement>
+    <system>continuum</system>
+    <url></url>
+    <notifiers>
+      <notifier>
+        <type>email</type>
+        <address>dev@surefire.codehaus.org</address>
+      </notifier>
+    </notifiers>
+  </ciManagement>
+  <inceptionYear>2004</inceptionYear>
+  <mailingLists>
+    <mailingList>
+      <name>Surefire User List</name>
+      <subscribe>user-subscribe@surefire.codehaus.org</subscribe>
+      <unsubscribe>user-unsubscribe@surefire.codehaus.org</unsubscribe>
+      <archive>http://archive.surefire.codehaus.org/user/</archive>
+    </mailingList>
+    <mailingList>
+      <name>Surefire Developer List</name>
+      <subscribe>dev-subscribe@surefire.codehaus.org</subscribe>
+      <unsubscribe>dev-unsubscribe@surefire.codehaus.org</unsubscribe>
+      <archive>http://archive.surefire.codehaus.org/dev/</archive>
+    </mailingList>
+  </mailingLists>
+  <developers>
+    <developer>
+      <id>jvanzyl</id>
+      <name>Jason van Zyl</name>
+      <email>jason@zenplex.com</email>
+      <organization>Zenplex</organization>
+      <roles>
+        <role>Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <id>evenisse</id>
+      <name>Emmanuel Venisse</name>
+      <email>evenisse@codehaus.org</email>
+      <organization>Codehaus</organization>
+      <roles>
+        <role>Developer</role>
+      </roles>
+    </developer>
+  </developers>
+  <scm>
+    <connection>scm:cvs:pserver:anoncvs@cvs.surefire.codehaus.org:/scm/surefire:surefire</connection>
+    <developerConnection>scm:cvs:ext:${maven.username}@cvs.surefire.codehaus.org:/scm/surefire:surefire</developerConnection>
+    <url>http://cvs.surefire.codehaus.org/surefire/</url>
+  </scm>
+  <organization>
+    <name>Codehaus</name>
+    <url>http://www.codehaus.org/</url>
+  </organization>
+  <distributionManagement>
+    <repository>
+      <id>repo1</id>
+      <name>Maven Central Repository</name>
+      <url>scp://repo1.maven.org/home/projects/maven/repository-staging/to-ibiblio/maven2</url>
+    </repository>
+    <site>
+      <id>surefire</id>
+      <name>Surefire Site at Codehaus</name>
+      <url>scp://beaver.codehaus.org//home/projects/surefire/public_html</url>
+    </site>
+  </distributionManagement>
+  <modules>
+    <module>surefire</module>
+    <module>surefire-booter</module>
+  </modules>
+  <build>
+    <sourceDirectory>src/main</sourceDirectory>
+    <testSourceDirectory>src/test</testSourceDirectory>
+  </build>
+</project>

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/resources/checkoutdir/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

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=209102&r1=209101&r2=209102&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 Mon Jul  4 10:30:26 2005
@@ -19,8 +19,14 @@
 import org.apache.maven.scm.provider.AbstractScmProvider;
 import org.apache.maven.scm.provider.ScmProviderRepository;
 import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
+import org.apache.maven.scm.provider.svn.util.EntriesReader;
+import org.apache.maven.scm.provider.svn.util.Entry;
 import org.apache.maven.scm.repository.ScmRepositoryException;
+import org.apache.maven.scm.repository.UnknownRepositoryStructure;
 
+import java.io.File;
+import java.io.FileReader;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.List;
 import java.util.ArrayList;
@@ -61,6 +67,58 @@
         }
 
         return result.repository;
+    }
+
+    /**
+     * @see org.apache.maven.scm.provider.AbstractScmProvider#makeProviderScmRepository(java.io.File)
+     */
+    public ScmProviderRepository makeProviderScmRepository( File path )
+        throws ScmRepositoryException, UnknownRepositoryStructure
+    {
+        if ( path == null || !path.isDirectory() )
+        {
+            throw new ScmRepositoryException( path.getAbsolutePath() + " isn't a valid directory." );
+        }
+
+        File svnDirectory = new File( path, ".svn" );
+
+        if ( !svnDirectory.exists() )
+        {
+            throw new ScmRepositoryException( path.getAbsolutePath() + " isn't a svn checkout directory." );
+        }
+
+        File svnEntriesFile = new File( svnDirectory, "entries" );
+
+        String svnUrl = null;
+
+        try
+        {
+            FileReader reader = new FileReader( svnEntriesFile );
+
+            EntriesReader entriesReader = new EntriesReader();
+
+            List entries = entriesReader.read( reader );
+            
+            for ( Iterator i = entries.iterator(); i.hasNext(); )
+            {
+                Entry svnEntry = (Entry) i.next();
+
+                if ( "".equals( svnEntry.getName() ) )
+                {
+                    svnUrl = svnEntry.getUrl();
+                }
+            }
+        }
+        catch( Exception e )
+        {
+            ScmRepositoryException ex = new ScmRepositoryException( "Can't read " + svnEntriesFile.getAbsolutePath() );
+
+            ex.setStackTrace( e.getStackTrace() );
+
+            throw ex;
+        }
+
+        return makeProviderScmRepository( svnUrl, ':' );
     }
 
     public List validateScmUrl( String scmSpecificUrl, char delimiter )

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/util/EntriesReader.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/util/EntriesReader.java?rev=209102&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/util/EntriesReader.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/util/EntriesReader.java Mon Jul  4 10:30:26 2005
@@ -0,0 +1,77 @@
+package org.apache.maven.scm.provider.svn.util;
+
+import org.codehaus.plexus.util.xml.pull.MXParser;
+import org.codehaus.plexus.util.xml.pull.XmlPullParser;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.List;
+
+public class EntriesReader
+{
+    public List read( Reader reader )
+        throws IOException, XmlPullParserException
+    {
+        XmlPullParser parser = new MXParser();
+
+        parser.setInput( reader );
+
+        List entries = new ArrayList();
+
+        int eventType = parser.getEventType();
+
+        while ( eventType != XmlPullParser.END_DOCUMENT )
+        {
+            if ( eventType == XmlPullParser.START_TAG )
+            {
+                while ( parser.nextTag() == XmlPullParser.START_TAG )
+                {
+                    if ( parser.getName().equals( "entry" ) )
+                    {
+                        entries.add( parseEntry( "entry", parser ) );
+                    }
+                    else
+                    {
+                        parser.nextText();
+                    }
+                }
+            }
+            eventType = parser.next();
+        }
+
+        return entries;
+    }
+
+    private Entry parseEntry( String tagName, XmlPullParser parser )
+        throws IOException, XmlPullParserException
+    {
+        Entry entry = new Entry();
+
+
+        entry.setName( getTrimmedValue( parser.getAttributeValue( "", "name" ) ) );
+
+        entry.setUrl( getTrimmedValue( parser.getAttributeValue( "", "url" ) ) );
+
+        return entry;
+    }
+
+    public int getIntegerValue( String s )
+    {
+        if ( s != null )
+        {
+            return Integer.valueOf( s ).intValue();
+        }
+        return 0;
+    }
+
+    public String getTrimmedValue( String s )
+    {
+        if ( s != null )
+        {
+            s = s.trim();
+        }
+        return s;
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/util/EntriesReader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/util/EntriesReader.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/util/Entry.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/util/Entry.java?rev=209102&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/util/Entry.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/util/Entry.java Mon Jul  4 10:30:26 2005
@@ -0,0 +1,283 @@
+/*
+ * $Id$
+ */
+
+package org.apache.maven.scm.provider.svn.util;
+
+  //---------------------------------/
+ //- Imported classes and packages -/
+//---------------------------------/
+
+import java.util.*;
+
+/**
+ * Class Entry.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class Entry implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field committedRevision
+     */
+    private int committedRevision = 0;
+
+    /**
+     * Field name
+     */
+    private String name;
+
+    /**
+     * Field committedDate
+     */
+    private String committedDate;
+
+    /**
+     * Field url
+     */
+    private String url;
+
+    /**
+     * Field lastAuthor
+     */
+    private String lastAuthor;
+
+    /**
+     * Field kind
+     */
+    private String kind;
+
+    /**
+     * Field uuid
+     */
+    private String uuid;
+
+    /**
+     * Field propertyTime
+     */
+    private String propertyTime;
+
+    /**
+     * Field revision
+     */
+    private int revision = 0;
+
+    /**
+     * Field textTime
+     */
+    private String textTime;
+
+    /**
+     * Field checksum
+     */
+    private String checksum;
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * Method getChecksum
+     */
+    public String getChecksum()
+    {
+        return this.checksum;
+    } //-- String getChecksum() 
+
+    /**
+     * Method getCommittedDate
+     */
+    public String getCommittedDate()
+    {
+        return this.committedDate;
+    } //-- String getCommittedDate() 
+
+    /**
+     * Method getCommittedRevision
+     */
+    public int getCommittedRevision()
+    {
+        return this.committedRevision;
+    } //-- int getCommittedRevision() 
+
+    /**
+     * Method getKind
+     */
+    public String getKind()
+    {
+        return this.kind;
+    } //-- String getKind() 
+
+    /**
+     * Method getLastAuthor
+     */
+    public String getLastAuthor()
+    {
+        return this.lastAuthor;
+    } //-- String getLastAuthor() 
+
+    /**
+     * Method getName
+     */
+    public String getName()
+    {
+        return this.name;
+    } //-- String getName() 
+
+    /**
+     * Method getPropertyTime
+     */
+    public String getPropertyTime()
+    {
+        return this.propertyTime;
+    } //-- String getPropertyTime() 
+
+    /**
+     * Method getRevision
+     */
+    public int getRevision()
+    {
+        return this.revision;
+    } //-- int getRevision() 
+
+    /**
+     * Method getTextTime
+     */
+    public String getTextTime()
+    {
+        return this.textTime;
+    } //-- String getTextTime() 
+
+    /**
+     * Method getUrl
+     */
+    public String getUrl()
+    {
+        return this.url;
+    } //-- String getUrl() 
+
+    /**
+     * Method getUuid
+     */
+    public String getUuid()
+    {
+        return this.uuid;
+    } //-- String getUuid() 
+
+    /**
+     * Method setChecksum
+     * 
+     * @param checksum
+     */
+    public void setChecksum(String checksum)
+    {
+        this.checksum = checksum;
+    } //-- void setChecksum(String) 
+
+    /**
+     * Method setCommittedDate
+     * 
+     * @param committedDate
+     */
+    public void setCommittedDate(String committedDate)
+    {
+        this.committedDate = committedDate;
+    } //-- void setCommittedDate(String) 
+
+    /**
+     * Method setCommittedRevision
+     * 
+     * @param committedRevision
+     */
+    public void setCommittedRevision(int committedRevision)
+    {
+        this.committedRevision = committedRevision;
+    } //-- void setCommittedRevision(int) 
+
+    /**
+     * Method setKind
+     * 
+     * @param kind
+     */
+    public void setKind(String kind)
+    {
+        this.kind = kind;
+    } //-- void setKind(String) 
+
+    /**
+     * Method setLastAuthor
+     * 
+     * @param lastAuthor
+     */
+    public void setLastAuthor(String lastAuthor)
+    {
+        this.lastAuthor = lastAuthor;
+    } //-- void setLastAuthor(String) 
+
+    /**
+     * Method setName
+     * 
+     * @param name
+     */
+    public void setName(String name)
+    {
+        this.name = name;
+    } //-- void setName(String) 
+
+    /**
+     * Method setPropertyTime
+     * 
+     * @param propertyTime
+     */
+    public void setPropertyTime(String propertyTime)
+    {
+        this.propertyTime = propertyTime;
+    } //-- void setPropertyTime(String) 
+
+    /**
+     * Method setRevision
+     * 
+     * @param revision
+     */
+    public void setRevision(int revision)
+    {
+        this.revision = revision;
+    } //-- void setRevision(int) 
+
+    /**
+     * Method setTextTime
+     * 
+     * @param textTime
+     */
+    public void setTextTime(String textTime)
+    {
+        this.textTime = textTime;
+    } //-- void setTextTime(String) 
+
+    /**
+     * Method setUrl
+     * 
+     * @param url
+     */
+    public void setUrl(String url)
+    {
+        this.url = url;
+    } //-- void setUrl(String) 
+
+    /**
+     * Method setUuid
+     * 
+     * @param uuid
+     */
+    public void setUuid(String uuid)
+    {
+        this.uuid = uuid;
+    } //-- void setUuid(String) 
+
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/util/Entry.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/util/Entry.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

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=209102&r1=209101&r2=209102&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 Mon Jul  4 10:30:26 2005
@@ -17,10 +17,13 @@
  */
 
 import org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.provider.svn.SvnScmProvider;
 import org.apache.maven.scm.repository.ScmRepository;
 import org.apache.maven.scm.repository.ScmRepositoryException;
 import org.codehaus.plexus.scm.ScmManager;
 
+import java.io.File;
+
 /**
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
  * @version $Id$
@@ -98,6 +101,18 @@
         throws Exception
     {
         testIllegalUrl( "file:/tmp/svn" );
+    }
+
+    // ----------------------------------------------------------------------
+    // Testing provider from path
+    // ----------------------------------------------------------------------
+
+    public void testSvnFromPath()
+        throws Exception
+    {
+        SvnScmProvider provider = new SvnScmProvider();
+
+        SvnScmProviderRepository repo = (SvnScmProviderRepository) provider.makeProviderScmRepository( new File( getBasedir() ) );
     }
 
     // ----------------------------------------------------------------------

Modified: maven/scm/trunk/pom.xml
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/pom.xml?rev=209102&r1=209101&r2=209102&view=diff
==============================================================================
--- maven/scm/trunk/pom.xml (original)
+++ maven/scm/trunk/pom.xml Mon Jul  4 10:30:26 2005
@@ -38,7 +38,7 @@
     <dependency>
       <groupId>plexus</groupId>
       <artifactId>plexus-utils</artifactId>
-      <version>1.0-alpha-3</version>
+      <version>1.0.1-SNAPSHOT</version>
     </dependency>
   </dependencies>
   <organization>