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/12/08 10:56:46 UTC

svn commit: r355058 - in /maven/scm/trunk: maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/ maven-scm-providers/maven-scm-provider-starteam...

Author: evenisse
Date: Thu Dec  8 01:56:32 2005
New Revision: 355058

URL: http://svn.apache.org/viewcvs?rev=355058&view=rev
Log:
PR: SCM-104
Submitted by: Dan Tran

This patch converts all absolute file paths in ScmFileSet to relative paths of basedir.

It also:
 o adds @aggegator to scm:edit and scm:unedit mojos
 o corrects the wrong logger string in Unedit command ( from lock to unlock) 

Added:
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/StarteamScmProviderTest.java   (with props)
Modified:
    maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/EditMojo.java
    maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/UnEditMojo.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/StarteamScmProvider.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumer.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/SvnTagBranchUtilsTest.java

Modified: maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/EditMojo.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/EditMojo.java?rev=355058&r1=355057&r2=355058&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/EditMojo.java (original)
+++ maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/EditMojo.java Thu Dec  8 01:56:32 2005
@@ -26,7 +26,7 @@
 /**
  * Edit/lock a set of files
  * @goal edit
- *
+ * @aggregator
  * @author <a href="dantran@apache.org">Dan Tran</a>
  * @version $Id$
  */

Modified: maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/UnEditMojo.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/UnEditMojo.java?rev=355058&r1=355057&r2=355058&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/UnEditMojo.java (original)
+++ maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/UnEditMojo.java Thu Dec  8 01:56:32 2005
@@ -26,7 +26,7 @@
 /**
  * Unedit/unlock a set of files
  * @goal unedit
- *
+ * @aggregator
  * @author <a href="dantran@apache.org">Dan Tran</a>
  * @version $Id$
  */

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/StarteamScmProvider.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/StarteamScmProvider.java?rev=355058&r1=355057&r2=355058&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/StarteamScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/StarteamScmProvider.java Thu Dec  8 01:56:32 2005
@@ -16,6 +16,9 @@
  * limitations under the License.
  */
 
+import java.io.File;
+import java.io.IOException;
+
 import org.apache.maven.scm.CommandParameters;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
@@ -150,6 +153,8 @@
     public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
+        fileSet = fixUpScmFileSetAbsoluteFilePath ( fileSet );
+    	
         StarteamAddCommand command = new StarteamAddCommand();
 
         command.setLogger( getLogger() );
