mirror of
https://github.com/go-gitea/gitea.git
synced 2025-06-19 13:10:36 +02:00
Fix pull requests API convert panic when head repository is deleted. (#34685)
Fix #34682
This commit is contained in:
parent
d5afdccde8
commit
fbc3796f9e
@ -419,6 +419,9 @@ func ToAPIPullRequests(ctx context.Context, baseRepo *repo_model.Repository, prs
|
|||||||
if baseBranch != nil {
|
if baseBranch != nil {
|
||||||
apiPullRequest.Base.Sha = baseBranch.CommitID
|
apiPullRequest.Base.Sha = baseBranch.CommitID
|
||||||
}
|
}
|
||||||
|
if pr.HeadRepoID == pr.BaseRepoID {
|
||||||
|
apiPullRequest.Head.Repository = apiPullRequest.Base.Repository
|
||||||
|
}
|
||||||
|
|
||||||
// pull request head branch, both repository and branch could not exist
|
// pull request head branch, both repository and branch could not exist
|
||||||
if pr.HeadRepo != nil {
|
if pr.HeadRepo != nil {
|
||||||
@ -431,22 +434,19 @@ func ToAPIPullRequests(ctx context.Context, baseRepo *repo_model.Repository, prs
|
|||||||
if exist {
|
if exist {
|
||||||
apiPullRequest.Head.Ref = pr.HeadBranch
|
apiPullRequest.Head.Ref = pr.HeadBranch
|
||||||
}
|
}
|
||||||
|
if pr.HeadRepoID != pr.BaseRepoID {
|
||||||
|
p, err := access_model.GetUserRepoPermission(ctx, pr.HeadRepo, doer)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("GetUserRepoPermission[%d]: %v", pr.HeadRepoID, err)
|
||||||
|
p.AccessMode = perm.AccessModeNone
|
||||||
|
}
|
||||||
|
apiPullRequest.Head.Repository = ToRepo(ctx, pr.HeadRepo, p)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if apiPullRequest.Head.Ref == "" {
|
if apiPullRequest.Head.Ref == "" {
|
||||||
apiPullRequest.Head.Ref = pr.GetGitRefName()
|
apiPullRequest.Head.Ref = pr.GetGitRefName()
|
||||||
}
|
}
|
||||||
|
|
||||||
if pr.HeadRepoID == pr.BaseRepoID {
|
|
||||||
apiPullRequest.Head.Repository = apiPullRequest.Base.Repository
|
|
||||||
} else {
|
|
||||||
p, err := access_model.GetUserRepoPermission(ctx, pr.HeadRepo, doer)
|
|
||||||
if err != nil {
|
|
||||||
log.Error("GetUserRepoPermission[%d]: %v", pr.HeadRepoID, err)
|
|
||||||
p.AccessMode = perm.AccessModeNone
|
|
||||||
}
|
|
||||||
apiPullRequest.Head.Repository = ToRepo(ctx, pr.HeadRepo, p)
|
|
||||||
}
|
|
||||||
|
|
||||||
if pr.Flow == issues_model.PullRequestFlowAGit {
|
if pr.Flow == issues_model.PullRequestFlowAGit {
|
||||||
apiPullRequest.Head.Name = ""
|
apiPullRequest.Head.Name = ""
|
||||||
}
|
}
|
||||||
|
@ -46,4 +46,11 @@ func TestPullRequest_APIFormat(t *testing.T) {
|
|||||||
assert.NotNil(t, apiPullRequest)
|
assert.NotNil(t, apiPullRequest)
|
||||||
assert.Nil(t, apiPullRequest.Head.Repository)
|
assert.Nil(t, apiPullRequest.Head.Repository)
|
||||||
assert.EqualValues(t, -1, apiPullRequest.Head.RepoID)
|
assert.EqualValues(t, -1, apiPullRequest.Head.RepoID)
|
||||||
|
|
||||||
|
apiPullRequests, err := ToAPIPullRequests(git.DefaultContext, pr.BaseRepo, []*issues_model.PullRequest{pr}, nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Len(t, apiPullRequests, 1)
|
||||||
|
assert.NotNil(t, apiPullRequests[0])
|
||||||
|
assert.Nil(t, apiPullRequests[0].Head.Repository)
|
||||||
|
assert.EqualValues(t, -1, apiPullRequests[0].Head.RepoID)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user