Commit[] GetBlameForFile(string revision, string filePath) { Commit[] blame; string path = PROJECT_ROOT + filePath; string key = path + revision; blames.TryGetValue(key, out blame); if (blame == null) { var result = repo.Blame(filePath, new BlameOptions { StartingAt = revision, }); if (!result.Any()) { return(null); } var count = result.Sum(hunk => hunk.LineCount); blame = new Commit [count]; int x = 0; foreach (var res in result) { for (int i = 0; i < res.LineCount; ++i) { blame [x++] = res.FinalCommit; } } blames.Add(key, blame); } return(blame); }