Changelog
6.3.0 (2025-04-13)
✨ Features
- entrypoint: archive and unarchive input project during export (a6236b6)
6.2.1 (2025-03-03)
🐛 Bug Fixes
- gitlab: resolve 'container_registry_enabled: null' corruptions (0141125)
🚜 Code Refactoring
- cli: handle 'rename_project_positional' in 'main' sources (f192f09)
6.2.0 (2025-02-28)
✨ Features
- entrypoint: minor outputs codestyle improvements (e4c7938)
- entrypoint: archive migrated project if source is archived (d416ee5)
- entrypoint: improve migration progress output logs (2eada02)
- entrypoint: add existing subgroup update header log (5ca1f9f)
- entrypoint, gitlab: validate migrated project items counts (71bf9f4)
- gitlab: ignore unavailable input pipelines differences (a1678b6)
- gitlab: ignore unavailable input packages differences (aadabff)
- gitlab: ignore unavailable input snippets differences (731185b)
🐛 Bug Fixes
- entrypoint: avoid group as user runtime error issue (ecf25f0)
- gitlab: enforce support for old webhooks GitLab API (2cd1042)
6.1.0 (2025-02-10)
✨ Features
- cli: implement '--flatten-group' parameter to flatten projects (4d395f3)
- cli: implement '--migrate-packages' to migrate GitLab Packages (8e5343f)
- entrypoint: show GitLab username upon authentication (29cecda)
- entrypoint: exit project migration normally if already existing (b132727)
- entrypoint, gitlab: show already valid settings in green (c694447)
- entrypoint, gitlab: implement GitLab limitations warning level (5bb3054)
- gitlab: ignore 'key not found: nil' from old GitLab exports (ce43c6d)
🐛 Bug Fixes
- entrypoint: prevent acces to projects shared with groups (b4f82ce)
- entrypoint: resolve support for group input to user output (e2ed784)
- entrypoint: prevent repeated '.', '-' or '_' in project names (b6dad94)
- entrypoint: resolve personal projects migration with sudo permissions (f4b5054)
📚 Documentation
- docs: use '<span class=page-break>' instead of '<div>' (6619a4c)
- prepare: avoid 'TOC' injection if 'hide: - toc' is used (491f649)
🎨 Styling
- colors: ignore 'Colored' import 'Incompatible import' warning (d83c875)
⚙️ Cleanups
- entrypoint, gitlab: minor Python codestyle improvements (66e8953)
- sonar-project: configure coverage checks in SonarCloud (8cfad86)
🚀 CI
- gitlab-ci: run coverage jobs if 'sonar-project.properties' changes (cf87482)
- gitlab-ci: watch for 'docs/.*' changes in 'pages' jobs (50e2874)
6.0.0 (2025-01-01)
✨ Features
- cli: implement input project archive exports only mode (cc02639)
- entrypoint: show projects description after '# ...' (1fa46ca)
- entrypoint: allow empty description and custom indent in 'confirm' (c852df3)
- entrypoint: use '...' quotes in 'confirm' function (123132b)
- entrypoint: list limited features per line, then confirm (bf06d06)
- entrypoint, gitlab: show limited features items for analysis (f9ac6ef)
- main: support '--update-description[s]' parameter (98be116)
🐛 Bug Fixes
- cli: use package name for 'Updates' checks (ef7dc06)
- cli, gitlab: synchronize repository default branch after migration (fcc204a)
- cli, gitlab: indent configurations under input / output items (c307c3b)
- entrypoint: prevent name conflicts upon same namespaces migration (16ffc28)
- entrypoint: add missing '--archive-sources' handlings for groups (6ce6af0)
- gitlab: wait 1 second before group or project deletion checks (204b654)
- gitlab: wait 60 seconds for large groups creation (a496990)
- gitlab: wait 300 seconds for a successful export download (4033c37)
- gitlab: support GitLab Premium delayed project/group deletions (7af95fe)
- main: ensure 'FORCE_COLOR=0' if using '--no-color' flag (29eaa67)
📚 Documentation
- assets: prepare mkdocs to generate mermaid diagrams (084f652)
- cliff: improve 'Unreleased' and refactor to 'Development' (61970f0)
- covers: resolve broken page header / footer titles (18c659a)
- custom: change to custom header darker blue header bar (829af84)
- docs: improve documentation PDF outputs with page breaks (994bbdf)
- mkdocs: enable 'git-revision-date-localized' plugin (bbacff0)
- mkdocs: change web pages themes colors to 'blue' (5a681da)
- mkdocs: fix 'git-revision-date-localized' syntax (40c6434)
- mkdocs: migrate to 'awesome-pages' pages navigation (30a4593)
- mkdocs: change 'auto / light / dark' themes toggle icons (e22175d)
- mkdocs: enable and configure 'minify' plugin (4edff1d)
- mkdocs: install 'mkdocs-macros-plugin' for Jinja2 templates (0c9106b)
- mkdocs: enable 'pymdownx.emoji' extension for Markdown (123eec2)
- mkdocs: implement 'mkdocs-exporter' and customize PDF style (e743ce1)
- mkdocs: set documentation pages logo to 'solid/code' ('</>') (e88b4d3)
- mkdocs: enable 'permalink' headers anchors for table of contents (57c540c)
- mkdocs: prepare 'privacy' and 'offline' plugins for future usage (e2ce00a)
- mkdocs: disable Google fonts to comply with GDPR data privacy (942ded7)
- mkdocs: implement 'Table of contents' injection for PDF results (68a8138)
- mkdocs: enable 'Created' date feature for pages footer (fef4993)
- mkdocs: add website favicon image and configuration (38660e3)
- mkdocs: implement 'book' covers to have 'limits' + 'fronts' (bda76e2)
- mkdocs: isolate assets to 'docs/assets/' subfolder (dd8553a)
- mkdocs: exclude '.git' from watched documentation sources (b1c3420)
- mkdocs: minor '(prefers-color-scheme...)' syntax improvements (483cfff)
- mkdocs: remove 'preview.py' and 'template.svg' files exclusions (711dac4)
- mkdocs, pages: use 'MKDOCS_EXPORTER_PDF_OUTPUT' for PDF file (23c4165)
- mkdocs, prepare: resolve Markdown support in hidden '<details>' (3e666b9)
- pages: rename index page title to '‣ Usage' (defa9fb)
- pages: rename PDF link title to 'Export as PDF' (752e41d)
- pdf: simplify PDF pages copyright footer (1bc1589)
- pdf: migrate to custom state pseudo class 'state(...)' (7be21f7)
- pdf: avoid header / footer lines on front / back pages (b075999)
- pdf: minor stylesheets codestyle improvements (20c0466)
- pdf: reverse PDF front / back cover pages colors for printers (6ec5a93)
- prepare: regenerate development 'CHANGELOG' with 'git-cliff' (dae8d4c)
- prepare: avoid 'md_in_html' changes to 'changelog' and 'license' (ef17a50)
- prepare: fix '<' and '>' changelog handlings and files list (6d8ca34)
- prepare: implement 'About / Quality' badges page (bc0b823)
- prepare: improve 'Quality' project badges to GitLab (8fface0)
- prepare: use 'docs' sources rather than '.cache' duplicates (63bb28f)
- prepare: resolve 'docs/about' intermediates cleanup (a4a9e9e)
- prepare: add PyPI badges and license badge to 'quality' page (35820d6)
- prepare: avoid adding TOC to generated and 'no-toc' files (5b80769)
- prepare: use 'mkdocs.yml' to get project name value (144e542)
- readme: add 'gcil:enabled' documentation badge (5abc43d)
- readme: add pypi, python versions, downloads and license badges (3726476)
- readme: add '~/.python-gitlab.cfg' section title (411f8b7)
- robots: configure 'robots.txt' for pages robots exploration (9bb91ed)
- stylesheets: resolve lines and arrows visibility in dark mode (ac19dde)
- templates: add 'Author' and 'Description' to PDF front page (26c49d1)
- templates: add 'Date' detail on PDF front page (1545a26)
- templates: use Git commit SHA1 as version if no Git tag found (2174692)
🧪 Test
- test: fix daily updates coverage test syntax (7e305e8)
⚙️ Cleanups
- gitignore: exclude only 'build' folder from sources root (f90614c)
- gitignore: exclude '/build' folder or symlink too (b507a47)
- sonar: wait for SonarCloud Quality Gate status (d1e2f56)
- src: resolve 'too-many-positional-arguments' new lint warnings (6544a3d)
- vscode: use 'yzhang.markdown-all-in-one' for Markdown formatter (eebd0fe)
🚀 CI
- gitlab-ci: prevent 'sonarcloud' job launch upon 'gcil' local use (0ae3920)
- gitlab-ci: run SonarCloud analysis on merge request pipelines (1d8596f)
- gitlab-ci: watch for 'config/*' changes in 'serve' job (92c604a)
- gitlab-ci: fetch Git tags history in 'pages' job execution (77a53c2)
- gitlab-ci: fetch with '--unshallow' for full history in 'pages' (48849e4)
- gitlab-ci: enforce 'requirements/pages.txt' in 'serve' job (9f5279b)
- gitlab-ci: add 'python:3.12-slim' image mirror (42baf94)
- gitlab-ci: inject only 'mkdocs-*' packages in 'serve' job (e921142)
- gitlab-ci: install 'playwright' with chromium in 'serve' job (ce2f709)
- gitlab-ci: find files only for 'entr' in 'serve' (a43e0c9)
- gitlab-ci: improve GitLab CI job outputs for readability (58115a1)
- gitlab-ci: deploy GitLab Pages on 'CI_DEFAULT_BRANCH' branch (97205a9)
- gitlab-ci: ignore 'variables.scss' in 'serve' watcher (5434b1b)
- gitlab-ci: preserve only existing Docker images after 'images' (7dafbce)
- gitlab-ci: use 'MKDOCS_EXPORTER_PDF_ENABLED' to disable PDF exports (d0679b6)
- gitlab-ci: run 'pages' job on GitLab CI tags pipelines (0f3eecc)
- gitlab-ci: isolate 'pages: rules: changes' for reuse (300d463)
- gitlab-ci: allow manual launch of 'pages' on protected branches (249a187)
- gitlab-ci: create 'pdf' job to export PDF on tags and branches (d45f4e3)
- gitlab-ci: implement local pages serve in 'pages' job (1b6c9ad)
- gitlab-ci: raise minimal 'gcil' version to '11.0' (8067971)
- gitlab-ci: enable local host network on 'pages' job (353fade)
- gitlab-ci: detect failures from 'mkdocs serve' executions (c81b44a)
- gitlab-ci: refactor images containers into 'registry:*' jobs (4a52c3a)
- gitlab-ci: bind 'registry:' dependencies to 'requirements/.txt' (4238a86)
- gitlab-ci: avoid PDF slow generation locally outside 'pdf' job (37ecf85)
- gitlab-ci: validate host network interfaces support (af12837)
- gitlab-ci: enable '.local: no_regex' feature (89f7cd8)
- gitlab-ci: append Git version to PDF output file name (fd446f9)
- gitlab-ci: rename PDF to 'gitlab-projects-migrate' (3f82c91)
- gitlab-ci: migrate to 'pre-commit-crocodile/commits@4.0.0' (bb6ae39)
- gitlab-ci: ensure 'pages' job does not block pipeline if manual (963f703)
- gitlab-ci: change release title to include tag version (e174cf2)
📦 Build
- build: import missing 'build' container sources (2c0051e)
- containers: use 'apk add --no-cache' for lighter images (9caf832)
- pages: add 'git-cliff' to the ':pages' image (d4b495b)
- pages: migrate to 'python:3.12-slim' Ubuntu base image (a050260)
- pages: install 'playwright' dependencies for 'mkdocs-exporter' (60216a7)
- pages: install 'entr' in the image (dc49e78)
- requirements: install 'mkdocs-git-revision-date-localized-plugin' (cd1245a)
- requirements: install 'mkdocs-awesome-pages-plugin' plugin (8e0a6d8)
- requirements: install 'mkdocs-minify-plugin' for ':pages' (ecb9486)
- requirements: install 'mkdocs-exporter' in ':pages' (2c04dc2)
- requirements: migrate to 'mkdocs-exporter' with PR#35 (d98f294)
- requirements: upgrade to 'playwright' 1.48.0 (eca8f8c)
- requirements: migrate to 'mkdocs-exporter' with PR#42/PR#41 (fb0f873)
5.3.1 (2024-08-25)
✨ Features
- updates: migrate from deprecated 'pkg_resources' to 'packaging' (a04cd3f)
📚 Documentation
- mkdocs: implement GitLab Pages initial documentation and jobs (4077cf2)
- readme: link against 'gcil' documentation pages (4d192ae)
⚙️ Cleanups
- commitizen: migrate to new 'filter' syntax (commitizen#1207) (f09adcc)
- pre-commit: add 'python-check-blanket-type-ignore' and 'python-no-eval' (db8336b)
- pre-commit: fail 'gcil' jobs if 'PRE_COMMIT' is defined (658d2cd)
- pre-commit: simplify and unify 'local-gcil' hooks syntax (2fc9cdb)
- pre-commit: improve syntax for 'args' arguments (75cdc0b)
- pre-commit: migrate to 'run-gcil-*' template 'gcil' hooks (f81d11c)
- pre-commit: update against 'run-gcil-push' hook template (505b5b5)
- pre-commit: migrate to 'pre-commit-crocodile' 3.0.0 (a7a93ac)
🚀 CI
- containers: implement ':pages' image with 'mkdocs-material' (623c9bb)
- gitlab-ci: avoid failures of 'codestyle' upon local launches (9872de6)
- gitlab-ci: migrate to 'pre-commit-crocodile/commits@2.1.0' component (88d8ab1)
- gitlab-ci: migrate to 'pre-commit-crocodile/commits@3.0.0' component (cd1e3be)
5.3.0 (2024-08-21)
🐛 Bug Fixes
- package: fix package name for 'importlib' version detection (4310eeb)
- platform: always flush on Windows hosts without stdout TTY (336fd2d)
📚 Documentation
- readme: add 'pre-commit enabled' badges (3ae46f3)
- readme: add SonarCloud analysis project badges (79f0c09)
- readme: link 'gcil' back to 'gitlabci-local' PyPI package (84f65e2)
⚙️ Cleanups
- commitizen: migrate to 'pre-commit-crocodile' 2.0.1 (1ed854f)
- gitattributes: always checkout Shell scripts with '\n' EOL (d48e1ac)
- gitignore: ignore '.*.swp' intermediates 'nano' files (e87a978)
- hooks: implement evaluators and matchers priority parser (7e48cc8)
- pre-commit: run 'codestyle', 'lint' and 'typings' jobs (f8796e8)
- pre-commit: migrate to 'pre-commit-crocodile' 2.0.0 (f425805)
🚀 CI
- gitlab-ci: show fetched merge request branches in 'commits' (7af39e4)
- gitlab-ci: fix 'image' of 'commits' job (2af9e4f)
- gitlab-ci: always run 'commits' job on merge request pipelines (c36657f)
- gitlab-ci: make 'needs' jobs for 'build' optional (ed18d14)
- gitlab-ci: validate 'pre-commit' checks in 'commits' job (ce816ea)
- gitlab-ci: refactor images into 'containers/*/Dockerfile' (f0cb573)
- gitlab-ci: use 'HEAD~1' instead of 'HEAD^' for Windows compatibility (2c7cb24)
- gitlab-ci: check only Python files in 'typings' job (a7434b9)
- gitlab-ci: implement SonarCloud quality analysis (1ec376a)
- gitlab-ci: detect and refuse '^wip|^WIP' commits (3cd6108)
- gitlab-ci: isolate 'commits' job to 'templates/commit.yml' (08e9717)
- gitlab-ci: migrate to 'pre-commit-crocodile/commits@2.0.0' component (9bbe33e)
- gitlab-ci: create 'hooks' local job for maintenance (ab13810)
- gitlab-ci, tests: implement coverage initial jobs and tests (81c5bad)
📦 Build
- pre-commit: migrate to 'pre-commit-crocodile' 1.1.0 (91138ae)
5.2.0 (2024-08-15)
🐛 Bug Fixes
- setup: refactor 'python_requires' versions syntax (1313d2e)
- 🚨 BREAKING CHANGE 🚨 | setup: drop support for Python 3.7 due to 'questionary>=2.0.0' (c35db2f)
- setup: resolve project package and name usage (e247e21)
- updates: ensure 'DEBUG_UPDATES_DISABLE' has non-empty value (721c199)
- updates: fix offline mode and SemVer versions comparisons (947dfbc)
📚 Documentation
- cliff: use '|' to separate breaking changes in 'CHANGELOG' (f4b9a7e)
- license: update copyright details for 2024 (87d3a30)
- readme: add 'Commitizen friendly' badge (6cfd434)
🎨 Styling
- cli: improve Python arguments codestyle syntax (4aedfed)
- commitizen, pre-commit: implement 'commitizen' custom configurations (12c4300)
- pre-commit: implement 'pre-commit' configurations (7300bde)
⚙️ Cleanups
- cli, package: minor Python codestyle improvements (50f3a98)
- pre-commit: disable 'check-xml' unused hook (be305d3)
- pre-commit: fix 'commitizen-branch' for same commits ranges (456a108)
- setup: refactor with more project configurations (197125e)
- updates: ignore coverage of online updates message (9f273d9)
- vscode: remove illegal comments in 'extensions.json' (a691dbc)
🚀 CI
- gitlab-ci: watch for 'codestyle', 'lint' and 'typings' jobs success (a9425db)
- gitlab-ci: create 'commits' job to validate with 'commitizen' (b2c8d00)
- gitlab-ci: fix 'commits' job for non-default branches pipelines (4e3402e)
📦 Build
- hooks: create './.hooks/manage' hooks manager for developers (048b9f6)
- hooks: implement 'prepare-commit-msg' template generator (a16f1ce)
- pre-commit: enable 'check-hooks-apply' and 'check-useless-excludes' (5fd439c)
5.1.0 (2024-08-11)
✨ Features
- cli: implement '--no-color' to disable colors (294fd18)
🐛 Bug Fixes
- package: check empty 'environ' values before usage (42b25d4)
- updates: remove unused 'recommended' feature (201ca49)
📚 Documentation
- readme: migrate from 'gitlabci-local' to 'gcil' package (9c81cd8)
⚙️ Cleanups
- cli: resolve unused variable value initialization (c6f99cd)
- colors: resolve 'pragma: no cover' detection (64c028e)
- platform: disable coverage of 'SUDO' without write access (6c1d314)
- setup: remove faulty '# pragma: exclude file' flag (03bb970)
5.0.3 (2024-08-10)
✨ Features
- setup: add support for Python 3.12 (b72e9a1)
🎨 Styling
- main: declare 'subgroup' variable as '_MutuallyExclusiveGroup' (3e1842c)
🧪 Test
- setup: disable sources coverage of the build script (8e7ce06)
🚀 CI
- gitlab-ci: raise latest Python test images from 3.11 to 3.12 (47da8d5)
- gitlab-ci: deprecate outdated and unsafe 'unify' tool (2a890ac)
5.0.2 (2024-08-10)
✨ Features
- gitlab-projects-migrate: migrate under 'RadianDevCore/tools' group (50ed087)
🐛 Bug Fixes
- settings: ensure 'Settings' class initializes settings file (beb96ff)
- src: use relative module paths in 'init' and 'main' (79e567e)
5.0.1 (2024-08-08)
🐛 Bug Fixes
- cli: fix syntax of '--reset-entities' argument variable (5bb61f0)
5.0.0 (2024-08-08)
🛡️ Security
- 🚨 BREAKING CHANGE 🚨 | cli: acquire tokens only from environment variables (1cca6b8)
✨ Features
- 🚨 BREAKING CHANGE 🚨 | cli: refactor CLI into simpler GitLab URL bound parameters (495ccf3)
- cli: implement '--confirm' to bypass interactive user confirmations (640109c)
- cli: support 3rd positional argument for '--rename-project' (23a4e94)
- cli: add tool identifier header with name and version (8dfd23f)
- cli: implement '.python-gitlab.cfg' GitLab configurations files (0782032)
- cli, argparse: implement environment variables helpers (f660b3f)
- cli, gitlab: implement '--available-entities' for migration (c52056a)
- 🚨 BREAKING CHANGE 🚨 | cli, gitlab: migrate from '--keep-members' to '--exclude-entities' (fff8a55)
- cli, gitlab: implement CI job token and public authentications (c9a78f8)
- cli, gitlab: migrate to '--reset-entities' parameter name (c8d3b19)
- entrypoint, gitlab: implement 'Remove:' and 'Template:' entities (6d90592)
- gitlab: migrate entities to 'Remove/' and 'Template/' (91e1942)
🐛 Bug Fixes
- environments: add missing ':' to the README help description (3ae5b5d)
📚 Documentation
- cliff: document 'security(...)' first in changelog (e8499a9)
- readme: document '~/.python-gitlab.cfg' configuration file (07c1d6b)
- readme: document projects copy and project renaming (32107fd)
- readme: document projects as templates copy and entities cleanups (e525ca3)
⚙️ Cleanups
- cli/main: minor codestyle improvement of 'import argparse' (fcd1716)
- gitlab: remove unused 'type: ignore' and resolved TODO 'fixme' (2905f9f)
- types: cleanup inconsistent '()' over base classes (c0150d6)
🚀 CI
- gitlab-ci: migrate from 'git-chglog' to 'git-cliff' (77bc35b)
4.1.2 (2024-08-06)
🐛 Bug Fixes
- entrypoint: fix already existing checks if renaming project (20c8268)
- entrypoint: fix already existing removal if renaming project (303a798)
- gitlab: wait 3 seconds after group and project deletions (9957021)
4.1.0 (2024-08-04)
✨ Features
- gitlab: warn about 'Pipeline triggers', 'Webhooks', 'Project Access Tokens' (760884f)
🐛 Bug Fixes
- entrypoint: fix project checks by path rather than by name (98f4577)
4.0.3 (2024-06-11)
🐛 Bug Fixes
- gitlab: fix namespace detections upon '--dry-run' executions (a331fb8)
4.0.2 (2024-06-10)
📚 Documentation
- chglog: add 'ci' as 'CI' configuration for 'CHANGELOG.md' (f2231d3)
🚀 CI
- gitlab-ci: support docker pull and push without remote (9118e38)
- gitlab-ci: use 'CI_DEFAULT_BRANCH' to access 'develop' branch (ffca219)
- gitlab-ci: change commit messages to tag name (35b9df0)
- setup: update Python package keywords hints (5f36462)
4.0.1 (2024-05-27)
🐛 Bug Fixes
- entrypoint: resolve already existing nested subgroups check (bf656d0)
- gitlab: resolve '.variables.list' on old GitLab instances (483823e)
4.0.0 (2024-05-26)
✨ Features
- entrypoint: improve outputs logs upon delections (8da3ae1)
- entrypoint: identify already existing project, group, subgroup (7baf7b3)
- entrypoint, gitlab: detect and confirm export limitations (797e469)
- entrypoint, main: implement '--rename-project' to rename project (fdf447f)
- main: show newer updates message upon incompatible arguments (5561849)
- main, entrypoint: implement '--archive-sources' mode (64dc73a)
🐛 Bug Fixes
- gitlab: fix project import 'path_with_namespace' in dry run (e4bf8e2)
- main: exclusive '--archive-sources' and '--delete-sources' (f29389e)
📚 Documentation
- readme: add '--archive-sources' and '--delete-sources' examples (59779ca)
⚙️ Cleanups
- entrypoint: turn 'confirm' function into generic handler (5151afa)
3.1.0 (2024-05-17)
✨ Features
- entrypoint: implement '--archive-exports FOLDER' to keep exports (2c47fb7)
- entrypoint: implement prompt confirmation upon deletions (3430da0)
- requirements: prepare 'questionary' library integration (1a2877c)
🐛 Bug Fixes
- gitlab: raise runtime error upon failed project imports (38ffbb6)
- gitlab: restore 'import_project' file argument as BufferedReader (d2a6eaa)
⚙️ Cleanups
- gitlab: ignore 'import_project' file argument typing (edd0867)
3.0.1 (2024-05-15)
🐛 Bug Fixes
- entrypoint: resolve 'output_namespace' assertion tests (a7e48c9)
3.0.0 (2024-05-15)
✨ Features
- entrypoint: always flush progress output logs (e8067f2)
- entrypoint, gitlab: adapt name for '--update-description' (f3fe725)
- entrypoint, gitlab: add support for user namespace projects (e5118a4)
- gitlab: automatically wait for group and project deletions (c998605)
- main: document optional '--' positional arguments separator (aff6a17)
- main, entrypoint: implement '--delete-sources' final actions (140ff3a)
- main, settings: implement 'Settings' from 'gitlabci-local' (dc36932)
- main, upgrades: implement 'Upgrades' from 'gitlabci-local' (3a1ae89)
- namespaces: migrate 'Helper' class to 'Namespaces' class (5a82589)
🐛 Bug Fixes
- entrypoint: enforce against missing '.description' values (9db9037)
- entrypoint: detect if GitLab actions can continue (c1a8d2c)
- entrypoint: minor Python codestyle improvement (2e138e3)
- entrypoint: use full paths instead of 'id' integer fields (524eb14)
- entrypoint: refactor to return no error upon final actions (6367e89)
- entrypoint, gitlab: resolve Python typings new warnings (393e239)
- entrypoint, namespaces: add 'text' to handle empty descriptions (005b50c)
- gitlab: get all members in 'project_reset_members' (f2834a2)
- gitlab: fix 'Any' and 'Optional' typings imports (4af24ba)
- gitlab: try to get real group before faking in '--dry-run' (70ea00d)
- gitlab: add 'description' field to fake project in '--dry-run' (9b7bca1)
- gitlab: accept deletion denials in 'project_reset_members' (be12ff0)
🧪 Test
- version: add 'DEBUG_VERSION_FAKE' for debugging purposes (ae75971)
🚀 CI
- gitlab-ci: move 'readme' job after 'build' and local 'install' (97d3ed0)
- gitlab-ci: handle optional parameters and multiline in 'readme' (a720e9c)
- gitlab-ci: detect 'README.md' issues in 'readme' job (f817eef)
- gitlab-ci: implement 'images' and use project specific images (5475393)
- gitlab-ci: deprecate requirements install in 'lint' job (4e03a36)
- gitlab-ci: support multiple 'METAVAR' words in 'readme' job (2c571f6)
2.1.0 (2024-04-28)
✨ Features
- entrypoint: keep description if already contains group (4c50766)
- entrypoint: sort groups and projects recursively (90e59a4)
🐛 Bug Fixes
- entrypoint: resolve input group for single project migration (ce5c66e)
- entrypoint: resolve input group detection for projects (96ccad9)
2.0.0 (2024-04-28)
✨ Features
- cli: isolate 'features/migration.py' to 'cli/entrypoint.py' (b54de48)
- entrypoint: isolate 'group' function to 'subgroup' (5436398)
- entrypoint, gitlab: isolate 'GitLabFeature.Helper.subpath' (a3d9f28)
- entrypoint, gitlab: isolate 'GitLabFeature.Helper.capitalize' (7a745e4)
- entrypoint, gitlab: implement output parent group creation (c9218c3)
- entrypoint, gitlab: implement groups export/import handlings (a2e6989)
- gitlab: prepare group settings functions for future usage (167962a)
- gitlab, migration: refactor into GitLabFeature functions (41436ec)
- main: isolate CLI argument into specific sections (95ec817)
- main: enforce 'output_group' value is always passed by CLI (701c335)
- main: align 'RawTextHelpFormatter' to 30 chars columns (c15bf79)
- main: limit '--help' width to terminal width or 120 chars (3fcaac0)
- main: add support for 'GITLAB_TOKEN' environment variable (a8cae39)
- main, entrypoint: implement '--exclude-subgroups' filter (377bff5)
- main, entrypoint: implement '--exclude-projects' filter (7c09032)
- main, entrypoint: implement '--exclude-group' filter (21a513c)
- main, gitlab, migration: refactor and add '--dry-run' (afe7a8d)
- migration: sort group projects in ascending 'path' order (23232de)
- migration: implement support for input project along group (cd51b98)
- migration: implement nested projects migration support (5639fca)
- migration: implement GitLab subgroups creation (549f600)
- settings: change project/group descriptions color (fb41f6c)
🐛 Bug Fixes
- entrypoint: safeguard group handlings for '--dry-run' (8202026)
- entrypoint, gitlab: implement description to name fallbacks (5524af7)
- gitlab: resolve '--dry-run' usage upon projects migration (65c0cdb)
- main: ensure GitLab token has been defined (5f9cd0a)
🚜 Code Refactoring
- entrypoint, gitlab: isolate 'GitLabFeature.Helper.split_namespace' (ffd519b)
- migration: refactor into 'entrypoint' main function (ac9990f)
- migration: isolate project migration feature sources (330fbe4)
- src: isolate all sources under 'src/' (7f97146)
📚 Documentation
- readme: regenerate '--help' details in 'README.md' (0209976)
- readme, cli: minor project description improvements (fbbb80a)
🎨 Styling
- main,migration: minor Python codestyle improvements (8f4ece8)
⚙️ Cleanups
- src: ignore 'import-error' over 'init' and 'main' (fce4b15)
🚀 CI
- gitlab-ci: implement 'readme' local job to update README details (02c6fad)
- gitlab-ci: disable 'typing' mypy caching with 'MYPY_CACHE_DIR' (e9ce388)
- gitlab-ci, setup: migrate to 'src' sources management (65dac94)
1.1.0 (2024-04-22)
✨ Features
- features, prints: implement 'colored' outputs colors (dfdb3bf)
- migration: implement '--overwrite' to delete and reimport (34a2af5)
🐛 Bug Fixes
- migration: prevent '--set-avatar' already closed input file (ef2583f)
⚙️ Cleanups
- migration: minor output flush improvements (ece017a)
1.0.0 (2024-04-21)
✨ Features
- gitlab-projects-migrate: initial sources implementation (89ed62b)