mirror of
https://github.com/go-gitea/gitea
synced 2025-07-22 18:28:37 +00:00
Add migrate from OneDev (#16356)
* Use context to simplify logic. * Added migration from OneDev. This PR adds [OneDev](https://code.onedev.io/) as migration source. Supported: - [x] Milestones - [x] Issues - [x] Pull Requests - [x] Comments - [x] Reviews - [x] Labels
This commit is contained in:
@@ -13,9 +13,9 @@ import (
|
||||
|
||||
// GetCommentOptions represents an options for get comment
|
||||
type GetCommentOptions struct {
|
||||
IssueNumber int64
|
||||
Page int
|
||||
PageSize int
|
||||
Context IssueContext
|
||||
Page int
|
||||
PageSize int
|
||||
}
|
||||
|
||||
// Downloader downloads the site repo information
|
||||
@@ -30,7 +30,7 @@ type Downloader interface {
|
||||
GetComments(opts GetCommentOptions) ([]*Comment, bool, error)
|
||||
SupportGetRepoComments() bool
|
||||
GetPullRequests(page, perPage int) ([]*PullRequest, bool, error)
|
||||
GetReviews(pullRequestNumber int64) ([]*Review, error)
|
||||
GetReviews(pullRequestContext IssueContext) ([]*Review, error)
|
||||
FormatCloneURL(opts MigrateOptions, remoteAddr string) (string, error)
|
||||
}
|
||||
|
||||
|
@@ -7,6 +7,25 @@ package base
|
||||
|
||||
import "time"
|
||||
|
||||
// IssueContext is used to map between local and foreign issue/PR ids.
|
||||
type IssueContext interface {
|
||||
LocalID() int64
|
||||
ForeignID() int64
|
||||
}
|
||||
|
||||
// BasicIssueContext is a 1:1 mapping between local and foreign ids.
|
||||
type BasicIssueContext int64
|
||||
|
||||
// LocalID gets the local id.
|
||||
func (c BasicIssueContext) LocalID() int64 {
|
||||
return int64(c)
|
||||
}
|
||||
|
||||
// ForeignID gets the foreign id.
|
||||
func (c BasicIssueContext) ForeignID() int64 {
|
||||
return int64(c)
|
||||
}
|
||||
|
||||
// Issue is a standard issue information
|
||||
type Issue struct {
|
||||
Number int64
|
||||
@@ -25,4 +44,5 @@ type Issue struct {
|
||||
Labels []*Label
|
||||
Reactions []*Reaction
|
||||
Assignees []string
|
||||
Context IssueContext `yaml:"-"`
|
||||
}
|
||||
|
@@ -50,7 +50,7 @@ func (n NullDownloader) GetIssues(page, perPage int) ([]*Issue, bool, error) {
|
||||
return nil, false, &ErrNotSupported{Entity: "Issues"}
|
||||
}
|
||||
|
||||
// GetComments returns comments according issueNumber
|
||||
// GetComments returns comments according the options
|
||||
func (n NullDownloader) GetComments(GetCommentOptions) ([]*Comment, bool, error) {
|
||||
return nil, false, &ErrNotSupported{Entity: "Comments"}
|
||||
}
|
||||
@@ -61,7 +61,7 @@ func (n NullDownloader) GetPullRequests(page, perPage int) ([]*PullRequest, bool
|
||||
}
|
||||
|
||||
// GetReviews returns pull requests review
|
||||
func (n NullDownloader) GetReviews(pullRequestNumber int64) ([]*Review, error) {
|
||||
func (n NullDownloader) GetReviews(pullRequestContext IssueContext) ([]*Review, error) {
|
||||
return nil, &ErrNotSupported{Entity: "Reviews"}
|
||||
}
|
||||
|
||||
|
@@ -13,7 +13,6 @@ import (
|
||||
// PullRequest defines a standard pull request information
|
||||
type PullRequest struct {
|
||||
Number int64
|
||||
OriginalNumber int64 `yaml:"original_number"`
|
||||
Title string
|
||||
PosterName string `yaml:"poster_name"`
|
||||
PosterID int64 `yaml:"poster_id"`
|
||||
@@ -34,6 +33,7 @@ type PullRequest struct {
|
||||
Assignees []string
|
||||
IsLocked bool `yaml:"is_locked"`
|
||||
Reactions []*Reaction
|
||||
Context IssueContext `yaml:"-"`
|
||||
}
|
||||
|
||||
// IsForkPullRequest returns true if the pull request from a forked repository but not the same repository
|
||||
|
@@ -182,14 +182,14 @@ func (d *RetryDownloader) GetPullRequests(page, perPage int) ([]*PullRequest, bo
|
||||
}
|
||||
|
||||
// GetReviews returns pull requests reviews
|
||||
func (d *RetryDownloader) GetReviews(pullRequestNumber int64) ([]*Review, error) {
|
||||
func (d *RetryDownloader) GetReviews(pullRequestContext IssueContext) ([]*Review, error) {
|
||||
var (
|
||||
reviews []*Review
|
||||
err error
|
||||
)
|
||||
|
||||
err = d.retry(func() error {
|
||||
reviews, err = d.Downloader.GetReviews(pullRequestNumber)
|
||||
reviews, err = d.Downloader.GetReviews(pullRequestContext)
|
||||
return err
|
||||
})
|
||||
|
||||
|
Reference in New Issue
Block a user