diff options
Diffstat (limited to 'services')
-rw-r--r-- | services/mailer/mail.go | 2 | ||||
-rw-r--r-- | services/pull/pull.go | 44 |
2 files changed, 46 insertions, 0 deletions
diff --git a/services/mailer/mail.go b/services/mailer/mail.go index dd5af445bf..b4217c0466 100644 --- a/services/mailer/mail.go +++ b/services/mailer/mail.go @@ -319,6 +319,8 @@ func actionToTemplate(issue *models.Issue, actionType models.ActionType, name = "code" case models.CommentTypeAssignees: name = "assigned" + case models.CommentTypePullPush: + name = "push" default: name = "default" } 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) |