private void AddContribution(Commit commit, string canonicalName, CommitChange change, Contributor contributor) { var file = GetFile(canonicalName); var contribution = new Contribution() { ActivityId = commit.Sha, ContributionType = ContributionType.Commit, ContributorEmail = commit.AuthorEmail, ContributorName = commit.AuthorName, ContributorGithubLogin = commit.AuthorGitHubLogin ?? contributor.GitHubLogin, File = file, SubscriptionId = _subscription.Id, Contributor = contributor, DateTime = commit.DateTime }; file.AddHistory(commit, change, contribution); contributor.AssignContribution(contribution); }
private Contributor MergeContributors(Contributor nameContributor, Contributor emailContributor) { var contributions = emailContributor.Contributions.ToArray(); foreach (var contribution in contributions) { nameContributor.AssignContribution(contribution); } emailContributor.RemoveContributions(); var commits = emailContributor.Commits.ToArray(); foreach (var commit in commits) { nameContributor.AssignCommits(commit); } emailContributor.RemoveCommits(); _contributors.Remove(emailContributor.CanonicalName); var kvs = _contributorCanonicalMapper.Where(q => q.Value == emailContributor.CanonicalName).ToArray(); foreach (var kv in kvs) { _contributorCanonicalMapper[kv.Key] = nameContributor.CanonicalName; } if (emailContributor.GitHubLogin != null && nameContributor.GitHubLogin == null) { nameContributor.GitHubLogin = emailContributor.GitHubLogin; } return(nameContributor); }