# gitlab-projects-migrate
<!-- markdownlint-disable no-inline-html -->
[![Build](https://gitlab.com/RadianDevCore/tools/gitlab-projects-migrate/badges/main/pipeline.svg)](https://gitlab.com/RadianDevCore/tools/gitlab-projects-migrate/-/commits/main/)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=RadianDevCore_gitlab-projects-migrate&metric=bugs)](https://sonarcloud.io/dashboard?id=RadianDevCore_gitlab-projects-migrate)
[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=RadianDevCore_gitlab-projects-migrate&metric=code_smells)](https://sonarcloud.io/dashboard?id=RadianDevCore_gitlab-projects-migrate)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=RadianDevCore_gitlab-projects-migrate&metric=coverage)](https://sonarcloud.io/dashboard?id=RadianDevCore_gitlab-projects-migrate)
[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=RadianDevCore_gitlab-projects-migrate&metric=ncloc)](https://sonarcloud.io/dashboard?id=RadianDevCore_gitlab-projects-migrate)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=RadianDevCore_gitlab-projects-migrate&metric=alert_status)](https://sonarcloud.io/dashboard?id=RadianDevCore_gitlab-projects-migrate)
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)
[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](https://commitizen-tools.github.io/commitizen/)
[![pre-commit-crocodile](https://img.shields.io/badge/pre--commit--crocodile-enabled-brightgreen?logo=gitlab)](https://radiandevcore.gitlab.io/tools/pre-commit-crocodile)
Migrate GitLab projects from a GitLab group to another GitLab's group
**Documentation:** <https://radiandevcore.gitlab.io/tools/gitlab-projects-migrate>
**Package:** <https://pypi.org/project/gitlab-projects-migrate/>
---
## 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
<!-- prettier-ignore-start -->
```bash
# 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'
# Copy a project between two groups
gitlab-projects-migrate 'https://gitlab.com/old/group/project' 'https://gitlab.com/new/group'
# Copy and rename a project within a group
gitlab-projects-migrate 'https://gitlab.com/group/project' 'https://gitlab.com/group' 'new_project_name'
# Copy projects as templates and reset imported entities automatically
gitlab-projects-migrate --reset-entities 'Template/Issues' 'https://gitlab.com/group/template_issues' 'https://gitlab.com/group' 'issues'
gitlab-projects-migrate --reset-entities 'Template/Repository' 'https://gitlab.com/group/template_repository' 'https://gitlab.com/group' 'repository'
```
<!-- prettier-ignore-end -->
---
## Usage
<!-- prettier-ignore-start -->
<!-- readme-help-start -->
```yaml
usage: gitlab-projects-migrate [-h] [--version] [--no-color] [--update-check] [--settings] [--set GROUP KEY VAL]
[-c FILES] [--archive-exports FOLDER] [--archive-sources | --delete-sources]
[--dry-run] [--exclude-group] [--exclude-subgroups] [--exclude-projects] [--confirm]
[--overwrite] [--rename-project NAME] [--available-entities]
[--reset-entities ENTITIES] [--set-avatar FILE] [--update-description] [--]
[input_url_path] [output_url_namespace] [rename_single_project]
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
--no-color # Disable colors outputs with 'NO_COLOR=1'
# (or default settings: [themes] > no_color)
--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:
-c FILES, --config FILES # Python GitLab configuration files (default: PYTHON_GITLAB_CFG environment)
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
--confirm # Automatically confirm all removal and contents warnings
--overwrite # Overwrite existing projects on output GitLab
--rename-project NAME # Rename GitLab output project (only for single input project)
--available-entities # List the available GitLab export/import entities known by the tool
--reset-entities ENTITIES # List of GitLab export/import entities to reset separated by "," (default: Members)
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_url_path # Input GitLab group or project path URL
output_url_namespace # Output GitLab group or user namespace URL
rename_single_project # Rename GitLab output project (only for single input project)
environment variables:
GITLAB_INPUT_TOKEN # Input GitLab API token environment variable (fallback: GITLAB_TOKEN)
GITLAB_OUTPUT_TOKEN # Output GitLab API token environment variable (fallback: GITLAB_TOKEN)
CI_JOB_TOKEN # GitLab CI job token environment variable (CI only)
```
<!-- readme-help-stop -->
<!-- prettier-ignore-end -->
---
## Python GitLab configuration file
`gitlab-projects-migrate` uses the same configuration files as the `python-gitlab` API,
holding domains, URL and private tokens credentials for the GitLab instances.
The default user configuration file can be created at `~/.python-gitlab.cfg`.
The `-c` or `--config` parameters can provide specific configuration files,
otherwise the `PYTHON_GITLAB_CFG` environment variable can be used.
**Example `~/.python-gitlab.cfg` configuration file:**
```ini
[global]
default = gitlab.com
ssl_verify = true
timeout = 5
[gitlab.com]
url = https://gitlab.com
private_token = glpat-...
[gitlab.local.dev]
url = https://gitlab.local.dev
private_token = glpat-...
[gitlab.private.dev:4243]
url = https://gitlab.private.dev:4243
private_token = glpat-...
ssl_verify = /usr/local/share/ca-certificates/gitlab.private.dev.crt
```
**`python-gitlab` configuration files documentation:** [Getting started with the CLI / Configuration files](https://python-gitlab.readthedocs.io/en/stable/cli-usage.html#configuration-files)
---
## 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:
```bash
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](https://pypi.org/project/colored/): Terminal colors and styles
- [python-gitlab](https://pypi.org/project/python-gitlab/): A python wrapper for the GitLab API
- [questionary](https://pypi.org/project/questionary/): Interactive terminal user interfaces
- [setuptools](https://pypi.org/project/setuptools/): Build and manage Python packages
- [update-checker](https://pypi.org/project/update-checker/): Check for package updates on PyPI
---
## References
- [commitizen](https://pypi.org/project/commitizen/): Simple commit conventions for internet citizens
- [git-cliff](https://github.com/orhun/git-cliff): CHANGELOG generator
- [gitlab-release](https://pypi.org/project/gitlab-release/): Utility for publishing on GitLab
- [gcil](https://radiandevcore.gitlab.io/tools/gcil): Launch .gitlab-ci.yml jobs locally
- [mkdocs](https://www.mkdocs.org/): Project documentation with Markdown
- [mkdocs-material](https://squidfunk.github.io/mkdocs-material/): Material theme for mkdocs documentation
- [mypy](https://pypi.org/project/mypy/): Optional static typing for Python
- [pre-commit](https://pre-commit.com/): A framework for managing and maintaining pre-commit hooks
- [pre-commit-crocodile](https://radiandevcore.gitlab.io/tools/pre-commit-crocodile): Git hooks intended for developers using pre-commit
- [PyPI](https://pypi.org/): The Python Package Index
- [twine](https://pypi.org/project/twine/): Utility for publishing on PyPI
Raw data
{
"_id": null,
"home_page": "https://gitlab.com/RadianDevCore/tools/gitlab-projects-migrate",
"name": "gitlab-projects-migrate",
"maintainer": null,
"docs_url": null,
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*,>=3",
"maintainer_email": null,
"keywords": "gitlab projects migrate group project",
"author": "Adrian DC",
"author_email": "radian.dc@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/03/71/639de1ba97ad4687e1c2a966dd8f7be6e1a6429049cd56915abcc4c102aa/gitlab_projects_migrate-5.3.1.tar.gz",
"platform": null,
"description": "# gitlab-projects-migrate\n\n<!-- markdownlint-disable no-inline-html -->\n\n[![Build](https://gitlab.com/RadianDevCore/tools/gitlab-projects-migrate/badges/main/pipeline.svg)](https://gitlab.com/RadianDevCore/tools/gitlab-projects-migrate/-/commits/main/)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=RadianDevCore_gitlab-projects-migrate&metric=bugs)](https://sonarcloud.io/dashboard?id=RadianDevCore_gitlab-projects-migrate)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=RadianDevCore_gitlab-projects-migrate&metric=code_smells)](https://sonarcloud.io/dashboard?id=RadianDevCore_gitlab-projects-migrate)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=RadianDevCore_gitlab-projects-migrate&metric=coverage)](https://sonarcloud.io/dashboard?id=RadianDevCore_gitlab-projects-migrate)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=RadianDevCore_gitlab-projects-migrate&metric=ncloc)](https://sonarcloud.io/dashboard?id=RadianDevCore_gitlab-projects-migrate)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=RadianDevCore_gitlab-projects-migrate&metric=alert_status)](https://sonarcloud.io/dashboard?id=RadianDevCore_gitlab-projects-migrate)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)\n[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](https://commitizen-tools.github.io/commitizen/)\n[![pre-commit-crocodile](https://img.shields.io/badge/pre--commit--crocodile-enabled-brightgreen?logo=gitlab)](https://radiandevcore.gitlab.io/tools/pre-commit-crocodile)\n\nMigrate GitLab projects from a GitLab group to another GitLab's group\n\n**Documentation:** <https://radiandevcore.gitlab.io/tools/gitlab-projects-migrate> \n**Package:** <https://pypi.org/project/gitlab-projects-migrate/>\n\n---\n\n## Purpose\n\nThe migration can be performed between entirely different GitLab servers.\n\nThe following steps are required before using the tool:\n\n- The groups need to be created manually by the user or by a GitLab administrator\n- The GitLab user tokens must be created with an `api` scope (a short expiration date is recommended)\n\n---\n\n## Examples\n\n<!-- prettier-ignore-start -->\n\n```bash\n# Show the helper menu\ngitlab-projects-migrate\n\n# Migrate projects from one group to another, then migrate subgroups\ngitlab-projects-migrate 'https://gitlab.com/old/group' 'https://gitlab.com/new/group'\ngitlab-projects-migrate 'https://gitlab.com/old/group/subgroup1' 'https://gitlab.com/new/group/subgroup1'\ngitlab-projects-migrate 'https://gitlab.com/old/group/subgroup2' 'https://gitlab.com/new/group/subgroup2'\n\n# Migrate projects from one group to another, then archive or delete sources\ngitlab-projects-migrate --archive-sources 'https://gitlab.com/old_group_1' 'https://gitlab.com/new_group_1'\ngitlab-projects-migrate --delete-sources 'https://gitlab.com/old_group_2' 'https://gitlab.com/new_group_2'\n\n# Migrate projects from one GitLab to another GitLab\ngitlab-projects-migrate 'https://old.gitlab.com/group/subgroup' 'https://new.gitlab.com'\n\n# Copy a project between two groups\ngitlab-projects-migrate 'https://gitlab.com/old/group/project' 'https://gitlab.com/new/group'\n\n# Copy and rename a project within a group\ngitlab-projects-migrate 'https://gitlab.com/group/project' 'https://gitlab.com/group' 'new_project_name'\n\n# Copy projects as templates and reset imported entities automatically\ngitlab-projects-migrate --reset-entities 'Template/Issues' 'https://gitlab.com/group/template_issues' 'https://gitlab.com/group' 'issues'\ngitlab-projects-migrate --reset-entities 'Template/Repository' 'https://gitlab.com/group/template_repository' 'https://gitlab.com/group' 'repository'\n```\n\n<!-- prettier-ignore-end -->\n\n---\n\n## Usage\n\n<!-- prettier-ignore-start -->\n<!-- readme-help-start -->\n\n```yaml\nusage: gitlab-projects-migrate [-h] [--version] [--no-color] [--update-check] [--settings] [--set GROUP KEY VAL]\n [-c FILES] [--archive-exports FOLDER] [--archive-sources | --delete-sources]\n [--dry-run] [--exclude-group] [--exclude-subgroups] [--exclude-projects] [--confirm]\n [--overwrite] [--rename-project NAME] [--available-entities]\n [--reset-entities ENTITIES] [--set-avatar FILE] [--update-description] [--]\n [input_url_path] [output_url_namespace] [rename_single_project]\n\ngitlab-projects-migrate: Migrate GitLab projects from a GitLab group to another GitLab's group\n\ninternal arguments:\n -h, --help # Show this help message\n --version # Show the current version\n --no-color # Disable colors outputs with 'NO_COLOR=1'\n # (or default settings: [themes] > no_color)\n --update-check # Check for newer package updates\n --settings # Show the current settings path and contents\n --set GROUP KEY VAL # Set settings specific 'VAL' value to [GROUP] > KEY\n # or unset by using 'UNSET' as 'VAL'\n\ncredentials arguments:\n -c FILES, --config FILES # Python GitLab configuration files (default: PYTHON_GITLAB_CFG environment)\n\nmigration arguments:\n --archive-exports FOLDER # Store exported projects and groups to a folder\n --archive-sources # Archive sources after successful migration\n --delete-sources # Delete sources after successful migration\n --dry-run # Enable dry run mode to check without saving\n --exclude-group # Exclude parent group migration\n --exclude-subgroups # Exclude children subgroups migration\n --exclude-projects # Exclude children projects migration\n --confirm # Automatically confirm all removal and contents warnings\n --overwrite # Overwrite existing projects on output GitLab\n --rename-project NAME # Rename GitLab output project (only for single input project)\n --available-entities # List the available GitLab export/import entities known by the tool\n --reset-entities ENTITIES # List of GitLab export/import entities to reset separated by \",\" (default: Members)\n\ngeneral settings arguments:\n --set-avatar FILE # Set avatar of GitLab output projects and groups\n --update-description # Update description of GitLab output projects and groups automatically\n\npositional arguments:\n -- # Positional arguments separator (recommended)\n input_url_path # Input GitLab group or project path URL\n output_url_namespace # Output GitLab group or user namespace URL\n rename_single_project # Rename GitLab output project (only for single input project)\n\nenvironment variables:\n GITLAB_INPUT_TOKEN # Input GitLab API token environment variable (fallback: GITLAB_TOKEN)\n GITLAB_OUTPUT_TOKEN # Output GitLab API token environment variable (fallback: GITLAB_TOKEN)\n CI_JOB_TOKEN # GitLab CI job token environment variable (CI only)\n```\n\n<!-- readme-help-stop -->\n<!-- prettier-ignore-end -->\n\n---\n\n## Python GitLab configuration file\n\n`gitlab-projects-migrate` uses the same configuration files as the `python-gitlab` API, \nholding domains, URL and private tokens credentials for the GitLab instances.\n\nThe default user configuration file can be created at `~/.python-gitlab.cfg`.\n\nThe `-c` or `--config` parameters can provide specific configuration files, \notherwise the `PYTHON_GITLAB_CFG` environment variable can be used.\n\n**Example `~/.python-gitlab.cfg` configuration file:**\n\n```ini\n[global]\ndefault = gitlab.com\nssl_verify = true\ntimeout = 5\n\n[gitlab.com]\nurl = https://gitlab.com\nprivate_token = glpat-...\n\n[gitlab.local.dev]\nurl = https://gitlab.local.dev\nprivate_token = glpat-...\n\n[gitlab.private.dev:4243]\nurl = https://gitlab.private.dev:4243\nprivate_token = glpat-...\nssl_verify = /usr/local/share/ca-certificates/gitlab.private.dev.crt\n```\n\n\n**`python-gitlab` configuration files documentation:** [Getting started with the CLI / Configuration files](https://python-gitlab.readthedocs.io/en/stable/cli-usage.html#configuration-files)\n\n---\n\n## Userspace available settings\n\n`gitlab-projects-migrate` creates a `settings.ini` configuration file in a userspace folder.\n\nFor example, it allows to disable the automated updates daily check (`[updates] > enabled`)\n\nThe `settings.ini` file location and contents can be shown with the following command:\n\n```bash\ngitlab-projects-migrate --settings\n```\n\n---\n\n## Environment available configurations\n\n`gitlab-projects-migrate` uses `colored` for colors outputs and `questionary` for interactive menus.\n\nIf colors of both outputs types do not match the terminal's theme, \nan environment variable `NO_COLOR=1` can be defined to disable colors.\n\n---\n\n## Dependencies\n\n- [colored](https://pypi.org/project/colored/): Terminal colors and styles\n- [python-gitlab](https://pypi.org/project/python-gitlab/): A python wrapper for the GitLab API\n- [questionary](https://pypi.org/project/questionary/): Interactive terminal user interfaces\n- [setuptools](https://pypi.org/project/setuptools/): Build and manage Python packages\n- [update-checker](https://pypi.org/project/update-checker/): Check for package updates on PyPI\n\n---\n\n## References\n\n- [commitizen](https://pypi.org/project/commitizen/): Simple commit conventions for internet citizens\n- [git-cliff](https://github.com/orhun/git-cliff): CHANGELOG generator\n- [gitlab-release](https://pypi.org/project/gitlab-release/): Utility for publishing on GitLab\n- [gcil](https://radiandevcore.gitlab.io/tools/gcil): Launch .gitlab-ci.yml jobs locally\n- [mkdocs](https://www.mkdocs.org/): Project documentation with Markdown\n- [mkdocs-material](https://squidfunk.github.io/mkdocs-material/): Material theme for mkdocs documentation\n- [mypy](https://pypi.org/project/mypy/): Optional static typing for Python\n- [pre-commit](https://pre-commit.com/): A framework for managing and maintaining pre-commit hooks\n- [pre-commit-crocodile](https://radiandevcore.gitlab.io/tools/pre-commit-crocodile): Git hooks intended for developers using pre-commit\n- [PyPI](https://pypi.org/): The Python Package Index\n- [twine](https://pypi.org/project/twine/): Utility for publishing on PyPI\n",
"bugtrack_url": null,
"license": "Apache License 2.0",
"summary": "Migrate GitLab projects from a GitLab group to another GitLab's group",
"version": "5.3.1",
"project_urls": {
"Bug Reports": "https://gitlab.com/RadianDevCore/tools/gitlab-projects-migrate/-/issues",
"Changelog": "https://gitlab.com/RadianDevCore/tools/gitlab-projects-migrate/blob/main/CHANGELOG.md",
"Documentation": "https://gitlab.com/RadianDevCore/tools/gitlab-projects-migrate#gitlab-projects-migrate",
"Homepage": "https://gitlab.com/RadianDevCore/tools/gitlab-projects-migrate",
"Source": "https://gitlab.com/RadianDevCore/tools/gitlab-projects-migrate",
"Statistics": "https://pypistats.org/packages/gitlab-projects-migrate"
},
"split_keywords": [
"gitlab",
"projects",
"migrate",
"group",
"project"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "39b5f5c33c0b3e819d45b1a692b4ac8c12e4fe910dcdeab3e593894eef5e79ee",
"md5": "a43d0d0873f0f612569242c5fa84ed55",
"sha256": "fc8146782f064a411a4e7f11a9d0622c9fe025786c3ff03ab429c71a3c6ddedb"
},
"downloads": -1,
"filename": "gitlab_projects_migrate-5.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a43d0d0873f0f612569242c5fa84ed55",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*,>=3",
"size": 36225,
"upload_time": "2024-08-25T09:47:17",
"upload_time_iso_8601": "2024-08-25T09:47:17.842590Z",
"url": "https://files.pythonhosted.org/packages/39/b5/f5c33c0b3e819d45b1a692b4ac8c12e4fe910dcdeab3e593894eef5e79ee/gitlab_projects_migrate-5.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0371639de1ba97ad4687e1c2a966dd8f7be6e1a6429049cd56915abcc4c102aa",
"md5": "2921fa984d70930ea27acfe2b734056a",
"sha256": "d2038b06ce629879c377b4ee7a17d9a040d9b689e3953dba2a4c42dafa12946c"
},
"downloads": -1,
"filename": "gitlab_projects_migrate-5.3.1.tar.gz",
"has_sig": false,
"md5_digest": "2921fa984d70930ea27acfe2b734056a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*,>=3",
"size": 60523,
"upload_time": "2024-08-25T09:47:19",
"upload_time_iso_8601": "2024-08-25T09:47:19.332068Z",
"url": "https://files.pythonhosted.org/packages/03/71/639de1ba97ad4687e1c2a966dd8f7be6e1a6429049cd56915abcc4c102aa/gitlab_projects_migrate-5.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-25 09:47:19",
"github": false,
"gitlab": true,
"bitbucket": false,
"codeberg": false,
"gitlab_user": "RadianDevCore",
"gitlab_project": "tools",
"lcname": "gitlab-projects-migrate"
}