Automatically mirror your repositories from GitLab to GitHub
Project description
GitLab Mirror Maker
GitLab Mirror Maker is a small tool written in Python that automatically mirrors your public repositories from GitLab to GitHub.
Why?
- Maybe you like GitLab better but the current market favors developers with a strong GitHub presence?
- Maybe as a form of backup?
- Or maybe you have other reasons... :wink:
Installation
Install with pip or pipx:
pip install gitlab-mirror-maker
There's also a Docker image available:
docker run registry.gitlab.com/grdl/gitlab-mirror-maker
Usage
Run: gitlab-mirror-maker --github-token xxx --gitlab-token xxx
See Authentication below on how to get the authentication tokens.
Environment variables
Instead of using cli flags you can provide configuration via environment variables with the MIRRORMAKER_
prefix:
export MIRRORMAKER_GITHUB_TOKEN xxx
export MIRRORMAKER_GITLAB_TOKEN xxx
gitlab-mirror-maker
Dry run
Run with --dry-run
flag to only print the summary and don't make any changes.
Full synopsis
Usage: gitlab-mirror-maker [OPTIONS]
Options:
--version Show the version and exit.
--github-token TEXT GitHub authentication token [required]
--gitlab-token TEXT GitLab authentication token [required]
--github-user TEXT GitHub username. If not provided, your GitLab
username will be used by default.
--dry-run / --no-dry-run If enabled, a summary will be printed and no
mirrors will be created.
--help Show this message and exit.
How it works?
GitLab Mirror Maker uses the remote mirrors API to create push mirrors of your GitLab repositories.
For each public repository in your GitLab account a new GitHub repository is created using the same name and description. It also adds a [mirror]
suffix at the end of the description and sets the website URL the original GitLab repo. See the mirror of this repo as an example.
Once the mirror is created it automatically updates the target GitHub repository every time changes are pushed to the original GitLab repo.
What is mirrored?
Only public repositories are mirrored to avoid publishing something private.
Only the commits, branches and tags are mirrored. No other repository data such as issues, pull requests, comments, wikis etc. are mirrored.
Authentication
GitLab Mirror Maker needs authentication tokens for both GitLab and GitHub to be able to create mirrors.
How to get the GitLab token?
- Click on your GitLab user -> Settings -> Access Tokens
- Pick a name for your token and choose the
api
scope - Click
Create personal access token
and save it somewhere secure - Do not share it! It grants full access to your account!
Here's more information about GitLab personal tokens.
How to get the GitHub token?
- Click on your GitHub user -> Settings -> Developer settings -> Personal access tokens -> Generate new token
- Pick a name for your token and choose the
public_repo
scope - Click
Generate token
and save it somewhere secure
Here's more information about GitHub personal tokens.
Automate with GitLab CI
Instead of running the tool manually you may want to schedule it to run periodically with GitLab CI to make sure that any new repositories are automatically mirrored.
Here's a .gitlab-ci.yml
snippet you can use:
job:
image: python:3.8-alpine
script:
- pip install gitlab-mirror-maker
- gitlab-mirror-maker
only:
- schedules
Here's more info about creating scheduled pipelines with GitLab CI.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file gitlab-mirror-maker-0.4.1.tar.gz
.
File metadata
- Download URL: gitlab-mirror-maker-0.4.1.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.5 CPython/3.8.2 Linux/4.19.78-coreos
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 68dc351ea51d01b9f08e3af6f5c7c1ae59ffab6ce867bbfa3e36a4f5ecef2ec0 |
|
MD5 | 33a89b0587b25f23972c64beea918010 |
|
BLAKE2b-256 | 02622e9bb6032e47e89acbbd0aaeb7fcd6841c24050354287f35122a60b66ee5 |
File details
Details for the file gitlab_mirror_maker-0.4.1-py3-none-any.whl
.
File metadata
- Download URL: gitlab_mirror_maker-0.4.1-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.5 CPython/3.8.2 Linux/4.19.78-coreos
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6ffe903d34278a93f3ba524591708d8175c072a65c7afe662fb2ee15e51826f |
|
MD5 | 54fdf18e6fce6afa17ad97df2f413dfc |
|
BLAKE2b-256 | 21b88a82b3b9eaf6ae6cf41c4852a2abb7b0d3582bcbd20368a9e75f1d36e95d |