Example #1
0
        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);
        }