Пример #1
0
        public List <ReleaseCommit> GetReleaseMergeCommits(string repositoryGuid)
        {
            const string         regexPattern   = "^Merge branch 'release/(?<version>[a-zA-z0-9\\.\\-_]+)'$";
            List <ReleaseCommit> releaseCommits = new List <ReleaseCommit>();
            var start = MinDate;

            var commits = GetBranchCommits(repositoryGuid, "master");

            foreach (var item in commits.items)
            {
                var match = Regex.Match(item.comment, regexPattern);
                if (match.Success)
                {
                    var release = new ReleaseCommit(item, match.Groups["version"].Value, start, item.committer.date);
                    releaseCommits.Add(release);
                    start = release.end;
                }
            }

            return(releaseCommits);
        }
Пример #2
0
        public List <ReleaseDetails> GetReleaseDetails(string projectName, string repositoryGuid)
        {
            List <ReleaseDetails> releases = new List <ReleaseDetails>();

            var commits = GetReleaseMergeCommits(repositoryGuid);
            var start   = commits.Max(x => x.end);
            var end     = DateTime.Now;

            var futureRelease = new ReleaseCommit(new Commit {
            }, "Future", start, end);

            commits.Add(futureRelease);

            commits.Reverse();

            foreach (var item in commits)
            {
                var release = new ReleaseDetails
                {
                    commit          = item,
                    workItems       = GetClosedWorkItems(projectName, item.start, item.end),
                    workItemDetails = new List <WorkItemDetails>()
                };

                var result = Parallel.ForEach(release.workItems,
                                              new ParallelOptions {
                    MaxDegreeOfParallelism = 5
                },
                                              x => release.workItemDetails.Add(GetWorkItem(x.url)));

                releases.Add(release);
            }

            // Revert back to descending order
            releases.Reverse();

            return(releases);
        }