0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo.git synced 2024-12-26 17:34:11 -05:00
forgejo/docs/content/doc/advanced/repo-mirror.en-us.md
KN4CK3R 440039c0cc
Add push to remote mirror repository (#15157)
* Added push mirror model.

* Integrated push mirror into queue.

* Moved methods into own file.

* Added basic implementation.

* Mirror wiki too.

* Removed duplicated method.

* Get url for different remotes.

* Added migration.

* Unified remote url access.

* Add/Remove push mirror remotes.

* Prevent hangs with missing credentials.

* Moved code between files.

* Changed sanitizer interface.

* Added push mirror backend methods.

* Only update the mirror remote.

* Limit refs on push.

* Added UI part.

* Added missing table.

* Delete mirror if repository gets removed.

* Changed signature. Handle object errors.

* Added upload method.

* Added "upload" unit tests.

* Added transfer adapter unit tests.

* Send correct headers.

* Added pushing of LFS objects.

* Added more logging.

* Simpler body handling.

* Process files in batches to reduce HTTP calls.

* Added created timestamp.

* Fixed invalid column name.

* Changed name to prevent xorm auto setting.

* Remove table header im empty.

* Strip exit code from error message.

* Added docs page about mirroring.

* Fixed date.

* Fixed merge errors.

* Moved test to integrations.

* Added push mirror test.

* Added test.
2021-06-14 19:20:43 +02:00

4.3 KiB
Raw Blame History

date title slug weight toc draft menu
2021-05-13T00:00:00-00:00 Repository Mirror repo-mirror 45 false false
sidebar
parent name weight identifier
advanced Repository Mirror 45 repo-mirror

Repository Mirror

Repository mirroring allows for the mirroring of repositories to and from external sources. You can use it to mirror branches, tags, and commits between repositories.

Table of Contents

{{< toc >}}

Use cases

The following are some possible use cases for repository mirroring:

  • You migrated to Gitea but still need to keep your project in another source. In that case, you can simply set it up to mirror to Gitea (pull) and all the essential history of commits, tags, and branches are available in your Gitea instance.
  • You have old projects in another source that you dont use actively anymore, but dont want to remove for archiving purposes. In that case, you can create a push mirror so that your active Gitea repository can push its changes to the old location.

Pulling from a remote repository

For an existing remote repository, you can set up pull mirroring as follows:

  1. Select New Migration in the Create... menu on the top right.
  2. Select the remote repository service.
  3. Enter a repository URL.
  4. If the repository needs authentication fill in your authentication information.
  5. Check the box This repository will be a mirror.
  6. Select Migrate repository to save the configuration.

The repository now gets mirrored periodically from the remote repository. You can force a sync by selecting Synchronize Now in the repository settings.

Pushing to a remote repository

For an existing repository, you can set up push mirroring as follows:

  1. In your repository, go to Settings > Repository, and then the Mirror Settings section.
  2. Enter a repository URL.
  3. If the repository needs authentication expand the Authorization section and fill in your authentication information.
  4. Select Add Push Mirror to save the configuration.

The repository now gets mirrored periodically to the remote repository. You can force a sync by selecting Synchronize Now. In case of an error a message displayed to help you resolve it.

NOTE: This will force push to the remote repository. This will overwrite any changes in the remote repository!

Setting up a push mirror from Gitea to GitHub

To set up a mirror from Gitea to GitHub, you need to follow these steps:

  1. Create a GitHub personal access token with the public_repo box checked.
  2. Fill in the Git Remote Repository URL: https://github.com/<your_github_group>/<your_github_project>.git.
  3. Fill in the Authorization fields with your GitHub username and the personal access token.
  4. Select Add Push Mirror to save the configuration.

The repository pushes shortly thereafter. To force a push, select the Synchronize Now button.

Setting up a push mirror from Gitea to GitLab

To set up a mirror from Gitea to GitLab, you need to follow these steps:

  1. Create a GitLab personal access token with write_repository scope.
  2. Fill in the Git Remote Repository URL: https://<destination host>/<your_gitlab_group_or_name>/<your_gitlab_project>.git.
  3. Fill in the Authorization fields with oauth2 as Username and your GitLab personal access token as Password.
  4. Select Add Push Mirror to save the configuration.

The repository pushes shortly thereafter. To force a push, select the Synchronize Now button.

Setting up a push mirror from Gitea to Bitbucket

To set up a mirror from Gitea to Bitbucket, you need to follow these steps:

  1. Create a Bitbucket app password with the Repository Write box checked.
  2. Fill in the Git Remote Repository URL: https://bitbucket.org/<your_bitbucket_group_or_name>/<your_bitbucket_project>.git.
  3. Fill in the Authorization fields with your Bitbucket username and the app password as Password.
  4. Select Add Push Mirror to save the configuration.

The repository pushes shortly thereafter. To force a push, select the Synchronize Now button.