From e802ae20979ca6bc7870d484b03dadbfc421e45d Mon Sep 17 00:00:00 2001 From: Lucas Israel Date: Thu, 17 Dec 2015 20:59:03 -0200 Subject: [PATCH] SCM-714 fix for Windows platform when command line got too long for adding files. This commit changed the git command add. Replacing from a list of type file to a list of file patterns. --- .../gitexe/command/GitCommandLineUtils.java | 24 +++++++++++++++++++ .../git/gitexe/command/add/GitAddCommand.java | 17 +++++++------ .../command/checkin/GitCheckInCommand.java | 2 +- 3 files changed, 33 insertions(+), 10 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/GitCommandLineUtils.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/GitCommandLineUtils.java index 2599273d9..9ffd69d0b 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/GitCommandLineUtils.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/GitCommandLineUtils.java @@ -29,6 +29,7 @@ import java.io.File; import java.io.IOException; import java.util.List; +import java.util.Set; /** * Command line construction utility. @@ -80,6 +81,29 @@ public static void addTarget( Commandline cl, List files ) + workingDirectory + " or files=" + files, ex ); } } + + /** + * + * @param cl + * @param files + */ + public static void addTargetPattern( Commandline cl, List files ) + { + if ( files == null || files.isEmpty() ) + { + return; + } + Set fileToAdd = new java.util.HashSet(); + + for ( File file : files ) + { + fileToAdd.add( file.getName() ); + } + for ( String patternFile : fileToAdd ) + { + cl.createArg().setValue( "*" + patternFile ); + } + } /** * 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/add/GitAddCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/add/GitAddCommand.java index 21ad47607..37980e538 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/add/GitAddCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/add/GitAddCommand.java @@ -19,6 +19,12 @@ * under the License. */ +import java.io.File; +import java.net.URI; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + import org.apache.commons.io.FilenameUtils; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFile; @@ -36,12 +42,6 @@ import org.codehaus.plexus.util.cli.CommandLineUtils; import org.codehaus.plexus.util.cli.Commandline; -import java.io.File; -import java.net.URI; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - /** * @author Mark Struberg */ @@ -139,12 +139,11 @@ public static Commandline createCommandLine( File workingDirectory, List f // use this separator to make clear that the following parameters are files and not revision info. cl.createArg().setValue( "--" ); - - GitCommandLineUtils.addTarget( cl, files ); + GitCommandLineUtils.addTargetPattern( cl, files ); return cl; } - + private AddScmResult executeAddFileSet( ScmFileSet fileSet ) throws ScmException { 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/checkin/GitCheckInCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInCommand.java index e30aae0c3..42c471880 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInCommand.java @@ -251,7 +251,7 @@ public static Commandline createCommitCommandLine( GitScmProviderRepository repo else { // specify exactly which files to commit - GitCommandLineUtils.addTarget( cl, fileSet.getFileList() ); + GitCommandLineUtils.addTargetPattern( cl, fileSet.getFileList() ); } if ( GitUtil.getSettings().isCommitNoVerify() )