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 2006/02/07 14:48:38 UTC

svn commit: r375600 - in /maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src: main/java/org/apache/maven/scm/provider/cvslib/command/ main/java/org/apache/maven/scm/provider/cvslib/command/checkout/ test/java/org/apache/maven/scm/provider/c...

Author: evenisse
Date: Tue Feb  7 05:48:03 2006
New Revision: 375600

URL: http://svn.apache.org/viewcvs?rev=375600&view=rev
Log:
o Check if cvs is CVSNT
o throws an exception if CVSNT and tag is a numeric tag because it isn't supported by CVSNT.

Added:
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/repository/CVSROOT/val-tags.db   (with props)
Modified:
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/main/java/org/apache/maven/scm/provider/cvslib/command/CvsCommandUtils.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/main/java/org/apache/maven/scm/provider/cvslib/command/checkout/CvsCheckOutCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/java/org/apache/maven/scm/provider/cvslib/command/checkout/CvsCheckoutCommandTest.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/repository/CVSROOT/val-tags

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/main/java/org/apache/maven/scm/provider/cvslib/command/CvsCommandUtils.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/command/CvsCommandUtils.java?rev=375600&r1=375599&r2=375600&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/main/java/org/apache/maven/scm/provider/cvslib/command/CvsCommandUtils.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/main/java/org/apache/maven/scm/provider/cvslib/command/CvsCommandUtils.java Tue Feb  7 05:48:03 2006
@@ -16,11 +16,14 @@
  * limitations under the License.
  */
 
+import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
 import org.apache.maven.scm.provider.cvslib.repository.CvsScmProviderRepository;
 import org.apache.maven.scm.provider.cvslib.util.CvsUtil;
 import org.apache.maven.scm.providers.cvslib.settings.Settings;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
 import java.io.File;
@@ -34,6 +37,31 @@
 {
     private CvsCommandUtils()
     {
+    }
+
+    public static boolean isCvsNT()
+        throws ScmException
+    {
+        Commandline cl = new Commandline();
+
+        cl.setExecutable( "cvs" );
+
+        cl.createArgument().setValue( "-v" );
+
+        CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer();
+
+        CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
+
+        try
+        {
+            CommandLineUtils.executeCommandLine( cl, stdout, stderr );
+        }
+        catch ( CommandLineException e )
+        {
+            throw new ScmException( "Error while executing command.", e );
+        }
+
+        return stdout.getOutput().indexOf( "CVSNT" ) >= 0;
     }
 
     public static Commandline getBaseCommand( String commandName, CvsScmProviderRepository repo, ScmFileSet fileSet )

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/main/java/org/apache/maven/scm/provider/cvslib/command/checkout/CvsCheckOutCommand.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/command/checkout/CvsCheckOutCommand.java?rev=375600&r1=375599&r2=375600&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/main/java/org/apache/maven/scm/provider/cvslib/command/checkout/CvsCheckOutCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/main/java/org/apache/maven/scm/provider/cvslib/command/checkout/CvsCheckOutCommand.java Tue Feb  7 05:48:03 2006
@@ -25,6 +25,7 @@
 import org.apache.maven.scm.provider.cvslib.command.CvsCommandUtils;
 import org.apache.maven.scm.provider.cvslib.repository.CvsScmProviderRepository;
 import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.cli.CommandLineException;
 import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
@@ -43,6 +44,30 @@
     protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag )
         throws ScmException
     {
+        if ( CvsCommandUtils.isCvsNT() && !StringUtils.isEmpty( tag ) && Character.isDigit( tag.charAt( 0 ) ) )
+        {
+            String[] parts = StringUtils.split( tag, "." );
+
+            boolean numericalTag = true;
+
+            for ( int i = 0; i < parts.length; i++ )
+            {
+                try
+                {
+                    Integer.parseInt( parts[i] );
+                }
+                catch ( NumberFormatException e )
+                {
+                    numericalTag = false;
+                }
+            }
+
+            if (numericalTag)
+            {
+                throw new ScmException( "CVSNT doesn't support nuumeric directory tags for checkout.");
+            }
+        }
+
         if ( fileSet.getBasedir().exists() )
         {
             try
@@ -61,7 +86,7 @@
 
         cl.setWorkingDirectory( fileSet.getBasedir().getParentFile().getAbsolutePath() );
 
-        if ( tag != null )
+        if ( !StringUtils.isEmpty( tag ) )
         {
             cl.createArgument().setValue( "-r" );
             cl.createArgument().setValue( tag );

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/java/org/apache/maven/scm/provider/cvslib/command/checkout/CvsCheckoutCommandTest.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/command/checkout/CvsCheckoutCommandTest.java?rev=375600&r1=375599&r2=375600&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/java/org/apache/maven/scm/provider/cvslib/command/checkout/CvsCheckoutCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/java/org/apache/maven/scm/provider/cvslib/command/checkout/CvsCheckoutCommandTest.java Tue Feb  7 05:48:03 2006
@@ -76,7 +76,7 @@
         ScmManager scmManager = getScmManager();
 
         CheckOutScmResult result = scmManager.getProviderByRepository( getScmRepository() ).checkOut(
-            getScmRepository(), getScmFileSet(), "1.107.4" );
+            getScmRepository(), getScmFileSet(), "MAVEN_1_0" );
 
         if ( !result.isSuccess() )
         {

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/repository/CVSROOT/val-tags
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/repository/CVSROOT/val-tags?rev=375600&r1=375599&r2=375600&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/repository/CVSROOT/val-tags (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/repository/CVSROOT/val-tags Tue Feb  7 05:48:03 2006
@@ -0,0 +1 @@
+MAVEN_1_0 y

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/repository/CVSROOT/val-tags.db
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/repository/CVSROOT/val-tags.db?rev=375600&view=auto
==============================================================================
Binary file - no diff available.

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-cvs/src/test/repository/CVSROOT/val-tags.db
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream