From d07c955e2a6359937ecff458d450e328861da5e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kim=20=22BKC=22=20Carlb=C3=A4cker?= Date: Mon, 5 Dec 2016 12:17:39 +0100 Subject: [PATCH] Fix regression in PR-API #248 (#349) * Fix #344 (regression in PR-API #248) --- models/pull.go | 46 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/models/pull.go b/models/pull.go index 5b54058b8df..d149a142d0c 100644 --- a/models/pull.go +++ b/models/pull.go @@ -121,12 +121,40 @@ func (pr *PullRequest) LoadIssue() (err error) { // Required - Issue // Optional - Merger func (pr *PullRequest) APIFormat() *api.PullRequest { - + var ( + baseBranch *Branch + headBranch *Branch + baseCommit *git.Commit + headCommit *git.Commit + err error + ) apiIssue := pr.Issue.APIFormat() - baseBranch, _ := pr.BaseRepo.GetBranch(pr.BaseBranch) - baseCommit, _ := baseBranch.GetCommit() - headBranch, _ := pr.HeadRepo.GetBranch(pr.HeadBranch) - headCommit, _ := headBranch.GetCommit() + if pr.BaseRepo == nil { + pr.BaseRepo, err = GetRepositoryByID(pr.BaseRepoID) + if err != nil { + log.Error(log.ERROR, "GetRepositoryById[%d]: %v", pr.ID, err) + return nil + } + } + if pr.HeadRepo == nil { + pr.HeadRepo, err = GetRepositoryByID(pr.HeadRepoID) + if err != nil { + log.Error(log.ERROR, "GetRepositoryById[%d]: %v", pr.ID, err) + return nil + } + } + if baseBranch, err = pr.BaseRepo.GetBranch(pr.BaseBranch); err != nil { + return nil + } + if baseCommit, err = baseBranch.GetCommit(); err != nil { + return nil + } + if headBranch, err = pr.HeadRepo.GetBranch(pr.HeadBranch); err != nil { + return nil + } + if headCommit, err = headBranch.GetCommit(); err != nil { + return nil + } apiBaseBranchInfo := &api.PRBranchInfo{ Name: pr.BaseBranch, Ref: pr.BaseBranch, @@ -590,8 +618,12 @@ func GetPullRequestByIndex(repoID int64, index int64) (*PullRequest, error) { return nil, ErrPullRequestNotExist{0, repoID, index, 0, "", ""} } - pr.LoadAttributes() - pr.LoadIssue() + if err = pr.LoadAttributes(); err != nil { + return nil, err + } + if err = pr.LoadIssue(); err != nil { + return nil, err + } return pr, nil }