public static function getGitInfo()
{
$gitBinary = VP_GIT_BINARY;
$info = [];
$process = new Process(ProcessUtils::escapeshellarg($gitBinary) . " --version");
$process->run();
$info['git-binary-as-configured'] = $gitBinary;
$info['git-available'] = $process->getErrorOutput() === null || !strlen($process->getErrorOutput());
if ($info['git-available'] === false) {
$info['output'] = ['stdout' => trim($process->getOutput()), 'stderr' => trim($process->getErrorOutput())];
$info['env-path'] = getenv('PATH');
return $info;
}
$output = trim($process->getOutput());
$match = Strings::match($output, "~git version (\\d[\\d\\.]+\\d).*~");
$version = $match[1];
$gitPath = "unknown";
if ($gitBinary == "git") {
$osSpecificWhereCommand = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? "where" : "which";
$process = new Process("{$osSpecificWhereCommand} git");
$process->run();
if ($process->isSuccessful()) {
$gitPath = $process->getOutput();
}
} else {
$gitPath = $gitBinary;
}
$info['git-version'] = $version;
$info['git-binary-as-called-by-vp'] = $gitBinary;
$info['git-full-path'] = $gitPath;
$info['versionpress-min-required-version'] = RequirementsChecker::GIT_MINIMUM_REQUIRED_VERSION;
$info['matches-min-required-version'] = RequirementsChecker::gitMatchesMinimumRequiredVersion($version);
return $info;
}