From d3796208d7d6999a714f1af4136d548cff75a2e5 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Sat, 13 Nov 2010 20:31:09 +0300 Subject: [PATCH] GitExecutableValidator fix: 'git' returns error, so executing 'git --version'. Can't use GitHandler, because it takes value from the GitApplicationSettings, which is unsuitable. --- .../git4idea/config/GitExecutableValidator.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/plugins/git4idea/src/git4idea/config/GitExecutableValidator.java b/plugins/git4idea/src/git4idea/config/GitExecutableValidator.java index 753b62c8cb20..e06a6dfbd9ad 100644 --- a/plugins/git4idea/src/git4idea/config/GitExecutableValidator.java +++ b/plugins/git4idea/src/git4idea/config/GitExecutableValidator.java @@ -15,10 +15,14 @@ */ package git4idea.config; +import com.intellij.execution.configurations.GeneralCommandLine; +import com.intellij.execution.process.CapturingProcessHandler; +import com.intellij.execution.process.ProcessOutput; import com.intellij.execution.util.ExecutableValidator; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.vcs.VcsException; +import com.intellij.openapi.vfs.CharsetToolkit; import git4idea.GitVcs; import git4idea.i18n.GitBundle; @@ -55,7 +59,16 @@ public class GitExecutableValidator extends ExecutableValidator { if (!executable.endsWith(SYSTEM_DEFAULT_EXECUTABLE) && !executable.endsWith(UNIX_EXECUTABLE)) { return false; } - return super.isExecutableValid(executable); + try { + GeneralCommandLine commandLine = new GeneralCommandLine(); + commandLine.setExePath(executable); + commandLine.addParameter("--version"); + CapturingProcessHandler handler = new CapturingProcessHandler(commandLine.createProcess(), CharsetToolkit.getDefaultSystemCharset()); + ProcessOutput result = handler.runProcess(2000); + return !result.isTimeout() && (result.getExitCode() == 0) && result.getStderr().isEmpty(); + } catch (Throwable e) { + return false; + } } @Override