Prevent NPE whilst migrating if there is a team request review (#19855)
A pr.Reviewer may be nil when migrating from Gitea if this is a team request review. We do not migrate teams therefore we cannot map these requests, but we can migrate user requests. Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
parent
d087554d81
commit
7948cb3149
7 changed files with 42 additions and 8 deletions
|
@ -8,7 +8,7 @@ package migrations
|
|||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/google/go-github/v39/github"
|
||||
"github.com/google/go-github/v45/github"
|
||||
)
|
||||
|
||||
// ErrRepoNotCreated returns the error that repository not created
|
||||
|
|
|
@ -639,6 +639,11 @@ func (g *GiteaDownloader) GetReviews(reviewable base.Reviewable) ([]*base.Review
|
|||
}
|
||||
|
||||
for _, pr := range prl {
|
||||
if pr.Reviewer == nil {
|
||||
// Presumably this is a team review which we cannot migrate at present but we have to skip this review as otherwise the review will be mapped on to an incorrect user.
|
||||
// TODO: handle team reviews
|
||||
continue
|
||||
}
|
||||
|
||||
rcl, _, err := g.client.ListPullReviewComments(g.repoOwner, g.repoName, reviewable.GetForeignIndex(), pr.ID)
|
||||
if err != nil {
|
||||
|
@ -664,7 +669,7 @@ func (g *GiteaDownloader) GetReviews(reviewable base.Reviewable) ([]*base.Review
|
|||
})
|
||||
}
|
||||
|
||||
allReviews = append(allReviews, &base.Review{
|
||||
review := &base.Review{
|
||||
ID: pr.ID,
|
||||
IssueIndex: reviewable.GetLocalIndex(),
|
||||
ReviewerID: pr.Reviewer.ID,
|
||||
|
@ -675,7 +680,9 @@ func (g *GiteaDownloader) GetReviews(reviewable base.Reviewable) ([]*base.Review
|
|||
CreatedAt: pr.Submitted,
|
||||
State: string(pr.State),
|
||||
Comments: reviewComments,
|
||||
})
|
||||
}
|
||||
|
||||
allReviews = append(allReviews, review)
|
||||
}
|
||||
|
||||
if len(prl) < g.maxPerPage {
|
||||
|
|
|
@ -696,6 +696,8 @@ func convertReviewState(state string) models.ReviewType {
|
|||
return models.ReviewTypeReject
|
||||
case base.ReviewStateCommented:
|
||||
return models.ReviewTypeComment
|
||||
case base.ReviewStateRequestReview:
|
||||
return models.ReviewTypeRequest
|
||||
default:
|
||||
return models.ReviewTypePending
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ import (
|
|||
"code.gitea.io/gitea/modules/structs"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
|
||||
"github.com/google/go-github/v39/github"
|
||||
"github.com/google/go-github/v45/github"
|
||||
"golang.org/x/oauth2"
|
||||
)
|
||||
|
||||
|
@ -778,6 +778,7 @@ func (g *GithubDownloaderV3) GetReviews(reviewable base.Reviewable) ([]*base.Rev
|
|||
opt := &github.ListOptions{
|
||||
PerPage: g.maxPerPage,
|
||||
}
|
||||
// Get approve/request change reviews
|
||||
for {
|
||||
g.waitAndPickClient()
|
||||
reviews, resp, err := g.getClient().PullRequests.ListReviews(g.ctx, g.repoOwner, g.repoName, int(reviewable.GetForeignIndex()), opt)
|
||||
|
@ -817,5 +818,28 @@ func (g *GithubDownloaderV3) GetReviews(reviewable base.Reviewable) ([]*base.Rev
|
|||
}
|
||||
opt.Page = resp.NextPage
|
||||
}
|
||||
// Get requested reviews
|
||||
for {
|
||||
g.waitAndPickClient()
|
||||
reviewers, resp, err := g.getClient().PullRequests.ListReviewers(g.ctx, g.repoOwner, g.repoName, int(reviewable.GetForeignIndex()), opt)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error while listing repos: %v", err)
|
||||
}
|
||||
g.setRate(&resp.Rate)
|
||||
for _, user := range reviewers.Users {
|
||||
r := &base.Review{
|
||||
ReviewerID: user.GetID(),
|
||||
ReviewerName: user.GetLogin(),
|
||||
State: base.ReviewStateRequestReview,
|
||||
IssueIndex: reviewable.GetLocalIndex(),
|
||||
}
|
||||
allReviews = append(allReviews, r)
|
||||
}
|
||||
// TODO: Handle Team requests
|
||||
if resp.NextPage == 0 {
|
||||
break
|
||||
}
|
||||
opt.Page = resp.NextPage
|
||||
}
|
||||
return allReviews, nil
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue