Migrate GitLab projects from a GitLab group to another GitLab's group
Project description
gitlab-projects-migrate
Migrate GitLab projects from a GitLab group to another GitLab's group
Purpose
The migration can be performed between entirely different GitLab servers.
The following steps are required before using the tool:
- The groups need to be created manually by the user or by a GitLab administrator
- The GitLab user tokens must be created with an
api
scope (a short expiration date is recommended)
Examples
# Show the helper menu
gitlab-projects-migrate
# Migrate projects from one group to another, then migrate subgroups
gitlab-projects-migrate 'https://gitlab.com' 'old/group' 'https://gitlab.com' 'new/group'
gitlab-projects-migrate 'https://gitlab.com' 'old/group/subgroup1' 'https://gitlab.com' 'new/group/subgroup1'
gitlab-projects-migrate 'https://gitlab.com' 'old/group/subgroup2' 'https://gitlab.com' 'new/group/subgroup2'
# Migrate projects from one group to another, then archive or delete sources
gitlab-projects-migrate --archive-sources 'https://gitlab.com' 'old_group_1' 'https://gitlab.com' 'new_group_1'
gitlab-projects-migrate --delete-sources 'https://gitlab.com' 'old_group_2' 'https://gitlab.com' 'new_group_2'
# Migrate projects from one GitLab to another GitLab
gitlab-projects-migrate 'https://old.gitlab.com' 'group/subgroup' 'https://new.gitlab.com'
Usage
usage: gitlab-projects-migrate [-h] [--version] [--update-check] [--settings] [--set GROUP KEY VAL] [-I INPUT_TOKEN]
[-O OUTPUT_TOKEN] [--archive-exports FOLDER] [--archive-sources | --delete-sources]
[--dry-run] [--exclude-group] [--exclude-subgroups] [--exclude-projects]
[--keep-members] [--overwrite] [--rename-project NAME] [--set-avatar FILE]
[--update-description] [--]
[input_gitlab] [input_path] [output_gitlab] [output_namespace]
gitlab-projects-migrate: Migrate GitLab projects from a GitLab group to another GitLab's group
internal arguments:
-h, --help # Show this help message
--version # Show the current version
--update-check # Check for newer package updates
--settings # Show the current settings path and contents
--set GROUP KEY VAL # Set settings specific 'VAL' value to [GROUP] > KEY
# or unset by using 'UNSET' as 'VAL'
credentials arguments:
-I INPUT_TOKEN # Input GitLab API token (default: GITLAB_INPUT_TOKEN or GITLAB_TOKEN environments)
-O OUTPUT_TOKEN # Output GitLab API token (default: GITLAB_OUTPUT_TOKEN, GITLAB_TOKEN environments, or INPUT_TOKEN argument)
migration arguments:
--archive-exports FOLDER # Store exported projects and groups to a folder
--archive-sources # Archive sources after successful migration
--delete-sources # Delete sources after successful migration
--dry-run # Enable dry run mode to check without saving
--exclude-group # Exclude parent group migration
--exclude-subgroups # Exclude children subgroups migration
--exclude-projects # Exclude children projects migration
--keep-members # Keep input members after importing on output GitLab
--overwrite # Overwrite existing projects on output GitLab
--rename-project NAME # Rename GitLab output project (only for single input project)
general settings arguments:
--set-avatar FILE # Set avatar of GitLab output projects and groups
--update-description # Update description of GitLab output projects and groups automatically
positional arguments:
-- # Positional arguments separator (recommended)
input_gitlab # Input GitLab URL (default: https://gitlab.com)
input_path # Input GitLab group, user namespace or project path
output_gitlab # Output GitLab URL (default: https://gitlab.com)
output_namespace # Output GitLab group or user namespace
Userspace available settings
gitlab-projects-migrate
creates a settings.ini
configuration file in a userspace folder.
For example, it allows to disable the automated updates daily check ([updates] > enabled
)
The settings.ini
file location and contents can be shown with the following command:
gitlab-projects-migrate --settings
Environment available configurations
gitlab-projects-migrate
uses colored
for colors outputs and questionary
for interactive menus.
If colors of both outputs types do not match the terminal's theme,
an environment variable NO_COLOR=1
can be defined to disable colors.
Dependencies
- colored: Terminal colors and styles
- python-gitlab: A python wrapper for the GitLab API
- questionary: Interactive terminal user interfaces
- setuptools: Build and manage Python packages
- update-checker: Check for package updates on PyPI
References
- git-chglog: CHANGELOG generator
- gitlab-release: Utility for publishing on GitLab
- gitlabci-local: Launch .gitlab-ci.yml jobs locally
- mypy: Optional static typing for Python
- PyPI: The Python Package Index
- twine: Utility for publishing on PyPI
Project details
Release history Release notifications | RSS feed
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
Hashes for gitlab_projects_migrate-4.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc700a74ccc205ae29911fd06a3841e16f3be6d89d61e40d2f2ec5ebf9060aea |
|
MD5 | b9e6caecb78a0125687853d33c6880f7 |
|
BLAKE2b-256 | d591f9f93339cce60af3b069a3291542ede8525ad589b5103e134fa8924bc7d0 |
Hashes for gitlab_projects_migrate-4.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8042b037f524aa1637e72b1c834df20c5fe98376ab66532dac0e692538ef2e0 |
|
MD5 | 0d70d2e3bb12faf3b280f82d703469cf |
|
BLAKE2b-256 | 4365242141e316e80688c79931cc2ea264ccd880196ee1613c475647b2eb9caa |