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" );