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.