Fix migration from GitBucket (#22465)
Migration from GitBucket does not work due to a access for "Reviews" API on GitBucket that makes 404 response. This PR has following changes. 1. Made to stop access for Reviews API while migrating from GitBucket. 2. Added support for custom URL (e.g. `http://example.com/gitbucket/owner/repository`) 3. Made to accept for git checkout URL (`http://example.com/git/owner/repository.git`) Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
parent
a9400ba7a3
commit
a32700d0fd
2 changed files with 12 additions and 3 deletions
|
@ -34,10 +34,14 @@ func (f *GitBucketDownloaderFactory) New(ctx context.Context, opts base.MigrateO
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := u.Scheme + "://" + u.Host
|
|
||||||
fields := strings.Split(u.Path, "/")
|
fields := strings.Split(u.Path, "/")
|
||||||
oldOwner := fields[1]
|
if len(fields) < 2 {
|
||||||
oldName := strings.TrimSuffix(fields[2], ".git")
|
return nil, fmt.Errorf("invalid path: %s", u.Path)
|
||||||
|
}
|
||||||
|
baseURL := u.Scheme + "://" + u.Host + strings.TrimSuffix(strings.Join(fields[:len(fields)-2], "/"), "/git")
|
||||||
|
|
||||||
|
oldOwner := fields[len(fields)-2]
|
||||||
|
oldName := strings.TrimSuffix(fields[len(fields)-1], ".git")
|
||||||
|
|
||||||
log.Trace("Create GitBucket downloader. BaseURL: %s RepoOwner: %s RepoName: %s", baseURL, oldOwner, oldName)
|
log.Trace("Create GitBucket downloader. BaseURL: %s RepoOwner: %s RepoName: %s", baseURL, oldOwner, oldName)
|
||||||
return NewGitBucketDownloader(ctx, baseURL, opts.AuthUsername, opts.AuthPassword, opts.AuthToken, oldOwner, oldName), nil
|
return NewGitBucketDownloader(ctx, baseURL, opts.AuthUsername, opts.AuthPassword, opts.AuthToken, oldOwner, oldName), nil
|
||||||
|
@ -72,6 +76,7 @@ func (g *GitBucketDownloader) ColorFormat(s fmt.State) {
|
||||||
func NewGitBucketDownloader(ctx context.Context, baseURL, userName, password, token, repoOwner, repoName string) *GitBucketDownloader {
|
func NewGitBucketDownloader(ctx context.Context, baseURL, userName, password, token, repoOwner, repoName string) *GitBucketDownloader {
|
||||||
githubDownloader := NewGithubDownloaderV3(ctx, baseURL, userName, password, token, repoOwner, repoName)
|
githubDownloader := NewGithubDownloaderV3(ctx, baseURL, userName, password, token, repoOwner, repoName)
|
||||||
githubDownloader.SkipReactions = true
|
githubDownloader.SkipReactions = true
|
||||||
|
githubDownloader.SkipReviews = true
|
||||||
return &GitBucketDownloader{
|
return &GitBucketDownloader{
|
||||||
githubDownloader,
|
githubDownloader,
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,6 +76,7 @@ type GithubDownloaderV3 struct {
|
||||||
curClientIdx int
|
curClientIdx int
|
||||||
maxPerPage int
|
maxPerPage int
|
||||||
SkipReactions bool
|
SkipReactions bool
|
||||||
|
SkipReviews bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewGithubDownloaderV3 creates a github Downloader via github v3 API
|
// NewGithubDownloaderV3 creates a github Downloader via github v3 API
|
||||||
|
@ -805,6 +806,9 @@ func (g *GithubDownloaderV3) convertGithubReviewComments(cs []*github.PullReques
|
||||||
// GetReviews returns pull requests review
|
// GetReviews returns pull requests review
|
||||||
func (g *GithubDownloaderV3) GetReviews(reviewable base.Reviewable) ([]*base.Review, error) {
|
func (g *GithubDownloaderV3) GetReviews(reviewable base.Reviewable) ([]*base.Review, error) {
|
||||||
allReviews := make([]*base.Review, 0, g.maxPerPage)
|
allReviews := make([]*base.Review, 0, g.maxPerPage)
|
||||||
|
if g.SkipReviews {
|
||||||
|
return allReviews, nil
|
||||||
|
}
|
||||||
opt := &github.ListOptions{
|
opt := &github.ListOptions{
|
||||||
PerPage: g.maxPerPage,
|
PerPage: g.maxPerPage,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue