@@ -189,36 +189,6 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
189
189
return nil
190
190
}
191
191
}
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
- }
222
192
223
193
if err = pr .Issue .loadRepo (e ); err != nil {
224
194
log .Error ("pr.Issue.loadRepo[%d]: %v" , pr .ID , err )
@@ -227,6 +197,7 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
227
197
228
198
apiPullRequest := & api.PullRequest {
229
199
ID : pr .ID ,
200
+ URL : pr .Issue .HTMLURL (),
230
201
Index : pr .Index ,
231
202
Poster : apiIssue .Poster ,
232
203
Title : apiIssue .Title ,
@@ -241,13 +212,68 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
241
212
DiffURL : pr .Issue .DiffURL (),
242
213
PatchURL : pr .Issue .PatchURL (),
243
214
HasMerged : pr .HasMerged ,
244
- Base : apiBaseBranchInfo ,
245
- Head : apiHeadBranchInfo ,
246
215
MergeBase : pr .MergeBase ,
247
216
Deadline : apiIssue .Deadline ,
248
217
Created : pr .Issue .CreatedUnix .AsTimePtr (),
249
218
Updated : pr .Issue .UpdatedUnix .AsTimePtr (),
250
219
}
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
+ }
251
277
252
278
if pr .Status != PullRequestStatusChecking {
253
279
mergeable := pr .Status != PullRequestStatusConflict && ! pr .IsWorkInProgress ()
0 commit comments