aboutsummaryrefslogtreecommitdiffstats
path: root/services/pull
diff options
context:
space:
mode:
Diffstat (limited to 'services/pull')
-rw-r--r--services/pull/pull.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/services/pull/pull.go b/services/pull/pull.go
index fb4af06372..c051641a5b 100644
--- a/services/pull/pull.go
+++ b/services/pull/pull.go
@@ -8,6 +8,7 @@ import (
"bufio"
"bytes"
"context"
+ "encoding/json"
"fmt"
"os"
"path"
@@ -57,6 +58,43 @@ func NewPullRequest(repo *models.Repository, pull *models.Issue, labelIDs []int6
notification.NotifyNewPullRequest(pr)
+ // add first push codes comment
+ baseGitRepo, err := git.OpenRepository(pr.BaseRepo.RepoPath())
+ if err != nil {
+ return err
+ }
+ defer baseGitRepo.Close()
+
+ compareInfo, err := baseGitRepo.GetCompareInfo(pr.BaseRepo.RepoPath(),
+ pr.BaseBranch, pr.GetGitRefName())
+ if err != nil {
+ return err
+ }
+
+ if compareInfo.Commits.Len() > 0 {
+ data := models.PushActionContent{IsForcePush: false}
+ data.CommitIDs = make([]string, 0, compareInfo.Commits.Len())
+ for e := compareInfo.Commits.Back(); e != nil; e = e.Prev() {
+ data.CommitIDs = append(data.CommitIDs, e.Value.(*git.Commit).ID.String())
+ }
+
+ dataJSON, err := json.Marshal(data)
+ if err != nil {
+ return err
+ }
+
+ ops := &models.CreateCommentOptions{
+ Type: models.CommentTypePullPush,
+ Doer: pull.Poster,
+ Repo: repo,
+ Issue: pr.Issue,
+ IsForcePush: false,
+ Content: string(dataJSON),
+ }
+
+ _, _ = models.CreateComment(ops)
+ }
+
return nil
}
@@ -237,6 +275,12 @@ func AddTestPullRequestTask(doer *models.User, repoID int64, branch string, isSy
}
addHeadRepoTasks(prs)
+ for _, pr := range prs {
+ comment, err := models.CreatePushPullComment(doer, pr, oldCommitID, newCommitID)
+ if err == nil && comment != nil {
+ notification.NotifyPullRequestPushCommits(doer, pr, comment)
+ }
+ }
log.Trace("AddTestPullRequestTask [base_repo_id: %d, base_branch: %s]: finding pull requests", repoID, branch)
prs, err = models.GetUnmergedPullRequestsByBaseInfo(repoID, branch)