List<BranchCommit> GetMergeCommitsForBranch(Branch branch)
{
if (mergeBaseCommitsCache.ContainsKey(branch))
{
Logger.WriteDebug(string.Format(
"Cache hit for getting merge commits for branch {0}.",
branch.CanonicalName));
return mergeBaseCommitsCache[branch];
}
var branchMergeBases = Repository.Branches.Select(otherBranch =>
{
if (otherBranch.Tip == null)
{
Logger.WriteWarning(string.Format(missingTipFormat, otherBranch.FriendlyName));
return BranchCommit.Empty;
}
var findMergeBase = FindMergeBase(branch, otherBranch);
return new BranchCommit(findMergeBase, otherBranch);
}).Where(b => b.Commit != null).OrderByDescending(b => b.Commit.Committer.When).ToList();
mergeBaseCommitsCache.Add(branch, branchMergeBases);
return branchMergeBases;
}