public bool IsRunningGitProcess()
{
if (IsLockedIndex())
{
return true;
}
if (EnvUtils.RunningOnWindows())
{
return Process.GetProcessesByName("git").Length > 0;
}
// Get processes by "ps" command.
var cmd = Path.Combine(AppSettings.GitBinDir, "ps");
var arguments = "x";
var output = RunCmd(cmd, arguments);
var lines = output.Split('\n');
if (lines.Count() >= 2)
return false;
var headers = lines[0].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
var commandIndex = Array.IndexOf(headers, "COMMAND");
for (int i = 1; i < lines.Count(); i++)
{
var columns = lines[i].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (commandIndex < columns.Count())
{
var command = columns[commandIndex];
if (command.EndsWith("/git"))
{
return true;
}
}
}
return false;
}