55package convert
66
77import (
8+ "fmt"
9+
810 "code.gitea.io/gitea/models"
911 "code.gitea.io/gitea/modules/git"
1012 "code.gitea.io/gitea/modules/log"
@@ -23,10 +25,12 @@ func ToAPIPullRequest(pr *models.PullRequest) *api.PullRequest {
2325 headCommit * git.Commit
2426 err error
2527 )
28+
2629 if err = pr .Issue .LoadRepo (); err != nil {
27- log .Error ("loadRepo [%d]: %v" , pr .ID , err )
30+ log .Error ("pr.Issue.LoadRepo [%d]: %v" , pr .ID , err )
2831 return nil
2932 }
33+
3034 apiIssue := pr .Issue .APIFormat ()
3135 if pr .BaseRepo == nil {
3236 pr .BaseRepo , err = models .GetRepositoryByID (pr .BaseRepoID )
@@ -35,17 +39,13 @@ func ToAPIPullRequest(pr *models.PullRequest) *api.PullRequest {
3539 return nil
3640 }
3741 }
38- if pr .HeadRepo == nil {
42+ if pr .HeadRepoID != 0 && pr . HeadRepo == nil {
3943 pr .HeadRepo , err = models .GetRepositoryByID (pr .HeadRepoID )
40- if err != nil {
44+ if err != nil && ! models . IsErrRepoNotExist ( err ) {
4145 log .Error ("GetRepositoryById[%d]: %v" , pr .ID , err )
4246 return nil
43- }
44- }
4547
46- if err = pr .Issue .LoadRepo (); err != nil {
47- log .Error ("pr.Issue.loadRepo[%d]: %v" , pr .ID , err )
48- return nil
48+ }
4949 }
5050
5151 apiPullRequest := & api.PullRequest {
@@ -99,33 +99,41 @@ func ToAPIPullRequest(pr *models.PullRequest) *api.PullRequest {
9999 apiPullRequest .Base = apiBaseBranchInfo
100100 }
101101
102- headBranch , err = repo_module .GetBranch (pr .HeadRepo , pr .HeadBranch )
103- if err != nil {
104- if git .IsErrBranchNotExist (err ) {
105- apiPullRequest .Head = nil
106- } else {
107- log .Error ("GetBranch[%s]: %v" , pr .HeadBranch , err )
108- return nil
109- }
110- } else {
111- apiHeadBranchInfo := & api.PRBranchInfo {
112- Name : pr .HeadBranch ,
113- Ref : pr .HeadBranch ,
114- RepoID : pr .HeadRepoID ,
115- Repository : pr .HeadRepo .APIFormat (models .AccessModeNone ),
116- }
117- headCommit , err = headBranch .GetCommit ()
102+ if pr .HeadRepo != nil {
103+ headBranch , err = repo_module .GetBranch (pr .HeadRepo , pr .HeadBranch )
118104 if err != nil {
119- if git .IsErrNotExist (err ) {
120- apiHeadBranchInfo . Sha = ""
105+ if git .IsErrBranchNotExist (err ) {
106+ apiPullRequest . Head = nil
121107 } else {
122- log .Error ("GetCommit [%s]: %v" , headBranch . Name , err )
108+ log .Error ("GetBranch [%s]: %v" , pr . HeadBranch , err )
123109 return nil
124110 }
125111 } else {
126- apiHeadBranchInfo .Sha = headCommit .ID .String ()
112+ apiHeadBranchInfo := & api.PRBranchInfo {
113+ Name : pr .HeadBranch ,
114+ Ref : pr .HeadBranch ,
115+ RepoID : pr .HeadRepoID ,
116+ Repository : pr .HeadRepo .APIFormat (models .AccessModeNone ),
117+ }
118+ headCommit , err = headBranch .GetCommit ()
119+ if err != nil {
120+ if git .IsErrNotExist (err ) {
121+ apiHeadBranchInfo .Sha = ""
122+ } else {
123+ log .Error ("GetCommit[%s]: %v" , headBranch .Name , err )
124+ return nil
125+ }
126+ } else {
127+ apiHeadBranchInfo .Sha = headCommit .ID .String ()
128+ }
129+ apiPullRequest .Head = apiHeadBranchInfo
130+ }
131+ } else {
132+ apiPullRequest .Head = & api.PRBranchInfo {
133+ Name : pr .HeadBranch ,
134+ Ref : fmt .Sprintf ("refs/pull/%d/head" , pr .Index ),
135+ RepoID : - 1 ,
127136 }
128- apiPullRequest .Head = apiHeadBranchInfo
129137 }
130138
131139 if pr .Status != models .PullRequestStatusChecking {
0 commit comments