From 113555f219187131a55fe92eacf69e92fdd12000 Mon Sep 17 00:00:00 2001 From: Dmitriy Smirnov Date: Wed, 5 Jul 2017 20:40:07 +0300 Subject: [PATCH] IDEA-87508 Disable GIT_TRACE before validating executable --- .../src/com/intellij/execution/ExecutableValidator.java | 6 ++++-- plugins/git4idea/src/git4idea/commands/GitHandler.java | 8 +++++++- .../src/git4idea/config/GitExecutableValidator.java | 3 ++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/execution/ExecutableValidator.java b/platform/platform-impl/src/com/intellij/execution/ExecutableValidator.java index 786e66e975e7..0b03afd030b7 100644 --- a/platform/platform-impl/src/com/intellij/execution/ExecutableValidator.java +++ b/platform/platform-impl/src/com/intellij/execution/ExecutableValidator.java @@ -35,6 +35,7 @@ import javax.swing.event.HyperlinkEvent; import java.awt.*; import java.util.Collections; import java.util.List; +import java.util.Map; import static com.intellij.notification.NotificationDisplayType.STICKY_BALLOON; @@ -98,15 +99,16 @@ public abstract class ExecutableValidator { * @return true if process with the supplied executable completed without errors and with exit code 0. */ protected boolean isExecutableValid(@NotNull String executable) { - return doCheckExecutable(executable, Collections.emptyList()); + return doCheckExecutable(executable, Collections.emptyList(), Collections.emptyMap()); } - protected static boolean doCheckExecutable(@NotNull String executable, @NotNull List processParameters) { + protected static boolean doCheckExecutable(@NotNull String executable, @NotNull List processParameters, @NotNull Map envVariables) { try { GeneralCommandLine commandLine = new GeneralCommandLine(); commandLine.setExePath(executable); commandLine.addParameters(processParameters); commandLine.setCharset(CharsetToolkit.getDefaultSystemCharset()); + commandLine.withEnvironment(envVariables); CapturingProcessHandler handler = new CapturingProcessHandler(commandLine); ProcessOutput result = handler.runProcess(TIMEOUT_MS); boolean timeout = result.isTimeout(); diff --git a/plugins/git4idea/src/git4idea/commands/GitHandler.java b/plugins/git4idea/src/git4idea/commands/GitHandler.java index 72592085bc0b..e08b248a498c 100644 --- a/plugins/git4idea/src/git4idea/commands/GitHandler.java +++ b/plugins/git4idea/src/git4idea/commands/GitHandler.java @@ -471,7 +471,7 @@ public abstract class GitHandler { } private void unsetGitTrace() { - myEnv.put("GIT_TRACE", "0"); + myEnv.putAll(getCommonEnvironment()); } private void setupHttpAuthenticator() throws IOException { @@ -808,4 +808,10 @@ public abstract class GitHandler { public void setInputProcessor(@Nullable ThrowableConsumer inputProcessor) { myInputProcessor = inputProcessor; } + + public static @NotNull Map getCommonEnvironment() { + Map commonEnv = new HashMap<>(); + commonEnv.put("GIT_TRACE","0"); + return commonEnv; + } } diff --git a/plugins/git4idea/src/git4idea/config/GitExecutableValidator.java b/plugins/git4idea/src/git4idea/config/GitExecutableValidator.java index 35f7f343dc9c..4cb21e71aa32 100644 --- a/plugins/git4idea/src/git4idea/config/GitExecutableValidator.java +++ b/plugins/git4idea/src/git4idea/config/GitExecutableValidator.java @@ -18,6 +18,7 @@ package git4idea.config; import com.intellij.execution.ExecutableValidator; import com.intellij.openapi.project.Project; import com.intellij.openapi.vcs.VcsException; +import git4idea.commands.GitHandler; import git4idea.i18n.GitBundle; import org.jetbrains.annotations.NotNull; @@ -47,7 +48,7 @@ public class GitExecutableValidator extends ExecutableValidator { @Override public boolean isExecutableValid(@NotNull String executable) { - return doCheckExecutable(executable, Collections.singletonList("--version")); + return doCheckExecutable(executable, Collections.singletonList("--version"), GitHandler.getCommonEnvironment()); } /**