When working with a distributed system made of many code repositories, it is tedious to clone each repository manually.
Below is how you could clone an entire GitLab group of repositories in one go.
Install the GitLab CLI glab by following the instructions at https://gitlab.com/gitlab-org/cli/#installation.
Generate a personal access token with at least the api and write_repository scopes from your GitLab instance.
If your GitLab instance uses a self-signed certificate, either install the appropriate certificates or configure glab to skip TLS verification.
glab config set skip_tls_verify true --host gitlab.example.comAuthenticate using glab auth login. Here’s a sample session:
$ glab auth login
? What GitLab instance do you want to sign in to? GitLab Self-Managed or GitLab Dedicated instance
? GitLab hostname: gitlab.example.com
? API hostname: gitlab.example.com
- Signing into gitlab.example.com
? How would you like to sign in? Token
Tip: generate a personal access token at https://gitlab.example.com/-/user_settings/personal_access_tokens?scopes=api,write_repository.
The minimum required scopes are 'api' and 'write_repository'.
? Paste your authentication token: **************************
? Choose default Git protocol: SSH
? Choose host API protocol: HTTPS
- glab config set -h gitlab.example.com git_protocol ssh
✓ Configured Git protocol.
- glab config set -h gitlab.example.com api_protocol https
✓ Configured API protocol.
✓ Logged in as johndoe
✓ Configuration saved to /Users/johndoe/.config/glab-cli/config.ymlUse the following command to clone all repositories under a GitLab group.
# This clones all repositories under https://gitlab.example.com/foo
GITLAB_HOST=gitlab.example.com glab repo clone -g foo --paginate