예제 #1
0
        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);
            }
        }
예제 #2
0
        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;
 }