You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2018/09/08 23:36:23 UTC

[maven-scm] 01/01: [SCM-859] Subversion commands don't work if directory/URL contains '@'

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch SCM-859
in repository https://gitbox.apache.org/repos/asf/maven-scm.git

commit 67b4a1850fecff25dda70bf0dd34e08acf435069
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Sun Sep 9 01:35:53 2018 +0200

    [SCM-859] Subversion commands don't work if directory/URL contains '@'
---
 .../provider/svn/svnexe/command/branch/SvnBranchCommand.java | 12 +++++++-----
 .../svn/svnexe/command/changelog/SvnChangeLogCommand.java    |  8 +++++---
 .../svn/svnexe/command/checkout/SvnCheckOutCommand.java      |  2 +-
 .../svn/svnexe/command/export/SvnExeExportCommand.java       |  4 ++--
 .../scm/provider/svn/svnexe/command/info/SvnInfoCommand.java |  2 +-
 .../scm/provider/svn/svnexe/command/list/SvnListCommand.java |  2 +-
 .../provider/svn/svnexe/command/mkdir/SvnMkdirCommand.java   |  2 +-
 .../svn/svnexe/command/remoteinfo/SvnRemoteInfoCommand.java  |  6 +++---
 .../scm/provider/svn/svnexe/command/tag/SvnTagCommand.java   |  9 ++++++---
 .../provider/svn/svnexe/command/update/SvnUpdateCommand.java | 11 ++++++-----
 10 files changed, 33 insertions(+), 25 deletions(-)

diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnBranchCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnBranchCommand.java
index b5c78a4..46e8f80 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnBranchCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnBranchCommand.java
@@ -56,7 +56,7 @@ public class SvnBranchCommand
     extends AbstractBranchCommand
     implements SvnCommand
 {
-    
+
     public ScmResult executeBranchCommand( ScmProviderRepository repo, ScmFileSet fileSet, String branch,
                                            ScmBranchParameters scmBranchParameters )
     throws ScmException
@@ -150,7 +150,7 @@ public class SvnBranchCommand
 
         return new BranchScmResult( cl.toString(), fileList );
     }
-    
+
     /** {@inheritDoc} */
     public ScmResult executeBranchCommand( ScmProviderRepository repo, ScmFileSet fileSet, String branch,
                                            String message )
@@ -172,7 +172,7 @@ public class SvnBranchCommand
         scmBranchParameters.setPinExternals( false );
         return createCommandLine( repository, workingDirectory, branch, messageFile, scmBranchParameters );
     }
-    
+
     public static Commandline createCommandLine( SvnScmProviderRepository repository, File workingDirectory,
                                                  String branch, File messageFile,
                                                  ScmBranchParameters scmBranchParameters )
@@ -203,7 +203,8 @@ public class SvnBranchCommand
                 cl.createArg().setValue( "--revision" );
                 cl.createArg().setValue( scmBranchParameters.getScmRevision() );
             }
-            cl.createArg().setValue( SvnCommandUtils.fixUrl( repository.getUrl(), repository.getUser() ) );
+            String url = SvnCommandUtils.fixUrl( repository.getUrl(), repository.getUser() );
+            cl.createArg().setValue( url + "@" );
         }
         else
         {
@@ -211,7 +212,8 @@ public class SvnBranchCommand
         }
         // Note: this currently assumes you have the branch base checked out too
         String branchUrl = SvnTagBranchUtils.resolveBranchUrl( repository, new ScmBranch( branch ) );
-        cl.createArg().setValue( SvnCommandUtils.fixUrl( branchUrl, repository.getUser() ) );
+        branchUrl = SvnCommandUtils.fixUrl( branchUrl, repository.getUser() );
+        cl.createArg().setValue( branchUrl + "@" );
 
         return cl;
     }
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommand.java
index d619a34..65b90df 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommand.java
@@ -209,17 +209,19 @@ public class SvnChangeLogCommand
             // the changelog of that branch, but limit it to paths that also occur in this repository.
             if ( branch instanceof ScmTag )
             {
-                cl.createArg().setValue( SvnTagBranchUtils.resolveTagUrl( repository, (ScmTag) branch ) );
+                String tagUrl = SvnTagBranchUtils.resolveTagUrl( repository, (ScmTag) branch );
+                cl.createArg().setValue( tagUrl + "@" );
             }
             else
             {
-                cl.createArg().setValue( SvnTagBranchUtils.resolveBranchUrl( repository, branch ) );
+                String branchUrl = SvnTagBranchUtils.resolveBranchUrl( repository, branch );
+                cl.createArg().setValue( branchUrl + "@" );
             }
         }
 
         if ( endVersion == null || !StringUtils.equals( "BASE", endVersion.getName() ) )
         {
-            cl.createArg().setValue( repository.getUrl() );
+            cl.createArg().setValue( repository.getUrl() + "@" );
         }
 
         return cl;
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommand.java
index 0379047..8adb689 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommand.java
@@ -165,7 +165,7 @@ public class SvnCheckOutCommand
             }
         }
 
-        cl.createArg().setValue( url );
+        cl.createArg().setValue( url + "@" );
 
         cl.createArg().setValue( workingDirectory.getAbsolutePath() );
 
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/export/SvnExeExportCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/export/SvnExeExportCommand.java
index cfee2b1..6ef3fa6 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/export/SvnExeExportCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/export/SvnExeExportCommand.java
@@ -142,11 +142,11 @@ public class SvnExeExportCommand
                 cl.createArg().setValue( version.getName() );
             }
         }
-        
+
         //support exporting to an existing directory
         cl.createArg().setValue( "--force" );
 
