|
|
|
@ -15,32 +15,34 @@ menu: |
|
|
|
|
|
|
|
|
|
# Migration Features |
|
|
|
|
|
|
|
|
|
The new migration features were introduced in Gitea 1.9.0. It defines two interfaces to support migrating |
|
|
|
|
repositories data from other git host platforms to gitea or, in the future migrating gitea data to other |
|
|
|
|
The new migration features were introduced in Gitea 1.9.0. It defines two interfaces to support migrating |
|
|
|
|
repositories data from other git host platforms to gitea or, in the future migrating gitea data to other |
|
|
|
|
git host platforms. Currently, only the migrations from github via APIv3 to Gitea is implemented. |
|
|
|
|
|
|
|
|
|
First of all, Gitea defines some standard objects in packages `modules/migrations/base`. They are |
|
|
|
|
`Repository`, `Milestone`, `Release`, `Label`, `Issue`, `Comment`, `PullRequest`. |
|
|
|
|
`Repository`, `Milestone`, `Release`, `Label`, `Issue`, `Comment`, `PullRequest`, `Reaction`, `Review`, `ReviewComment`. |
|
|
|
|
|
|
|
|
|
## Downloader Interfaces |
|
|
|
|
|
|
|
|
|
To migrate from a new git host platform, there are two steps to be updated. |
|
|
|
|
|
|
|
|
|
- You should implement a `Downloader` which will get all kinds of repository informations. |
|
|
|
|
- You should implement a `DownloaderFactory` which is used to detect if the URL matches and |
|
|
|
|
- You should implement a `DownloaderFactory` which is used to detect if the URL matches and |
|
|
|
|
create a Downloader. |
|
|
|
|
- You'll need to register the `DownloaderFactory` via `RegisterDownloaderFactory` on init. |
|
|
|
|
|
|
|
|
|
```Go |
|
|
|
|
type Downloader interface { |
|
|
|
|
SetContext(context.Context) |
|
|
|
|
GetRepoInfo() (*Repository, error) |
|
|
|
|
GetTopics() ([]string, error) |
|
|
|
|
GetMilestones() ([]*Milestone, error) |
|
|
|
|
GetReleases() ([]*Release, error) |
|
|
|
|
GetLabels() ([]*Label, error) |
|
|
|
|
GetIssues(start, limit int) ([]*Issue, error) |
|
|
|
|
GetIssues(page, perPage int) ([]*Issue, bool, error) |
|
|
|
|
GetComments(issueNumber int64) ([]*Comment, error) |
|
|
|
|
GetPullRequests(start, limit int) ([]*PullRequest, error) |
|
|
|
|
GetPullRequests(page, perPage int) ([]*PullRequest, error) |
|
|
|
|
GetReviews(pullRequestNumber int64) ([]*Review, error) |
|
|
|
|
} |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
@ -53,20 +55,24 @@ type DownloaderFactory interface { |
|
|
|
|
|
|
|
|
|
## Uploader Interface |
|
|
|
|
|
|
|
|
|
Currently, only a `GiteaLocalUploader` is implemented, so we only save downloaded |
|
|
|
|
Currently, only a `GiteaLocalUploader` is implemented, so we only save downloaded |
|
|
|
|
data via this `Uploader` on the local Gitea instance. Other uploaders are not supported |
|
|
|
|
and will be implemented in future. |
|
|
|
|
|
|
|
|
|
```Go |
|
|
|
|
// Uploader uploads all the informations |
|
|
|
|
type Uploader interface { |
|
|
|
|
CreateRepo(repo *Repository, includeWiki bool) error |
|
|
|
|
CreateMilestone(milestone *Milestone) error |
|
|
|
|
CreateRelease(release *Release) error |
|
|
|
|
CreateLabel(label *Label) error |
|
|
|
|
CreateIssue(issue *Issue) error |
|
|
|
|
CreateComment(issueNumber int64, comment *Comment) error |
|
|
|
|
CreatePullRequest(pr *PullRequest) error |
|
|
|
|
MaxBatchInsertSize(tp string) int |
|
|
|
|
CreateRepo(repo *Repository, opts MigrateOptions) error |
|
|
|
|
CreateTopics(topic ...string) error |
|
|
|
|
CreateMilestones(milestones ...*Milestone) error |
|
|
|
|
CreateReleases(releases ...*Release) error |
|
|
|
|
SyncTags() error |
|
|
|
|
CreateLabels(labels ...*Label) error |
|
|
|
|
CreateIssues(issues ...*Issue) error |
|
|
|
|
CreateComments(comments ...*Comment) error |
|
|
|
|
CreatePullRequests(prs ...*PullRequest) error |
|
|
|
|
CreateReviews(reviews ...*Review) error |
|
|
|
|
Rollback() error |
|
|
|
|
Close() |
|
|
|
|
} |
|
|
|
|