Conversion table GitHub / GitLab / Gitea

Use case

As a developer I want to create an issue or pull request on my own forge, even when the target is a software project hosted on another forge. Very much like I want to write an email to using my preferred email client and not the Google mail web interface.

Mirroring software projects

It is currently possible to move a software project from one forge to another using the following internal file formats provided by GitHub, GitLab and Gitea.

Convert to… GitHub Gitea GitLab
GitHub GitHub Gitea Gitlab
Gitea Gitea GitLab
GitLab Gitea GitLab

The Gitea inernal format will be documented (JSON schema) and maintained so that it can be used as a pivot format outside of Gitea.

The code to dump and restore software project data in the current internal formats (GitHub, Gitea or GitLab) is neither incremental nor idempotent.

The Gitea code to dump and restore software project data will be modified to be idempotent so that it can:

  • be resumed when an import is interrupted
  • be used for mirroring

Relaying modifications from a mirror

The mirror of a project is readonly. If a user tries to modify a mirror, for instance by adding an issue, a merge request or a pull request, it will be transparently forwarded to the forge from which the project originates.

1 Like

This is a short (5 minutes) presentation for my coworkers at due tomorrow morning. I believe these are the only topics that need explaining in this context.