Migrating repository assets

This document investigates the necessary methods required to migrate repository assets from the source namespace on Pagure to the destination namespace on Forgejo. As both Pagure and Forgejo are Git-based forges and support transmission via HTTPS, that is what I will suggest using for the process.

Exporting repository assets from Pagure

It is crucial for the commits at the source namespace on Pagure to be signed in order to reliably inform about the authors of the repository assets at any given point in time. The absence of commit signatures might lead to the info about the commit owners to be lost during the transfer if the authoring username does not yet exist in the destination namespace.

Various artifacts like releases will not be transferred over in a 1:1 nature and rather parts of it, for eg. tags and branches, that are associated with the Git repository would make it to the other side. Any Git library can be made use of to clone the source namespace locally with pre-migration changes as long as they are well maintained by a healthy community.

Importing repository assets into Forgejo

In ideal circumstances, it is preferable to have the users associated with a certain source namespace on Pagure to already have their accounts in the destination namespace on Forgejo. When that cannot be made possible, the fall back option is to rely on the commit signatures and using the inbuilt migration option in Forgejo by providing the clone URL.

The destination namespace has to exist and the Git repository must be blank for the migration tooling to work as the default behaviour is to force-push commits from the local cloned copy. Alternatively, if automation is not a concern here, one can even make use of the internal migration utility provided by Forgejo, to move repository assets in a Git repository.

Resources

../_images/p2fm_migr_menu.png ../_images/p2fm_migr_main.png ../_images/p2fm_migr_rest.png