public static List<GitItemStatus> GetAllChangedFilesFromString(string status)
{
var statusStrings = status.Split(new char[] { '\0', '\n' }, StringSplitOptions.RemoveEmptyEntries);
var gitItemStatusList = new List<GitItemStatus>();
GitItemStatus itemStatus = null;
foreach (var statusString in statusStrings)
{
if (string.IsNullOrEmpty(statusString.Trim()) || statusString.Length < 2)
continue;
if (!(itemStatus != null && itemStatus.Name == statusString.Substring(1).Trim()))
{
itemStatus = new GitItemStatus { Name = statusString.Substring(1).Trim() };
gitItemStatusList.Add(itemStatus);
}
itemStatus.IsNew = itemStatus.IsNew || statusString[0] == '?';
itemStatus.IsChanged = itemStatus.IsChanged || statusString[0] == 'C';
itemStatus.IsDeleted = itemStatus.IsDeleted || statusString[0] == 'R';
itemStatus.IsTracked = itemStatus.IsTracked || statusString[0] != '?';
}
return gitItemStatusList;
}