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

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

commit 5d92f8297fdf612305bf5ca9bea0a1beeb2c6640
Author: Ilya Basin <basini...@gmail.com>
AuthorDate: Sun Feb 18 22:49:30 2018 +0300

    [WAGON-498] ScmWagon should work in binary mode when possible
    
    This closes #42
---
 .../apache/maven/wagon/providers/scm/ScmWagon.java | 35 ++++++++++++++++++----
 1 file changed, 30 insertions(+), 5 deletions(-)

diff --git 
a/wagon-providers/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java
 
b/wagon-providers/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java
index 8fbbdef..ceca314 100644
--- 
a/wagon-providers/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java
+++ 
b/wagon-providers/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java
@@ -19,6 +19,8 @@ package org.apache.maven.wagon.providers.scm;
  * under the License.
  */
 
+import org.apache.maven.scm.CommandParameter;
+import org.apache.maven.scm.CommandParameters;
 import org.apache.maven.scm.ScmBranch;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFile;
@@ -485,9 +487,9 @@ public class ScmWagon
                 repoUrl += "/" + target.replace( '\\', '/' );
             }
             scmRepository = getScmRepository( repoUrl );
+
             CheckOutScmResult ret =
-                scmProvider.checkOut( scmRepository, new ScmFileSet( new File( 
checkoutDirectory, "" ) ),
-                                      makeScmVersion(), false );
+                checkOut( scmProvider, scmRepository, new ScmFileSet( new 
File( checkoutDirectory, "" ) ) );
 
             checkScmResult( ret );
         }
@@ -551,7 +553,8 @@ public class ScmWagon
 
         if ( scmFilePath.length() != 0 )
         {
-            AddScmResult result = scmProvider.add( scmRepository, new 
ScmFileSet( basedir, new File( scmFilePath ) ) );
+            AddScmResult result =
+                scmProvider.add( scmRepository, new ScmFileSet( basedir, new 
File( scmFilePath ) ), mkBinaryFlag() );
 
             /*
              * TODO dirty fix to work around files with property 
svn:eol-style=native if a file has that property, first
@@ -560,7 +563,9 @@ public class ScmWagon
              */
             if ( !result.isSuccess() )
             {
-                result = scmProvider.add( scmRepository, new ScmFileSet( 
basedir, new File( scmFilePath ) ) );
+                result =
+                    scmProvider.add( scmRepository, new ScmFileSet( basedir, 
new File( scmFilePath ) ),
+                                     mkBinaryFlag() );
             }
 
             addedFiles = result.getAddedFiles().size();
@@ -584,6 +589,26 @@ public class ScmWagon
         return addedFiles;
     }
 
+    private CheckOutScmResult checkOut( ScmProvider scmProvider, ScmRepository 
scmRepository, ScmFileSet fileSet )
+        throws ScmException
+    {
+        ScmVersion ver = makeScmVersion();
+        CommandParameters parameters = mkBinaryFlag();
+        // TODO: AbstractScmProvider 6f7dd0c ignores checkOut() parameter 
"version"
+        parameters.setScmVersion( CommandParameter.SCM_VERSION, ver );
+        parameters.setString( CommandParameter.RECURSIVE, Boolean.toString( 
false ) );
+        parameters.setString( CommandParameter.SHALLOW, Boolean.toString( true 
) );
+
+        return scmProvider.checkOut( scmRepository, fileSet, ver, parameters );
+    }
+
+    private CommandParameters mkBinaryFlag() throws ScmException
+    {
+        CommandParameters parameters = new CommandParameters();
+        parameters.setString( CommandParameter.BINARY, Boolean.toString( true 
) );
+        return parameters;
+    }
+
     /**
      * @return true
      */
@@ -681,7 +706,7 @@ public class ScmWagon
                 // TODO: this should be checking out a full hierarchy 
(requires the -d equiv)
                 basedir.mkdirs();
 
-                scmProvider.checkOut( scmRepository, new ScmFileSet( basedir 
), makeScmVersion() );
+                checkOut( scmProvider, scmRepository, new ScmFileSet( basedir 
) );
             }
 
             if ( !scmFile.exists() )

-- 
To stop receiving notification emails like this one, please contact
micha...@apache.org.

Reply via email to