Author: evenisse
Date: Fri Mar 3 03:45:14 2006
New Revision: 382770
URL: http://svn.apache.org/viewcvs?rev=382770&view=rev
Log:
Fix put method when we have some sub-directories
Modified:
maven/sandbox/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java
maven/sandbox/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmCvsWagonTest.java
Modified:
maven/sandbox/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java
URL:
http://svn.apache.org/viewcvs/maven/sandbox/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java?rev=382770&r1=382769&r2=382770&view=diff
==============================================================================
---
maven/sandbox/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java
(original)
+++
maven/sandbox/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java
Fri Mar 3 03:45:14 2006
@@ -133,16 +133,13 @@
}
private void putInternal( File source, String resourceName )
- throws TransferFailedException, ResourceDoesNotExistException,
AuthorizationException
+ throws TransferFailedException
{
Resource resource = new Resource( resourceName );
firePutInitiated( resource, source );
- String url = getRepository().getUrl() + "/" + resourceName;
-
- // remove the file
- url = url.substring( 0, url.lastIndexOf( '/' ) );
+ String url = getRepository().getUrl();
ScmRepository scmRepository = getScmRepository( url );
@@ -151,13 +148,14 @@
try
{
File scmFile = new File( checkoutDirectory, resourceName );
+
File basedir = scmFile.getParentFile();
String msg = "Adding " + resourceName + " to repository";
ScmProvider scmProvider = scmManager.getProviderByRepository(
scmRepository );
ScmResult result;
-
+
//TODO check in other way non svn, cvs specific
if ( new File( basedir, ".svn" ).exists() || new File( basedir,
"CVS" ).exists() )
{
@@ -171,9 +169,8 @@
if ( lastOne != null )
{
checkScmResult( result );
- result = scmProvider.checkIn( scmRepository,
- new ScmFileSet(
lastOne.getParentFile(), lastOne ), null,
- msg );
+ result = scmProvider.checkIn( scmRepository, new
ScmFileSet( lastOne.getParentFile(), lastOne ),
+ null, msg );
}
}
checkScmResult( result );
@@ -184,7 +181,7 @@
{
if ( source.isDirectory() )
{
- FileUtils.copyDirectory( source, scmFile );
+ FileUtils.copyDirectoryStructure( source, scmFile );
}
else
{
@@ -194,9 +191,9 @@
if ( !fileAlreadyInScm )
{
- result = scmProvider.add( scmRepository, new ScmFileSet(
basedir, scmFile ) );
- checkScmResult( result );
+ addFiles( scmProvider, scmRepository, basedir, scmFile );
}
+
result = scmProvider.checkIn( scmRepository, new ScmFileSet(
basedir, scmFile ), null, msg );
checkScmResult( result );
@@ -218,6 +215,27 @@
firePutCompleted( resource, source );
}
+ private void addFiles( ScmProvider scmProvider, ScmRepository
scmRepository, File basedir, File scmFile )
+ throws TransferFailedException, ScmException
+ {
+ ScmResult result = scmProvider.add( scmRepository, new ScmFileSet(
basedir, scmFile ) );
+
+ checkScmResult( result );
+
+ if ( scmFile.isDirectory() )
+ {
+ File[] files = scmFile.listFiles();
+
+ for ( int i = 0; i < files.length; i++ )
+ {
+ if ( !"CVS".equals( files[i].getName() ) && !".svn".equals(
files[i].getName() ) )
+ {
+ addFiles( scmProvider, scmRepository, basedir, files[i] );
+ }
+ }
+ }
+ }
+
public boolean supportsDirectoryCopy()
{
return true;
@@ -233,12 +251,13 @@
putInternal( sourceDirectory, destinationDirectory );
}
- private void checkScmResult( ScmResult result ) throws
TransferFailedException
+ private void checkScmResult( ScmResult result )
+ throws TransferFailedException
{
if ( !result.isSuccess() )
{
- throw new TransferFailedException( "Unable to commit file. " +
result.getProviderMessage() + " "
- + result.getCommandOutput() );
+ throw new TransferFailedException(
+ "Unable to commit file. " + result.getProviderMessage() + " "
+ result.getCommandOutput() );
}
}
Modified:
maven/sandbox/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmCvsWagonTest.java
URL:
http://svn.apache.org/viewcvs/maven/sandbox/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmCvsWagonTest.java?rev=382770&r1=382769&r2=382770&view=diff
==============================================================================
---
maven/sandbox/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmCvsWagonTest.java
(original)
+++
maven/sandbox/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmCvsWagonTest.java
Fri Mar 3 03:45:14 2006
@@ -52,7 +52,7 @@
private File getCheckoutDirectory()
{
- return new File( FileTestUtils.getTestOutputDir(), "/checkout-cvs");
+ return new File( FileTestUtils.getTestOutputDir(), "/checkout-cvs" );
}
protected String getProtocol()
@@ -65,13 +65,6 @@
{
String repository = getTestFile( "target/test-classes/test-repo-cvs"
).getAbsolutePath();
- // TODO: this is a hack for windows
- if ( repository.indexOf( ":" ) >= 0 )
- {
- repository = repository.substring( repository.indexOf( ":" ) + 1 );
- }
- repository = repository.replace( '\\', '/' );
-
- return "scm:cvs:local:" + repository + ":repository";
+ return "scm:cvs|local|" + repository + "|repository";
}
}