@@ -189,36 +189,6 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
189189 return nil
190190 }
191191 }
192- if baseBranch , err = pr .BaseRepo .GetBranch (pr .BaseBranch ); err != nil {
193- log .Error ("pr.BaseRepo.GetBranch[%d]: %v" , pr .BaseBranch , err )
194- return nil
195- }
196- if baseCommit , err = baseBranch .GetCommit (); err != nil {
197- log .Error ("baseBranch.GetCommit[%d]: %v" , pr .ID , err )
198- return nil
199- }
200- if headBranch , err = pr .HeadRepo .GetBranch (pr .HeadBranch ); err != nil {
201- log .Error ("pr.HeadRepo.GetBranch[%d]: %v" , pr .HeadBranch , err )
202- return nil
203- }
204- if headCommit , err = headBranch .GetCommit (); err != nil {
205- log .Error ("headBranch.GetCommit[%d]: %v" , pr .ID , err )
206- return nil
207- }
208- apiBaseBranchInfo := & api.PRBranchInfo {
209- Name : pr .BaseBranch ,
210- Ref : pr .BaseBranch ,
211- Sha : baseCommit .ID .String (),
212- RepoID : pr .BaseRepoID ,
213- Repository : pr .BaseRepo .innerAPIFormat (e , AccessModeNone , false ),
214- }
215- apiHeadBranchInfo := & api.PRBranchInfo {
216- Name : pr .HeadBranch ,
217- Ref : pr .HeadBranch ,
218- Sha : headCommit .ID .String (),
219- RepoID : pr .HeadRepoID ,
220- Repository : pr .HeadRepo .innerAPIFormat (e , AccessModeNone , false ),
221- }
222192
223193 if err = pr .Issue .loadRepo (e ); err != nil {
224194 log .Error ("pr.Issue.loadRepo[%d]: %v" , pr .ID , err )
@@ -227,6 +197,7 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
227197
228198 apiPullRequest := & api.PullRequest {
229199 ID : pr .ID ,
200+ URL : pr .Issue .HTMLURL (),
230201 Index : pr .Index ,
231202 Poster : apiIssue .Poster ,
232203 Title : apiIssue .Title ,
@@ -241,13 +212,68 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
241212 DiffURL : pr .Issue .DiffURL (),
242213 PatchURL : pr .Issue .PatchURL (),
243214 HasMerged : pr .HasMerged ,
244- Base : apiBaseBranchInfo ,
245- Head : apiHeadBranchInfo ,
246215 MergeBase : pr .MergeBase ,
247216 Deadline : apiIssue .Deadline ,
248217 Created : pr .Issue .CreatedUnix .AsTimePtr (),
249218 Updated : pr .Issue .UpdatedUnix .AsTimePtr (),
250219 }
220+ baseBranch , err = pr .BaseRepo .GetBranch (pr .BaseBranch )
221+ if err != nil {
222+ if git .IsErrBranchNotExist (err ) {
223+ apiPullRequest .Base = nil
224+ } else {
225+ log .Error ("GetBranch[%s]: %v" , pr .BaseBranch , err )
226+ return nil
227+ }
228+ } else {
229+ apiBaseBranchInfo := & api.PRBranchInfo {
230+ Name : pr .BaseBranch ,
231+ Ref : pr .BaseBranch ,
232+ RepoID : pr .BaseRepoID ,
233+ Repository : pr .BaseRepo .innerAPIFormat (e , AccessModeNone , false ),
234+ }
235+ baseCommit , err = baseBranch .GetCommit ()
236+ if err != nil {
237+ if git .IsErrNotExist (err ) {
238+ apiBaseBranchInfo .Sha = ""
239+ } else {
240+ log .Error ("GetCommit[%s]: %v" , baseBranch .Name , err )
241+ return nil
242+ }
243+ } else {
244+ apiBaseBranchInfo .Sha = baseCommit .ID .String ()
245+ }
246+ apiPullRequest .Base = apiBaseBranchInfo
247+ }
248+
249+ headBranch , err = pr .HeadRepo .GetBranch (pr .HeadBranch )
250+ if err != nil {
251+ if git .IsErrBranchNotExist (err ) {
252+ apiPullRequest .Head = nil
253+ } else {
254+ log .Error ("GetBranch[%s]: %v" , pr .HeadBranch , err )
255+ return nil
256+ }
257+ } else {
258+ apiHeadBranchInfo := & api.PRBranchInfo {
259+ Name : pr .HeadBranch ,
260+ Ref : pr .HeadBranch ,
261+ RepoID : pr .HeadRepoID ,
262+ Repository : pr .HeadRepo .innerAPIFormat (e , AccessModeNone , false ),
263+ }
264+ headCommit , err = headBranch .GetCommit ()
265+ if err != nil {
266+ if git .IsErrNotExist (err ) {
267+ apiHeadBranchInfo .Sha = ""
268+ } else {
269+ log .Error ("GetCommit[%s]: %v" , headBranch .Name , err )
270+ return nil
271+ }
272+ } else {
273+ apiHeadBranchInfo .Sha = headCommit .ID .String ()
274+ }
275+ apiPullRequest .Head = apiHeadBranchInfo
276+ }
251277
252278 if pr .Status != PullRequestStatusChecking {
253279 mergeable := pr .Status != PullRequestStatusConflict && ! pr .IsWorkInProgress ()
0 commit comments