public static List<GitItemStatus> GetDiffFiles(string from, string to)
{
var result = RunCachableCmd(Settings.GitCommand, "diff -z --name-status \"" + to + "\" \"" + from + "\"");
var files = result.Split(new char[] { '\0', '\n' }, StringSplitOptions.RemoveEmptyEntries);
var diffFiles = new List<GitItemStatus>();
for (int n = 0; n + 1 < files.Length; n = n + 2)
{
if (string.IsNullOrEmpty(files[n]))
continue;
diffFiles.Add(
new GitItemStatus
{
Name = files[n + 1].Trim(),
IsNew = files[n] == "A",
IsChanged = files[n] == "M",
IsDeleted = files[n] == "D",
IsTracked = true
});
}
return diffFiles;
}