예제 #1
0
        public void NotifyCommitersAboutOldBranches()
        {
            var oldBranches = repository.SearchForOldBranches(branchDeadlinePeriod)
                              .Where(b => !b.Merged)
                              .ToArray();
            var branchesClassificator = BranchClassificator.Create(oldBranches);

            foreach (var commiterEmail in branchesClassificator.CommiterEmails)
            {
                var branchesPerCommiter = branchesClassificator
                                          .GetOldBranchesBy(commiterEmail)
                                          .Select(BuildBranchHref)
                                          .ToArray();

                if (branchesPerCommiter.Any())
                {
                    var bodyBuilder = new StringBuilder();
                    bodyBuilder.AppendLine("Дорогой разработчик!");
                    bodyBuilder.AppendLine();
                    bodyBuilder.AppendLine($"Спешу обратить твое внимание на старые ветки в репозитории: {string.Join(", ", branchesPerCommiter)}");
                    bodyBuilder.AppendLine("В них давно не ведется никакой работы, это похоже на разбитое окно. Пожалуйста, подумай какая ценность есть в этих ветках и как эту ценность доставить.");
                    bodyBuilder.AppendLine();
                    bodyBuilder.AppendLine("С любовью, твой автоматический уведомлятор.");

                    var message = new Email
                    {
                        Recipients = new[] { commiterEmail },
                        Title      = "Уведомление о старых ветках",
                        Body       = bodyBuilder.ToString(),
                        CopyTo     = "*****@*****.**"
                    };
                    repoNotificationChat.Post(me, message);
                }
            }
        }
예제 #2
0
        public static BranchClassificator Create(Branch[] branches)
        {
            var result = new BranchClassificator();

            foreach (var branch in branches)
            {
                result.Classify(branch);
            }
            return(result);
        }