michael-o commented on code in PR #159:
URL: https://github.com/apache/maven-scm/pull/159#discussion_r929168403


##########
maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/GitCommandLineUtils.java:
##########
@@ -196,4 +209,27 @@ public static int execute( Commandline cl, 
CommandLineUtils.StringStreamConsumer
         return exitCode;
     }
 
+    static Map<String, String> prepareEnvVariablesForRepository( 
GitScmProviderRepository repository,
+                                                                 Map<String, 
String> environmentVariables )
+    {
+        Map<String, String> effectiveEnvironmentVariables = new HashMap<>();
+        if ( environmentVariables != null )
+        {
+            effectiveEnvironmentVariables.putAll( environmentVariables );
+        }
+        if ( StringUtils.isNotBlank( repository.getPrivateKey() ) )
+        {
+            if ( effectiveEnvironmentVariables.putIfAbsent( 
VARIABLE_GIT_SSH_COMMAND, "ssh -IdentitiesOnly=yes -i "
+                            + FilenameUtils.separatorsToUnix( 
repository.getPrivateKey() ) ) != null )
+            {
+                LOGGER.warn( "Ignore GitScmProviderRepository.privateKey as 
environment variable {} is already set",
+                             VARIABLE_GIT_SSH_COMMAND );
+            }
+        }
+        if ( StringUtils.isNotBlank( repository.getPassphrase() ) )
+        {
+            LOGGER.warn( "GitScmProviderRepository.passphrase currently not 
supported by provider 'git'" );

Review Comment:
   gitexe is the term, no?



##########
maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/GitCommandLineUtils.java:
##########
@@ -90,28 +95,36 @@ public static void addTarget( Commandline cl, List<File> 
files )
     }
 
    /**
-    *
+    * Use this only for command not requiring environment variables (i.e. 
local commands).
     * @param workingDirectory
     * @param command
     * @return TODO
     */
    public static Commandline getBaseGitCommandLine( File workingDirectory, 
String command )
    {
-       return getBaseGitCommandLine( workingDirectory, command, 
Collections.emptyMap() );
+       return getBaseGitCommandLine( workingDirectory, command, null, null );
    }
 
     /**
-     *
+     * Use this for commands requiring environment variables (i.e. remote 
commands).
      * @param workingDirectory
      * @param command
      * @param environment
      * @return TODO
      */
     public static Commandline getBaseGitCommandLine( File workingDirectory, 
String command,
+                                                     GitScmProviderRepository 
repository,
                                                      Map<String, String> 
environment )
     {
         Commandline cl = getAnonymousBaseGitCommandLine( workingDirectory, 
command );
-        environment.forEach( cl::addEnvironment );
+        if ( repository != null ) 
+        {
+            prepareEnvVariablesForRepository( repository, environment 
).forEach( cl::addEnvironment );
+        }
+        else if ( environment != null )
+        {
+            environment.forEach( cl::addEnvironment );
+        }

Review Comment:
   I don't understand this double cascade. Everything from `environment` is 
ready in the map if repo is not null, thus the `forEach` is redundant, no?



##########
maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/GitCommandLineUtils.java:
##########
@@ -196,4 +209,27 @@ public static int execute( Commandline cl, 
CommandLineUtils.StringStreamConsumer
         return exitCode;
     }
 
+    static Map<String, String> prepareEnvVariablesForRepository( 
GitScmProviderRepository repository,
+                                                                 Map<String, 
String> environmentVariables )
+    {
+        Map<String, String> effectiveEnvironmentVariables = new HashMap<>();
+        if ( environmentVariables != null )
+        {
+            effectiveEnvironmentVariables.putAll( environmentVariables );
+        }
+        if ( StringUtils.isNotBlank( repository.getPrivateKey() ) )
+        {
+            if ( effectiveEnvironmentVariables.putIfAbsent( 
VARIABLE_GIT_SSH_COMMAND, "ssh -IdentitiesOnly=yes -i "

Review Comment:
   `-o Identities...`?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to