Template
1
0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo synced 2024-11-30 05:46:09 +01:00
forgejo/docs/content/doc/developers/migrations.en-us.md
qwerty287 5754080eb9
Fix various typos of software names (#18083)
* `git` -> `Git`
* `Github` and `github` -> `GitHub`
* `crowdin` -> `Crowdin`
* `git-lfs` -> `Git LFS`
* `githooks`, `git hooks`, `git-hooks` -> `Git Hooks`
* `discord` -> `Discord`
* `2fa` -> `2FA`
* `gitlab` and `Gitlab` -> `GitLab`
* `web hook` -> `webhook`
* `linux` -> `Linux`
* `sqlite` -> `SQLite`
* `MYSQL` and `mysql` -> `MySQL`
* rename refs to `master` branch -> `main`
* Fix English grammar
2021-12-24 11:56:57 +08:00

1.7 KiB

date title slug weight toc draft menu
2019-04-15T17:29:00+08:00 Migrations Interfaces migrations-interfaces 30 false false
sidebar
parent name weight identifier
developers Migrations Interfaces 55 migrations-interfaces

Migration Features

Complete migrations were introduced in Gitea 1.9.0. It defines two interfaces to support migrating repository data from other Git host platforms to Gitea or, in the future, migrating Gitea data to other Git host platforms.
Currently, migrations from GitHub, GitLab, and other Gitea instances are implemented.

First of all, Gitea defines some standard objects in packages modules/migration.
They are Repository, Milestone, Release, ReleaseAsset, 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 be used to get repository information.
  • You should implement a DownloaderFactory which will be used to detect if the URL matches and create the above Downloader.
    • You'll need to register the DownloaderFactory via RegisterDownloaderFactory on init().

You can find these interfaces in downloader.go.

Uploader Interface

Currently, only a GiteaLocalUploader is implemented, so we only save downloaded data via this Uploader to the local Gitea instance. Other uploaders are not supported at this time.

You can find these interfaces in uploader.go.