Migrating Repositories

Using a distributed version control software system (like Git) allows you to keep control of the data inside the repository. If you want to download a local copy of your files, you can git clone your repo, or download the repo from the web interface.

This works well for moving files, but when you want to migrate metadata like issues, releases and a wiki, you can use the migration tool.

On Codeberg, you can click on the plus symbol on the top right, and then select New Migration on the dropdown to access the migration tool.

Selecting your host

Once you're at the New Migration page, you can select the Git host you are migrating from. If it's not on the list, you will have to select the Git option. This will not migrate metadata.

Here we document instructions for migrating specific to each service. Once you've followed through, move on to Starting Migration.

Migrating from Git

Here's an explanation of some fields on the Git migration page:

  • Migrate / Clone From URL: This is the URL to your repository. For example: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git.
  • Username and Password: Optionally, if authentication is required to access the repo, you can enter a username and password here.

Migrating from Gitea

To migrate a repo with its metadata from a Gitea instance, you will first need to create an access token on the Gitea instance with your repository. Don't forget to delete the access token when you are finished.

You can also use this method to migrate your repos away from Codeberg to another Gitea instance.

Here's an explanation of some fields on the Gitea migration page:

  • Migrate / Clone From URL: This is the URL to your repository. For example: https://gitea.com/gitea/tea.
  • Access Token: You will paste the access token generated here. An access token is required to migrate metadata.
  • Migration Items: Here you can select the metadata you want migrated.

Starting Migration

Once you've filled out all the fields, click the Migrate Repository button. Migration might take a while, depending on how large the repo is.

When the repo code appears, migration is complete!

Inaccessible repo after failed migration

Sometimes a migration might fail for no obvious reasons like timeouts or invalid data in the source repo, leaving you with an inaccessible repo on Codeberg. When you try to navigate to your repo on Codeberg, e.g. https://codeberg.org/knut/example/, you are welcomed with a 500 Internal Server Error.

In this case it might be worthwhile to retry the migration.
First you need to remove the inaccessible repo. To do so, go to the settings page of your repo by appending /settings to the URI, e.g. https://codeberg.org/knut/example/settings. You can delete the repo from here and start over with a new migration.

If this doesn't work out, feel free to open an issue in the Community Issue Tracker.

Hey there! 👋 Thank you for reading this article!

Is there something missing, or do you have an idea on how to improve the documentation? Do you want to write your own article?

You're invited to contribute to the Codeberg Documentation at its source code repository, for example, by adding a pull request or joining in on the discussion in the issue tracker.

For an introduction on contributing to Codeberg Documentation, please have a look at the Contributor FAQ.

© Codeberg Docs Contributors. See LICENSE