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

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


The following commit(s) were added to refs/heads/master by this push:
     new 5eb6ba7  [SCM-882] git checkout in binary mode when requested (#69)
5eb6ba7 is described below

commit 5eb6ba71313ba411a71088f4e3eecaa2df280a27
Author: basinilya <basini...@gmail.com>
AuthorDate: Fri Apr 13 06:17:14 2018 +0300

    [SCM-882] git checkout in binary mode when requested (#69)
---
 .../command/checkout/GitCheckOutCommand.java       | 44 +++++++++++++++++++---
 1 file changed, 38 insertions(+), 6 deletions(-)

diff --git 
a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java
 
b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java
index 296e51b..d2e8613 100644
--- 
a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java
+++ 
b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java
@@ -19,10 +19,15 @@ package 
org.apache.maven.scm.provider.git.gitexe.command.checkout;
  * under the License.
  */
 
+import java.io.File;
+
+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.ScmFileSet;
 import org.apache.maven.scm.ScmFileStatus;
+import org.apache.maven.scm.ScmResult;
 import org.apache.maven.scm.ScmTag;
 import org.apache.maven.scm.ScmVersion;
 import org.apache.maven.scm.command.checkout.AbstractCheckOutCommand;
@@ -39,8 +44,6 @@ import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
-import java.io.File;
-
 /**
  * @author <a href="mailto:strub...@yahoo.de";>Mark Struberg</a>
  *
@@ -57,10 +60,15 @@ public class GitCheckOutCommand
      * TODO We currently assume a '.git' directory, so this does not work for 
--bare repos
      * {@inheritDoc}
      */
-    protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repo, ScmFileSet fileSet,
-                                                       ScmVersion version, 
boolean recursive, boolean shallow )
+    @Override
+    public ScmResult executeCommand( ScmProviderRepository repo, ScmFileSet 
fileSet,
+                                     CommandParameters parameters )
         throws ScmException
     {
+        ScmVersion version = parameters.getScmVersion( 
CommandParameter.SCM_VERSION, null );
+        boolean binary = parameters.getBoolean( CommandParameter.BINARY, false 
);
+        boolean shallow = parameters.getBoolean( CommandParameter.SHALLOW, 
false );
+
         GitScmProviderRepository repository = (GitScmProviderRepository) repo;
 
         if ( GitScmProviderRepository.PROTOCOL_FILE.equals( 
repository.getFetchInfo().getProtocol() )
@@ -85,7 +93,7 @@ public class GitCheckOutCommand
             }
 
             // no git repo seems to exist, let's clone the original repo
-            Commandline clClone = createCloneCommand( repository, 
fileSet.getBasedir(), version, shallow );
+            Commandline clClone = createCloneCommand( repository, 
fileSet.getBasedir(), version, binary, shallow );
 
             exitCode = GitCommandLineUtils.execute( clClone, stdout, stderr, 
getLogger() );
             if ( exitCode != 0 )
@@ -163,10 +171,12 @@ public class GitCheckOutCommand
      * create a git-clone repository command
      */
     private Commandline createCloneCommand( GitScmProviderRepository 
repository, File workingDirectory,
-                                            ScmVersion version, boolean 
shallow )
+                                            ScmVersion version, boolean 
binary, boolean shallow )
     {
         Commandline cl = GitCommandLineUtils.getBaseGitCommandLine( 
workingDirectory.getParentFile(), "clone" );
 
+        forceBinary( cl, binary );
+
         if ( shallow )
         {
             cl.createArg().setValue( "--depth" );
@@ -189,6 +199,15 @@ public class GitCheckOutCommand
         return cl;
     }
 
+    private void forceBinary( Commandline cl, boolean binary )
+    {
+        if ( binary )
+        {
+            cl.createArg().setValue( "-c" );
+            cl.createArg().setValue( "core.autocrlf=false" );
+        }
+    }
+
     /**
      * create a git-pull repository command
      */
@@ -228,4 +247,17 @@ public class GitCheckOutCommand
         }
         return cl;
     }
+
+    /**
+     * The overriden {@link #executeCommand(ScmProviderRepository, ScmFileSet, 
CommandParameters)} in this class will
+     * not call this method!
+     * <p>
+     * {@inheritDoc}
+     */
+    protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repo, ScmFileSet fileSet,
+                                                        ScmVersion version, 
boolean recursive, boolean shallow )
+         throws ScmException
+     {
+         throw new UnsupportedOperationException( "Should not get here" );
+     }
 }

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

Reply via email to