GitVersion.GitRepoMetadataProvider.GetMergeCommitsForBranch C# (CSharp) Method

GetMergeCommitsForBranch() private method

private GetMergeCommitsForBranch ( Branch branch ) : List
branch Branch
return List
        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;
        }