Example #1
0
        public static async Task LogFirstCommitToMergeTimeAverageWeekOverWeekByCreatedAt(PullRequester pr, IEnumerable <PullRequest> prs, DateTime dt)
        {
            var prsByWeek = PRsWeekOverWeekByCreatedAt(prs, dt);

            Console.WriteLine("Average time between first commit and merge of a Pull Request week-over-week (open PRs counted) from " + dt.ToShortDateString() + " until now");
            Console.WriteLine("--------------------------------------------------------");
            foreach (var w in prsByWeek)
            {
                System.Console.WriteLine(w.Key.ToShortDateString() + " has " + w.Value.Count.ToString() + " values.");
                string avg;
                if (w.Value.Count > 0)
                {
                    foreach (var p in w.Value)
                    {
                        p.Commits = await pr.GetFirstCommitForPR(p);

                        string mDate = p.MergedAt.HasValue ? p.MergedAt.Value.ToShortDateString() : "never";
                        System.Console.WriteLine("\t" + p.Number + "'s first commit " + p.Commits.First().Sha + " was created at " + p.Commits.First().Details.Committer.CommitDate.ToShortDateString() + " and was merged at " + mDate + " for a timespan of " + timeSpanToDaysAndHoursString(p.FirstCommitToMergeTime()));
                    }

                    avg = w.Value.Aggregate(new TimeSpan(), (x, y) => x.Add(y.CreationToMergeTime()), (x) => x).TotalHours.ToString("N1");
                }
                else
                {
                    avg = "0";
                }
                Console.WriteLine(w.Key.ToShortDateString() + " has an average create-to-merge time of " + avg + " hours");
            }
        }