public void TryMergePushedChanges( PushInfoModel pushInfo, BranchName destinationBranchName, IRepositoryConnectionContext repoContext) { var branchForPullRequest = CreateBranchNameForPush(pushInfo.GetPushedBranchName(), pushInfo.HeadCommitSha, destinationBranchName); repoContext.CreateBranch(branchForPullRequest, pushInfo.HeadCommitSha); var changesOriginalAuthor = RetrieveChangesOriginalAuthorFromPush(pushInfo, repoContext, out var coAuthorString); var createPullRequestSucceeded = TryCreatePullRequest(branchForPullRequest, destinationBranchName, repoContext, out var pullRequest, pushInfo, changesOriginalAuthor); if (!createPullRequestSucceeded) { _logger.LogWarning("Temp branch {branchName} for not created pull request has to be removed manually", branchForPullRequest); return; } var mergeCommitMessage = CreateMergeCommitMessage(pullRequest, coAuthorString); if (repoContext.MergePullRequest(pullRequest.Number, mergeCommitMessage)) { _logger.LogInformation("Pull request {pullRequestNumber} created and merged", pullRequest.Number); } else { _logger.LogInformation("Pull request {pullRequestNumber} created but could not be merged automatically", pullRequest.Number); _userNotifier.NotifyUserAboutPullRequestWithUnresolvedConflicts( pullRequest.Number, changesOriginalAuthor, repoContext, branchForPullRequest.Name, destinationBranchName.Name, pullRequest.HtmlUrl); } }