This tools provides an automated way to copy all repositories in a namespaces from Gitlab to Gogs / Gitea. All tags and branches are copied. Organizations in Gogs are supported as well.
Type python migrate_gitlab_to_gogs.py --help
for usage information.
It will print
usage: migrate_gitlab_to_gogs.py [-h] --source_namespace SOURCE_NAMESPACE
[--add_to_private]
[--add_to_organization organization_name]
--source_repo SOURCE_REPO --target_repo
TARGET_REPO [--no_confirm] [--skip_existing]
[--use_ssh]
optional arguments:
-h, --help show this help message and exit
--source_namespace SOURCE_NAMESPACE
The namespace in gitlab as it appears in URLs. For
example, given the repository address
http://mygitlab.com/harry/my-awesome-repo.git, it
shows that this repository lies within my personal
namespace "harry". Hence I would pass harry as
parameter.
--add_to_private If you want to add the repositories under your own
name, ie. not in any organisation, use this flag.
--add_to_organization organization_name
If you want to add all the repositories to an
exisiting organisation, please pass the name to this
parameter. Organizations correspond to groups in
Gitlab. The name can be taken from the URL, for
example, if your organization is http://mygogs-
repo.com/org/my-awesome-organisation/dashboard then
pass my-awesome-organisation here
--source_repo SOURCE_REPO
URL to your gitlab repo in the format
http://mygitlab.com/
--target_repo TARGET_REPO
URL to your gogs / gitea repo in the format
http://mygogs.com/
--no_confirm Skip user confirmation of each single step
--skip_existing Skip repositories that already exist on remote without
asking the user
--use_ssh Use ssh to pull/push files to repos
This tools was written for Python 3 using the requests, json, subprocess, and argparse modules.