-        cl.createArg().setValue( url );
+        cl.createArg().setValue( url + "@" );
 
         if ( StringUtils.isNotEmpty( outputSirectory ) )
         {
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/info/SvnInfoCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/info/SvnInfoCommand.java
index 758c188..438c7c7 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/info/SvnInfoCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/info/SvnInfoCommand.java
@@ -126,7 +126,7 @@ public class SvnInfoCommand
             }
             else
             {
-                cl.createArg().setValue( repository.getUrl() + "/" + file.getPath().replace( '\\', '/' ) );
+                cl.createArg().setValue( repository.getUrl() + "/" + file.getPath().replace( '\\', '/' ) + "@" );
             }
         }
 
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/list/SvnListCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/list/SvnListCommand.java
index e9c47f9..553b080 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/list/SvnListCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/list/SvnListCommand.java
@@ -118,7 +118,7 @@ public class SvnListCommand
         {
             File file = it.next();
 
-            cl.createArg().setValue( repository.getUrl() + "/" + file.getPath().replace( '\\', '/' ) );
+            cl.createArg().setValue( repository.getUrl() + "/" + file.getPath().replace( '\\', '/' ) + "@" );
         }
 
         return cl;
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirCommand.java
index 0f10d26..bcc96aa 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirCommand.java
@@ -145,7 +145,7 @@ public class SvnMkdirCommand
 
         if ( !createInLocal )
         {
-            cl.createArg().setValue( repository.getUrl() + "/" + dirPath );
+            cl.createArg().setValue( repository.getUrl() + "/" + dirPath + "@" );
 
             if ( messageFile != null )
             {
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnRemoteInfoCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnRemoteInfoCommand.java
index df364a3..75c4724 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnRemoteInfoCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnRemoteInfoCommand.java
@@ -64,7 +64,7 @@ public class SvnRemoteInfoCommand
 
         cl.createArg().setValue( "ls" );
 
-        cl.createArg().setValue( baseUrl + "/tags" );
+        cl.createArg().setValue( baseUrl + "/tags" + "@" );
 
         CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
 
@@ -95,7 +95,7 @@ public class SvnRemoteInfoCommand
 
         cl.createArg().setValue( "ls" );
 
-        cl.createArg().setValue( baseUrl + "/tags" );
+        cl.createArg().setValue( baseUrl + "/tags" + "@" );
 
         stderr = new CommandLineUtils.StringStreamConsumer();
 
@@ -131,7 +131,7 @@ public class SvnRemoteInfoCommand
 
         cl.createArg().setValue( "ls" );
 
-        cl.createArg().setValue( url );
+        cl.createArg().setValue( url + "@" );
 
         CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
 
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnTagCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnTagCommand.java
index 0e96e97..108a03e 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnTagCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnTagCommand.java
@@ -223,7 +223,8 @@ public class SvnTagCommand
 
         // Note: this currently assumes you have the tag base checked out too
         String tagUrl = SvnTagBranchUtils.resolveTagUrl( repository, new ScmTag( tag ) );
-        cl.createArg().setValue( SvnCommandUtils.fixUrl( tagUrl, repository.getUser() ) );
+        tagUrl = SvnCommandUtils.fixUrl( tagUrl, repository.getUser() );
+        cl.createArg().setValue( tagUrl + "@" );
 
         return cl;
     }
@@ -261,7 +262,8 @@ public class SvnTagCommand
 
         if ( scmTagParameters != null && scmTagParameters.isRemoteTagging() )
         {
-            cl.createArg().setValue( SvnCommandUtils.fixUrl( repository.getUrl(), repository.getUser() ) );
+            String url = SvnCommandUtils.fixUrl( repository.getUrl(), repository.getUser() );
+            cl.createArg().setValue( url + "@" );
         }
         else
         {
@@ -270,7 +272,8 @@ public class SvnTagCommand
 
         // Note: this currently assumes you have the tag base checked out too
         String tagUrl = SvnTagBranchUtils.resolveTagUrl( repository, new ScmTag( tag ) );
-        cl.createArg().setValue( SvnCommandUtils.fixUrl( tagUrl, repository.getUser() ) );
+        tagUrl = SvnCommandUtils.fixUrl( tagUrl, repository.getUser() );
+        cl.createArg().setValue( tagUrl + "@" );
 
         return cl;
     }
diff --git a/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 b/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
index 5edcbbc..b4c1ac3 100644
--- a/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
+++ b/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
@@ -90,14 +90,14 @@ public class SvnUpdateCommand
 
         UpdateScmResultWithRevision result = new UpdateScmResultWithRevision( cl.toString(), consumer.getUpdatedFiles(),
                                                 String.valueOf( consumer.getRevision() ) );
-        
+
         result.setChanges( consumer.getChangeSets() );
 
         if ( getLogger().isDebugEnabled() )
         {
             getLogger().debug( "changeSets " + consumer.getChangeSets() );
         }
-        
+
         return result;
     }
 
@@ -147,12 +147,13 @@ public class SvnUpdateCommand
                 cl.createArg().setValue( "switch" );
                 if ( version instanceof ScmTag )
                 {
-                    cl.createArg().setValue( SvnTagBranchUtils.resolveTagUrl( repository, (ScmTag) version ) );
+                    String tagUrl = SvnTagBranchUtils.resolveTagUrl( repository, (ScmTag) version );
+                    cl.createArg().setValue( tagUrl + "@" );
                 }
                 else
                 {
-                    cl.createArg().setValue(
-                        SvnTagBranchUtils.resolveBranchUrl( repository, (ScmBranch) version ) );
+                    String branchUrl = SvnTagBranchUtils.resolveBranchUrl( repository, (ScmBranch) version );
+                    cl.createArg().setValue( branchUrl + "@" );
                 }
                 cl.createArg().setValue( workingDir );
             }