Add push commits history comment on PR time-line (#11167)

* Add push commits history comment on PR time-line
* Add notify by email and ui of this comment type also

Signed-off-by: a1012112796 <1012112796@qq.com>

* Add migrations for IsForcePush
* fix wrong force-push judgement
* Apply suggestions from code review
* Remove commit number check
* add own notify fun
* fix some typo

Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com>

* fix lint

* fix style again, I forgot something before

* Change email notify way

* fix api

* add number check if It's force-push

* Add repo commit link fuction
remove unnecessary check
skip show push commits comment which not have commits alive

* Update issue_comment.go

* Apply suggestions from code review

Co-authored-by: mrsdizzie <info@mrsdizzie.com>

* Apply suggestions from code review

* fix ui view

Co-authored-by: silverwind <me@silverwind.io>

* fix height

* remove unnecessary style define

* simplify GetBranchName

* Apply suggestions from code review

* save commit ids and isForce push by json
* simplify GetBranchName

* fix bug

Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com>
Co-authored-by: mrsdizzie <info@mrsdizzie.com>
Co-authored-by: Lauris BH <lauris@nix.lv>
Co-authored-by: silverwind <me@silverwind.io>
This commit is contained in:
赵智超 2020-05-20 20:47:24 +08:00 committed by GitHub
parent 9e0e2a9fcf
commit 0903b1ac8c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 478 additions and 6 deletions

View file

@ -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)