@Deprecated(forRemoval = true)
  public static @NotNull GitVersion identifyVersion(@NotNull String gitExecutable) throws TimeoutException, ExecutionException, ParseException {
    GeneralCommandLine commandLine = new GeneralCommandLine();
    commandLine.setExePath(gitExecutable);
    commandLine.addParameter("--version");
    commandLine.setCharset(CharsetToolkit.getDefaultSystemCharset());
    CapturingProcessHandler handler = new CapturingProcessHandler(commandLine);
    ProgressIndicator indicator = ProgressManager.getInstance().getProgressIndicator();
    ProcessOutput result = indicator == null ?
                           handler.runProcess(ExecutableValidator.TIMEOUT_MS) :
                           handler.runProcessWithProgressIndicator(indicator);
    if (result.isTimeout()) {
      throw new TimeoutException("Couldn't identify the version of Git - stopped by timeout.");
    }
    else if (result.isCancelled()) {
      LOG.info("Cancelled by user. exitCode=" + result.getExitCode());
      throw new ProcessCanceledException();
    }
    else if (result.getExitCode() != 0 || !result.getStderr().isEmpty()) {
      LOG.info("getVersion exitCode=" + result.getExitCode() + " errors: " + result.getStderr());
      // anyway trying to parse
      try {
        parse(result.getStdout());
      } catch (ParseException pe) {
        throw new ExecutionException(GitBundle.message("error.git.version.check.failed", result.getExitCode(), result.getStderr()), pe);
      }
    }
    return parse(result.getStdout());
  }
@Deprecated(forRemoval = true)
  public static @NotNull GitVersion identifyVersion(@NotNull String gitExecutable)