@@ -163,6 +168,8 @@
     public ChangeLogScmResult changelog( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
+        fileSet = fixUpScmFileSetAbsoluteFilePath ( fileSet );
+    	
         StarteamChangeLogCommand command = new StarteamChangeLogCommand();
 
         command.setLogger( getLogger() );
@@ -176,6 +183,8 @@
     public CheckInScmResult checkin( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
+        fileSet = fixUpScmFileSetAbsoluteFilePath ( fileSet );
+    	
         StarteamCheckInCommand command = new StarteamCheckInCommand();
 
         command.setLogger( getLogger() );
@@ -189,6 +198,8 @@
     public CheckOutScmResult checkout( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
+        fileSet = fixUpScmFileSetAbsoluteFilePath ( fileSet );
+    	
         StarteamCheckOutCommand command = new StarteamCheckOutCommand();
 
         command.setLogger( getLogger() );
@@ -202,6 +213,8 @@
     public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
+        fileSet = fixUpScmFileSetAbsoluteFilePath ( fileSet );
+        
         StarteamDiffCommand command = new StarteamDiffCommand();
 
         command.setLogger( getLogger() );
@@ -215,6 +228,8 @@
     public StatusScmResult status( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
+        fileSet = fixUpScmFileSetAbsoluteFilePath ( fileSet );
+    	
         StarteamStatusCommand command = new StarteamStatusCommand();
 
         command.setLogger( getLogger() );
@@ -228,6 +243,8 @@
     public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
+        fileSet = fixUpScmFileSetAbsoluteFilePath ( fileSet );
+    	
         StarteamTagCommand command = new StarteamTagCommand();
 
         command.setLogger( getLogger() );
@@ -241,6 +258,8 @@
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
+        fileSet = fixUpScmFileSetAbsoluteFilePath ( fileSet );
+    	
         StarteamUpdateCommand command = new StarteamUpdateCommand();
 
         command.setLogger( getLogger() );
@@ -251,6 +270,8 @@
     protected EditScmResult edit( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
+    	fileSet = fixUpScmFileSetAbsoluteFilePath ( fileSet );
+    	
         StarteamEditCommand command = new StarteamEditCommand();
 
         command.setLogger( getLogger() );
@@ -261,11 +282,73 @@
     protected UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
+    	fileSet = fixUpScmFileSetAbsoluteFilePath ( fileSet );
+    	
         StarteamUnEditCommand command = new StarteamUnEditCommand();
 
         command.setLogger( getLogger() );
 
         return (UnEditScmResult) command.execute( repository.getProviderRepository(), fileSet, parameters );
     }
+
+    /**
+     * Starteam provider requires that all files in ScmFileSet must be relative to basedir
+     * This function ensures and converts all absolute paths to relative paths
+     * @param currentFileSet
+     * @return
+     * @throws ScmException
+     */
+    private static ScmFileSet fixUpScmFileSetAbsoluteFilePath( ScmFileSet currentFileSet )
+        throws ScmException
+    {
+        ScmFileSet newFileSet = null;
+        try 
+        {
+    	    File basedir = getAbsoluteFilePath( currentFileSet.getBasedir() );
+    	
+            File [] files = currentFileSet.getFiles();
+        
+            for ( int i = 0 ; i < files.length; ++i )
+            {
+                if ( files[i].isAbsolute() )
+                {
+                    files[i] = new File( getRelativePath( basedir, files[i] ) );
+                }
+            }
+            
+            newFileSet = new ScmFileSet( basedir, files );
+        }
+        catch ( IOException e )
+        {
+            throw new ScmException ( "Invalid file set.", e );
+        }
+    	
+        return newFileSet;
+    }
+    
+    public static String getRelativePath( File basedir, File f )
+        throws ScmException, IOException
+    {
+	    File fileOrDir = getAbsoluteFilePath( f );
+	    
+        if ( !fileOrDir.getPath().startsWith( basedir.getPath() ) )
+        {
+            throw new ScmException ( fileOrDir.getPath() + " was not contained in " + basedir.getPath() );
+        }
+        	
+        return fileOrDir.getPath().substring( basedir.getPath().length() + 1, fileOrDir.getPath().length() );
+    }
     
+    private static File getAbsoluteFilePath( File fileOrDir )
+        throws IOException 
+    {
+        String javaPathString = fileOrDir.getCanonicalPath().replace( '\\', '/' ) ;
+    	
+        if ( javaPathString.endsWith("/") )
+        {
+        	javaPathString = javaPathString.substring( 0, javaPathString.length() - 1 );
+        }
+
+        return new File ( javaPathString );
+    }
 }

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumer.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumer.java?rev=355058&r1=355057&r2=355058&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumer.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumer.java Thu Dec  8 01:56:32 2005
@@ -107,7 +107,7 @@
 
         this.files.add( new ScmFile( lockedFilePath, ScmFileStatus.UNKNOWN) );
 
-        this.logger.info( "Locked: " + lockedFilePath );
+        this.logger.info( "Unlocked: " + lockedFilePath );
     }
 
 

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/StarteamScmProviderTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/StarteamScmProviderTest.java?rev=355058&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/StarteamScmProviderTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/StarteamScmProviderTest.java Thu Dec  8 01:56:32 2005
@@ -0,0 +1,78 @@
+package org.apache.maven.scm.provider.starteam;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+import java.io.File;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmTestCase;
+
+/**
+ * @author <a href="mailto:dantran@gmail.com">Dan T. Tran</a>
+ * @version
+ */
+public class StarteamScmProviderTest
+    extends ScmTestCase
+{
+    
+    public void testGoodGetRelativeFile()
+        throws Exception
+    {
+    	File basedir = new File ( getBasedir() );
+    	
+    	File testDir = new File( basedir.getPath() + "/target/../target/testdir" );
+    	
+    	testDir.mkdirs();
+    	
+    	File testFile = new File ( testDir, "testfile.txt" );
+    	
+    	testFile.createNewFile();
+    	
+    	String relativePath = StarteamScmProvider.getRelativePath( basedir, testFile );
+    	
+    	assertEquals( "target/testdir/testfile.txt", relativePath.replace("\\", "/") );
+    	
+    }
+    
+    public void testBadGetRelativeFile()
+        throws Exception
+    {
+        File basedir = new File ( getBasedir() );
+	
+        File testDir1 = new File( basedir.getPath() + "/target/testdir1" );
+        testDir1.mkdirs();
+
+        File testDir2 = new File( basedir.getPath() + "/target/testdir2" );
+        testDir2.mkdirs();
+	
+        File testFile = new File ( testDir1, "testfile.txt" );
+	
+        testFile.createNewFile();
+	
+        try 
+        {
+        	StarteamScmProvider.getRelativePath( testDir2, testFile );
+        	fail( "Bad relative path found!" );
+        }
+        catch ( ScmException e )
+        {
+        	
+        }
+	
+    }
+    
+ }

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/StarteamScmProviderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/StarteamScmProviderTest.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/SvnTagBranchUtilsTest.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/SvnTagBranchUtilsTest.java?rev=355058&r1=355057&r2=355058&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/SvnTagBranchUtilsTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/SvnTagBranchUtilsTest.java Thu Dec  8 01:56:32 2005
@@ -128,6 +128,8 @@
 
         testResolveTagUrl( "scm:svn:http://foo.com/svn/trunk", "my-tag", "http://foo.com/svn/tags/my-tag" );
 
+        testResolveTagUrl( "scm:svn:http://foo.com/svn/trunk/", "my-tag", "http://foo.com/svn/tags/my-tag" );
+
         testResolveTagUrl( "scm:svn:http://foo.com/svn/branches", "my-tag", "http://foo.com/svn/tags/my-tag" );
 
         testResolveTagUrl( "scm:svn:http://foo.com/svn/tags", "my-tag", "http://foo.com/svn/tags/my-tag" );