public void Add(string filePath, LibGit2Sharp.ChangeKind changeKind, Developer developer, Commit commit, Period period) { var developerName = developer?.NormalizedName; if (filePath == null || developerName == null) { return; } if (!_map.ContainsKey(filePath)) { _map[filePath] = new Dictionary <string, DeveloperFileCommitDetail>(); } if (!_map[filePath].ContainsKey(developerName)) { _map[filePath][developerName] = new DeveloperFileCommitDetail() { FilePath = filePath, Developer = developer, }; } if (!_map[filePath][developerName].Commits.Any(q => q.Sha == commit?.Sha)) { _map[filePath][developerName].CommitDetails.Add(new CommitDetail(commit, period, changeKind)); _map[filePath][developerName].Commits.Add(commit); UpdateDeveloperCommits(commit, developerName); } if (!_map[filePath][developerName].Periods.Any(q => q.Id == period.Id)) { _map[filePath][developerName].Periods.Add(period); } }
private void AssignKnowledgeToDeveloper(Commit commit, LibGit2Sharp.ChangeKind changeKind, string developerName, Period period, string filePath) { if (filePath == null || developerName == null) { return; } var developer = DevelopersDic[developerName]; if (changeKind == LibGit2Sharp.ChangeKind.Deleted) { CommitBasedKnowledgeMap.Remove(filePath, developer, commit, period); } else if (changeKind != LibGit2Sharp.ChangeKind.Renamed) // if it's Added or Modified { CommitBasedKnowledgeMap.Add(filePath, changeKind, developer, commit, period); } }
public CommitDetail(Commit commit, Period period, LibGit2Sharp.ChangeKind changeKind) { Commit = commit; Period = period; ChangeKind = changeKind; }