@@ -22,7 +22,6 @@ func ToAPIPullRequest(pr *models.PullRequest) *api.PullRequest {
22
22
baseBranch * git.Branch
23
23
headBranch * git.Branch
24
24
baseCommit * git.Commit
25
- headCommit * git.Commit
26
25
err error
27
26
)
28
27
@@ -99,22 +98,37 @@ func ToAPIPullRequest(pr *models.PullRequest) *api.PullRequest {
99
98
apiPullRequest .Head .RepoID = pr .HeadRepo .ID
100
99
apiPullRequest .Head .Repository = pr .HeadRepo .APIFormat (models .AccessModeNone )
101
100
102
- headBranch , err = repo_module .GetBranch (pr .HeadRepo , pr .HeadBranch )
101
+ headGitRepo , err := git .OpenRepository (pr .HeadRepo .RepoPath ())
102
+ if err != nil {
103
+ log .Error ("OpenRepository[%s]: %v" , pr .HeadRepo .RepoPath (), err )
104
+ return nil
105
+ }
106
+ defer headGitRepo .Close ()
107
+
108
+ headBranch , err = headGitRepo .GetBranch (pr .HeadBranch )
103
109
if err != nil && ! git .IsErrBranchNotExist (err ) {
104
110
log .Error ("GetBranch[%s]: %v" , pr .HeadBranch , err )
105
111
return nil
106
112
}
107
113
108
- if err == nil {
109
- headCommit , err = headBranch .GetCommit ()
114
+ if git .IsErrBranchNotExist (err ) {
115
+ headCommitID , err := headGitRepo .GetRefCommitID (apiPullRequest .Head .Ref )
116
+ if err != nil && ! git .IsErrNotExist (err ) {
117
+ log .Error ("GetCommit[%s]: %v" , headBranch .Name , err )
118
+ return nil
119
+ }
120
+ if err == nil {
121
+ apiPullRequest .Head .Sha = headCommitID
122
+ }
123
+ } else {
124
+ commit , err := headBranch .GetCommit ()
110
125
if err != nil && ! git .IsErrNotExist (err ) {
111
126
log .Error ("GetCommit[%s]: %v" , headBranch .Name , err )
112
127
return nil
113
128
}
114
-
115
129
if err == nil {
116
130
apiPullRequest .Head .Ref = pr .HeadBranch
117
- apiPullRequest .Head .Sha = headCommit .ID .String ()
131
+ apiPullRequest .Head .Sha = commit .ID .String ()
118
132
}
119
133
}
120
134
}
0 commit comments