Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        public void TryMergeExistingPullRequest(
            PullRequest pullRequest,
            IRepositoryConnectionContext repoContext)
        {
            var coAuthorString     = CreateCoAuthoredByMessageForExistingPullRequest(pullRequest);
            var mergeCommitMessage = CreateMergeCommitMessage(pullRequest, coAuthorString);

            if (repoContext.MergePullRequest(pullRequest.Number, mergeCommitMessage))
            {
                _logger.LogInformation(
                    "Successfully merged pull request #{pullRequestNumber} into {branchName}",
                    pullRequest.Number,
                    pullRequest.Base.Ref);

                repoContext.AddPullRequestComment(pullRequest.Number, Consts.SuccessfulMergeComment);
            }
            else
            {
                _logger.LogInformation(
                    "Merging pull request #{pullRequestNumber} into {branchName} cannot be done automatically",
                    pullRequest.Number,
                    pullRequest.Base.Ref);
            }
        }