Merge branch 'pr-64'
This closes #64
diff --git a/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/AbstractCvsListCommand.java b/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/AbstractCvsListCommand.java
index 5c7d1d0..aa284b5 100644
--- a/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/AbstractCvsListCommand.java
+++ b/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/AbstractCvsListCommand.java
@@ -31,6 +31,7 @@
import org.apache.maven.scm.provider.cvslib.command.CvsCommand;
import org.apache.maven.scm.provider.cvslib.command.CvsCommandUtils;
import org.apache.maven.scm.provider.cvslib.repository.CvsScmProviderRepository;
+import org.codehaus.plexus.util.Os;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.cli.Commandline;
@@ -47,6 +48,29 @@
ScmVersion version )
throws ScmException
{
+ for ( Boolean supD = rlsSUPPORTSD;; supD = Boolean.FALSE )
+ {
+ ListScmResult res = executeListCommand1( repo, fileSet, recursive, version, supD );
+ if ( res.isSuccess() || supD != null )
+ {
+ if ( rlsSUPPORTSD == null && res.isSuccess() )
+ {
+ rlsSUPPORTSD = supD == null ? Boolean.TRUE : supD;
+ }
+ return res;
+ }
+ // first attempt failed, support unknown
+ // rls: invalid option -- d
+ }
+ }
+
+ // cvsnt does not support rls -d; Msys/Cygwin do.
+ private static Boolean rlsSUPPORTSD = Os.isFamily( Os.FAMILY_WINDOWS ) ? null : Boolean.TRUE;
+
+ private ListScmResult executeListCommand1( ScmProviderRepository repo, ScmFileSet fileSet, boolean recursive,
+ ScmVersion version, Boolean supD )
+ throws ScmException
+ {
CvsScmProviderRepository repository = (CvsScmProviderRepository) repo;
Commandline cl = CvsCommandUtils.getBaseCommand( "rls", repository, fileSet, "-n" );
@@ -57,7 +81,10 @@
cl.createArg().setValue( version.getName() );
}
- cl.createArg().setValue( "-d" );
+ if ( supD != Boolean.FALSE )
+ {
+ cl.createArg().setValue( "-d" );
+ }
cl.createArg().setValue( "-e" ); // szakusov: to fix "Unknown file status" problem
if ( recursive )
@@ -65,6 +92,16 @@
cl.createArg().setValue( "-R" );
}
+ String modulePref = repository.getModule();
+ if ( !StringUtils.isEmpty( modulePref ) )
+ {
+ modulePref += File.separatorChar;
+ }
+ else
+ {
+ modulePref = "";
+ }
+
for ( Iterator<File> it = fileSet.getFileList().iterator(); it.hasNext(); )
{
File target = (File) it.next();
@@ -73,6 +110,7 @@
{
path = path.substring( 1 );
}
+ path = modulePref + path;
cl.createArg().setValue( path );
}
diff --git a/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/util/CvsConnection.java b/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/util/CvsConnection.java
index 241e63a..53323aa 100644
--- a/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/util/CvsConnection.java
+++ b/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/util/CvsConnection.java
@@ -399,11 +399,7 @@
public static boolean processCommand( String[] args, String localPath, CVSListener listener, ScmLogger logger )
throws Exception
{
- // Set up the CVSRoot. Note that it might still be null after this
- // call if the user has decided to set it with the -d command line
- // global option
GlobalOptions globalOptions = new GlobalOptions();
- globalOptions.setCVSRoot( getCVSRoot( localPath ) );
// Set up any global options specified. These occur before the
// name of the command to run
@@ -422,14 +418,21 @@
return false;
}
- // if we don't have a CVS root by now, the user has messed up
+ // CVSRoot might still be null if the user has NOT decided to set
+ // it with the -d command line global option
if ( globalOptions.getCVSRoot() == null )
{
- if ( logger.isErrorEnabled() )
+ String cvsRoot = getCVSRoot( localPath );
+ if ( cvsRoot == null )
{
- logger.error( "No CVS root is set. Check your <repository> information in the POM." );
+ // if we don't have a CVS root by now, the user has messed up
+ if ( logger.isErrorEnabled() )
+ {
+ logger.error( "No CVS root is set. Check your <repository> information in the POM." );
+ }
+ return false;
}
- return false;
+ globalOptions.setCVSRoot( cvsRoot );
}
// parse the CVS root into its constituent parts
diff --git a/pom.xml b/pom.xml
index 8fb67ea..bb81d87 100644
--- a/pom.xml
+++ b/pom.xml
@@ -341,6 +341,7 @@
<artifactId>apache-rat-plugin</artifactId>
<configuration>
<excludes combine.children="append">
+ <exclude>.checkstyle</exclude>
<exclude>.gitignore</exclude>
<exclude>README.txt</exclude>
<exclude>*.sh</exclude>