5
5
package convert
6
6
7
7
import (
8
+ "fmt"
9
+
8
10
"code.gitea.io/gitea/models"
9
11
"code.gitea.io/gitea/modules/git"
10
12
"code.gitea.io/gitea/modules/log"
@@ -23,10 +25,12 @@ func ToAPIPullRequest(pr *models.PullRequest) *api.PullRequest {
23
25
headCommit * git.Commit
24
26
err error
25
27
)
28
+
26
29
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 )
28
31
return nil
29
32
}
33
+
30
34
apiIssue := pr .Issue .APIFormat ()
31
35
if pr .BaseRepo == nil {
32
36
pr .BaseRepo , err = models .GetRepositoryByID (pr .BaseRepoID )
@@ -35,17 +39,13 @@ func ToAPIPullRequest(pr *models.PullRequest) *api.PullRequest {
35
39
return nil
36
40
}
37
41
}
38
- if pr .HeadRepo == nil {
42
+ if pr .HeadRepoID != 0 && pr . HeadRepo == nil {
39
43
pr .HeadRepo , err = models .GetRepositoryByID (pr .HeadRepoID )
40
- if err != nil {
44
+ if err != nil && ! models . IsErrRepoNotExist ( err ) {
41
45
log .Error ("GetRepositoryById[%d]: %v" , pr .ID , err )
42
46
return nil
43
- }
44
- }
45
47
46
- if err = pr .Issue .LoadRepo (); err != nil {
47
- log .Error ("pr.Issue.loadRepo[%d]: %v" , pr .ID , err )
48
- return nil
48
+ }
49
49
}
50
50
51
51
apiPullRequest := & api.PullRequest {
@@ -99,33 +99,41 @@ func ToAPIPullRequest(pr *models.PullRequest) *api.PullRequest {
99
99
apiPullRequest .Base = apiBaseBranchInfo
100
100
}
101
101
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 )
118
104
if err != nil {
119
- if git .IsErrNotExist (err ) {
120
- apiHeadBranchInfo . Sha = ""
105
+ if git .IsErrBranchNotExist (err ) {
106
+ apiPullRequest . Head = nil
121
107
} else {
122
- log .Error ("GetCommit [%s]: %v" , headBranch . Name , err )
108
+ log .Error ("GetBranch [%s]: %v" , pr . HeadBranch , err )
123
109
return nil
124
110
}
125
111
} 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 ,
127
136
}
128
- apiPullRequest .Head = apiHeadBranchInfo
129
137
}
130
138
131
139
if pr .Status != models .PullRequestStatusChecking {
0 commit comments