Skip to content

Commit f5727d8

Browse files
authored
[BugFix] [API] Pull.API.Convert: Only try to get HeadBranch if HeadRepo exist (go-gitea#10029) (go-gitea#10088)
1 parent 912ce27 commit f5727d8

File tree

1 file changed

+32
-29
lines changed

1 file changed

+32
-29
lines changed

models/pull.go

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
420420
err error
421421
)
422422
if err = pr.Issue.loadRepo(e); err != nil {
423-
log.Error("loadRepo[%d]: %v", pr.ID, err)
423+
log.Error("pr.Issue.loadRepo[%d]: %v", pr.ID, err)
424424
return nil
425425
}
426426
apiIssue := pr.Issue.apiFormat(e)
@@ -431,19 +431,14 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
431431
return nil
432432
}
433433
}
434-
if pr.HeadRepo == nil {
434+
if pr.HeadRepoID != 0 && pr.HeadRepo == nil {
435435
pr.HeadRepo, err = getRepositoryByID(e, pr.HeadRepoID)
436-
if err != nil {
436+
if err != nil && !IsErrRepoNotExist(err) {
437437
log.Error("GetRepositoryById[%d]: %v", pr.ID, err)
438438
return nil
439439
}
440440
}
441441

442-
if err = pr.Issue.loadRepo(e); err != nil {
443-
log.Error("pr.Issue.loadRepo[%d]: %v", pr.ID, err)
444-
return nil
445-
}
446-
447442
apiPullRequest := &api.PullRequest{
448443
ID: pr.ID,
449444
URL: pr.Issue.HTMLURL(),
@@ -495,33 +490,41 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
495490
apiPullRequest.Base = apiBaseBranchInfo
496491
}
497492

498-
headBranch, err = pr.HeadRepo.GetBranch(pr.HeadBranch)
499-
if err != nil {
500-
if git.IsErrBranchNotExist(err) {
501-
apiPullRequest.Head = nil
502-
} else {
503-
log.Error("GetBranch[%s]: %v", pr.HeadBranch, err)
504-
return nil
505-
}
506-
} else {
507-
apiHeadBranchInfo := &api.PRBranchInfo{
508-
Name: pr.HeadBranch,
509-
Ref: pr.HeadBranch,
510-
RepoID: pr.HeadRepoID,
511-
Repository: pr.HeadRepo.innerAPIFormat(e, AccessModeNone, false),
512-
}
513-
headCommit, err = headBranch.GetCommit()
493+
if pr.HeadRepo != nil {
494+
headBranch, err = pr.HeadRepo.GetBranch(pr.HeadBranch)
514495
if err != nil {
515-
if git.IsErrNotExist(err) {
516-
apiHeadBranchInfo.Sha = ""
496+
if git.IsErrBranchNotExist(err) {
497+
apiPullRequest.Head = nil
517498
} else {
518-
log.Error("GetCommit[%s]: %v", headBranch.Name, err)
499+
log.Error("GetBranch[%s]: %v", pr.HeadBranch, err)
519500
return nil
520501
}
521502
} else {
522-
apiHeadBranchInfo.Sha = headCommit.ID.String()
503+
apiHeadBranchInfo := &api.PRBranchInfo{
504+
Name: pr.HeadBranch,
505+
Ref: pr.HeadBranch,
506+
RepoID: pr.HeadRepoID,
507+
Repository: pr.HeadRepo.innerAPIFormat(e, AccessModeNone, false),
508+
}
509+
headCommit, err = headBranch.GetCommit()
510+
if err != nil {
511+
if git.IsErrNotExist(err) {
512+
apiHeadBranchInfo.Sha = ""
513+
} else {
514+
log.Error("GetCommit[%s]: %v", headBranch.Name, err)
515+
return nil
516+
}
517+
} else {
518+
apiHeadBranchInfo.Sha = headCommit.ID.String()
519+
}
520+
apiPullRequest.Head = apiHeadBranchInfo
521+
}
522+
} else {
523+
apiPullRequest.Head = &api.PRBranchInfo{
524+
Name: pr.HeadBranch,
525+
Ref: fmt.Sprintf("refs/pull/%d/head", pr.Index),
526+
RepoID: -1,
523527
}
524-
apiPullRequest.Head = apiHeadBranchInfo
525528
}
526529

527530
if pr.Status != PullRequestStatusChecking {

0 commit comments

Comments
 (0)