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 2008/05/22 23:31:24 UTC
svn commit: r659265 - in
/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn:
maven-scm-provider-svn-commons/
maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/util/
maven-scm-provider-svn-commons/src/main/mdo/ mav...
Author: evenisse
Date: Thu May 22 14:31:23 2008
New Revision: 659265
URL: http://svn.apache.org/viewvc?rev=659265&view=rev
Log:
[SCM-368] Fix Windows path length limitations
Added:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/resources/svn/update/
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/resources/svn/update/cygwin/
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/resources/svn/update/cygwin/svn-settings.xml (with props)
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/util/SvnUtil.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/mdo/svn-settings.mdo
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommandTest.java
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml?rev=659265&r1=659264&r2=659265&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml Thu May 22 14:31:23 2008
@@ -43,7 +43,7 @@
</execution>
</executions>
<configuration>
- <version>1.0.0</version>
+ <version>1.1.0</version>
<model>src/main/mdo/svn-settings.mdo</model>
</configuration>
</plugin>
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/util/SvnUtil.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/util/SvnUtil.java?rev=659265&r1=659264&r2=659265&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/util/SvnUtil.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/util/SvnUtil.java Thu May 22 14:31:23 2008
@@ -34,14 +34,20 @@
*/
public class SvnUtil
{
+ protected static final String SVN_SETTINGS_FILENAME = "svn-settings.xml";
+
+ public static final File DEFAULT_SETTINGS_DIRECTORY = new File( System.getProperty( "user.home" ), ".scm" );
+
+ private static File settingsDirectory = DEFAULT_SETTINGS_DIRECTORY;
+
private SvnUtil()
{
}
public static Settings getSettings()
{
- File scmUserDir = new File( System.getProperty( "user.home" ), ".scm" );
- File settingsFile = new File( scmUserDir, "svn-settings.xml" );
+ File scmUserDir = settingsDirectory;
+ File settingsFile = new File( scmUserDir, SVN_SETTINGS_FILENAME );
if ( settingsFile.exists() )
{
@@ -68,4 +74,9 @@
return new Settings();
}
+
+ public static void setSettingsDirectory( File directory )
+ {
+ settingsDirectory = directory;
+ }
}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/mdo/svn-settings.mdo
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/mdo/svn-settings.mdo?rev=659265&r1=659264&r2=659265&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/mdo/svn-settings.mdo (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/mdo/svn-settings.mdo Thu May 22 14:31:23 2008
@@ -22,6 +22,15 @@
Instructs Subversion to read configuration information from the specified directory instead of the default location.
]]></description>
</field>
+ <field>
+ <name>useCygwinPath</name>
+ <version>1.1.0+</version>
+ <type>boolean</type>
+ <defaultValue>false</defaultValue>
+ <description><![CDATA[
+ Must be true if svn is a cygwin svn command.
+ ]]></description>
+ </field>
</fields>
</class>
</classes>
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommand.java?rev=659265&r1=659264&r2=659265&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommand.java Thu May 22 14:31:23 2008
@@ -34,6 +34,8 @@
import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
import org.apache.maven.scm.provider.svn.svnexe.command.SvnCommandLineUtils;
import org.apache.maven.scm.provider.svn.svnexe.command.changelog.SvnChangeLogCommand;
+import org.apache.maven.scm.provider.svn.util.SvnUtil;
+import org.apache.maven.scm.providers.svn.settings.Settings;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.cli.CommandLineException;
import org.codehaus.plexus.util.cli.CommandLineUtils;
@@ -88,6 +90,17 @@
public static Commandline createCommandLine( SvnScmProviderRepository repository, File workingDirectory,
ScmVersion version )
{
+ Settings settings = SvnUtil.getSettings();
+
+ String workingDir = workingDirectory.getAbsolutePath();
+
+ if ( settings.isUseCygwinPath() )
+ {
+ workingDir = "/cygdrive/" + workingDir;
+ workingDir = StringUtils.replace( workingDir, ":", "" );
+ workingDir = StringUtils.replace( workingDir, "\\", "/" );
+ }
+
if ( version != null && StringUtils.isEmpty( version.getName() ) )
{
version = null;
@@ -105,7 +118,7 @@
cl.createArgument().setValue( version.getName() );
}
- cl.createArgument().setValue( workingDirectory.getAbsolutePath() );
+ cl.createArgument().setValue( workingDir );
}
else
{
@@ -123,7 +136,7 @@
cl.createArgument().setValue(
SvnTagBranchUtils.resolveBranchUrl( repository, (ScmBranch) version ) );
}
- cl.createArgument().setValue( workingDirectory.getAbsolutePath() );
+ cl.createArgument().setValue( workingDir );
}
}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommandTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommandTest.java?rev=659265&r1=659264&r2=659265&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommandTest.java Thu May 22 14:31:23 2008
@@ -25,7 +25,9 @@
import org.apache.maven.scm.ScmTestCase;
import org.apache.maven.scm.ScmVersion;
import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
+import org.apache.maven.scm.provider.svn.util.SvnUtil;
import org.apache.maven.scm.repository.ScmRepository;
+import org.codehaus.plexus.util.Os;
import org.codehaus.plexus.util.cli.Commandline;
import java.io.File;
@@ -102,6 +104,20 @@
getUpdateTestFile().getAbsolutePath() );
}
+ public void testCommandLineWithCygwinProperty()
+ throws Exception
+ {
+ if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
+ {
+ SvnUtil.setSettingsDirectory( getTestFile( "src/test/resources/svn/update/cygwin" ) );
+ assertTrue( SvnUtil.getSettings().isUseCygwinPath() );
+ testCommandLine( "scm:svn:http://foo.com/svn/trunk", null,
+ "svn --non-interactive update /cygdrive/c/my_working_directory",
+ new File( "C:\\my_working_directory" ) );
+ SvnUtil.setSettingsDirectory( SvnUtil.DEFAULT_SETTINGS_DIRECTORY );
+ }
+ }
+
public void testCommandLineWithRelativeURLTag()
throws Exception
{
@@ -165,6 +181,12 @@
{
File workingDirectory = getUpdateTestFile();
+ testCommandLine( scmUrl, version, commandLine, workingDirectory );
+ }
+
+ private void testCommandLine( String scmUrl, ScmVersion version, String commandLine, File workingDirectory )
+ throws Exception
+ {
Commandline cl = SvnUpdateCommand.createCommandLine( getSvnRepository( scmUrl ), workingDirectory, version );
assertCommandLine( commandLine, workingDirectory, cl );
Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/resources/svn/update/cygwin/svn-settings.xml
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/resources/svn/update/cygwin/svn-settings.xml?rev=659265&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/resources/svn/update/cygwin/svn-settings.xml (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/resources/svn/update/cygwin/svn-settings.xml Thu May 22 14:31:23 2008
@@ -0,0 +1,3 @@
+<svn-settings>
+ <useCygwinPath>true</useCygwinPath>
+</svn-settings>
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/resources/svn/update/cygwin/svn-settings.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/resources/svn/update/cygwin/svn-settings.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision