aboutsummaryrefslogtreecommitdiff
path: root/models
diff options
context:
space:
mode:
Diffstat (limited to 'models')
-rw-r--r--models/action.go26
-rw-r--r--models/pull.go21
2 files changed, 36 insertions, 11 deletions
diff --git a/models/action.go b/models/action.go
index b2ddf12f..1613df5e 100644
--- a/models/action.go
+++ b/models/action.go
@@ -251,20 +251,30 @@ func NewPushCommits() *PushCommits {
}
}
-func (pc *PushCommits) ToApiPayloadCommits(repoLink string) []*api.PayloadCommit {
+func (pc *PushCommits) ToApiPayloadCommits(repoPath, repoLink string) ([]*api.PayloadCommit, error) {
commits := make([]*api.PayloadCommit, len(pc.Commits))
for i, commit := range pc.Commits {
authorUsername := ""
author, err := GetUserByEmail(commit.AuthorEmail)
if err == nil {
authorUsername = author.Name
+ } else if !errors.IsUserNotExist(err) {
+ return nil, fmt.Errorf("GetUserByEmail: %v", err)
}
+
committerUsername := ""
committer, err := GetUserByEmail(commit.CommitterEmail)
if err == nil {
- // TODO: check errors other than email not found.
committerUsername = committer.Name
+ } else if !errors.IsUserNotExist(err) {
+ return nil, fmt.Errorf("GetUserByEmail: %v", err)
+ }
+
+ fileStatus, err := git.GetCommitFileStatus(repoPath, commit.Sha1)
+ if err != nil {
+ return nil, fmt.Errorf("FileStatus [commit_sha1: %s]: %v", commit.Sha1, err)
}
+
commits[i] = &api.PayloadCommit{
ID: commit.Sha1,
Message: commit.Message,
@@ -279,10 +289,13 @@ func (pc *PushCommits) ToApiPayloadCommits(repoLink string) []*api.PayloadCommit
Email: commit.CommitterEmail,
UserName: committerUsername,
},
+ Added: fileStatus.Added,
+ Removed: fileStatus.Removed,
+ Modified: fileStatus.Modified,
Timestamp: commit.Timestamp,
}
}
- return commits
+ return commits, nil
}
// AvatarLink tries to match user in database with e-mail
@@ -546,12 +559,17 @@ func CommitRepoAction(opts CommitRepoActionOptions) error {
}
}
+ commits, err := opts.Commits.ToApiPayloadCommits(repo.RepoPath(), repo.HTMLURL())
+ if err != nil {
+ return fmt.Errorf("ToApiPayloadCommits: %v", err)
+ }
+
if err = PrepareWebhooks(repo, HOOK_EVENT_PUSH, &api.PushPayload{
Ref: opts.RefFullName,
Before: opts.OldCommitID,
After: opts.NewCommitID,
CompareURL: compareURL,
- Commits: opts.Commits.ToApiPayloadCommits(repo.HTMLURL()),
+ Commits: commits,
Repo: apiRepo,
Pusher: apiPusher,
Sender: apiPusher,
diff --git a/models/pull.go b/models/pull.go
index f36a0e18..454a2a18 100644
--- a/models/pull.go
+++ b/models/pull.go
@@ -278,12 +278,12 @@ func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository) (err error
}
if err = MergePullRequestAction(doer, pr.Issue.Repo, pr.Issue); err != nil {
- log.Error(4, "MergePullRequestAction [%d]: %v", pr.ID, err)
+ log.Error(2, "MergePullRequestAction [%d]: %v", pr.ID, err)
}
// Reload pull request information.
if err = pr.LoadAttributes(); err != nil {
- log.Error(4, "LoadAttributes: %v", err)
+ log.Error(2, "LoadAttributes: %v", err)
return nil
}
if err = PrepareWebhooks(pr.Issue.Repo, HOOK_EVENT_PULL_REQUEST, &api.PullRequestPayload{
@@ -293,13 +293,13 @@ func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository) (err error
Repository: pr.Issue.Repo.APIFormat(nil),
Sender: doer.APIFormat(),
}); err != nil {
- log.Error(4, "PrepareWebhooks: %v", err)
+ log.Error(2, "PrepareWebhooks: %v", err)
return nil
}
l, err := headGitRepo.CommitsBetweenIDs(pr.MergedCommitID, pr.MergeBase)
if err != nil {
- log.Error(4, "CommitsBetweenIDs: %v", err)
+ log.Error(2, "CommitsBetweenIDs: %v", err)
return nil
}
@@ -309,23 +309,30 @@ func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository) (err error
// to avoid strange diff commits produced.
mergeCommit, err := baseGitRepo.GetBranchCommit(pr.BaseBranch)
if err != nil {
- log.Error(4, "GetBranchCommit: %v", err)
+ log.Error(2, "GetBranchCommit: %v", err)
return nil
}
l.PushFront(mergeCommit)
+ commits, err := ListToPushCommits(l).ToApiPayloadCommits(pr.BaseRepo.RepoPath(), pr.BaseRepo.HTMLURL())
+ if err != nil {
+ log.Error(2, "ToApiPayloadCommits: %v", err)
+ return nil
+ }
+
p := &api.PushPayload{
Ref: git.BRANCH_PREFIX + pr.BaseBranch,
Before: pr.MergeBase,
After: pr.MergedCommitID,
CompareURL: setting.AppUrl + pr.BaseRepo.ComposeCompareURL(pr.MergeBase, pr.MergedCommitID),
- Commits: ListToPushCommits(l).ToApiPayloadCommits(pr.BaseRepo.HTMLURL()),
+ Commits: commits,
Repo: pr.BaseRepo.APIFormat(nil),
Pusher: pr.HeadRepo.MustOwner().APIFormat(),
Sender: doer.APIFormat(),
}
if err = PrepareWebhooks(pr.BaseRepo, HOOK_EVENT_PUSH, p); err != nil {
- return fmt.Errorf("PrepareWebhooks: %v", err)
+ log.Error(2, "PrepareWebhooks: %v", err)
+ return nil
}
return nil
}