✨ Giphon is the contraction of 🦊 Gitlab and 🫗 siphon. This CLI tools allows users to recursively clone all projects in a given Gitlab group or instance.
This project aims to provide a tool capable of replicating a Gitlab group's structure into a directory structure.
Locally cloned projects enable users to use familiar CLI tools such as grep
and sed
directly into the projects' tree structure.
To install giphon
, simply run:
pip install --user giphon
And if you wish to use giphon by simply calling giphon
, you can set-up an
alias in your .bashrc
(or other, if you have another shell):
echo 'alias giphon="/usr/bin/env python3 -m giphon"' >> ~/.bashrc
The giphon
tool allows for the following parameters:
- namespace (CLI:
--namespace
): The Gitlab namespace to be cloned./
defaults to the whole instance. - output (CLI:
--output
): The target path to clone the repositories to. - gitlab_token: (CLI:
--gitlab-token
, env:GITLAB_TOKEN
): The Personal Access Token authenticating the user. - gitlab_url: (CLI:
--gitlab-url
, env:GITLAB_URL
): The URL of the Gitlab instance to clone the repositories from. Defaults to"https://gitlab.com"
- fetch_repositories: (CLI:
--fetch-repositories
/--no-fetch-repositories
): Whether to fetch remotes on repositories that already exist. - save_ci_variables: (CLI:
--save-ci-variables
/--no-save-ci-variables
): Whether to download CI/CD variables to a .env directory. - clone_archived (CLI:
--clone-archived
/--no-clone-archived
): Whether to also clone archived repository. - clone_through_ssh: (CLI:
--clone-through-ssh
/--no-clone-through-ssh
): Whether to use the SSH protocol or the HTTPS protocol to clone the git repositories - gitlab_username (CLI:
--gitlab-username
, env:GITLAB_USERNAME
): The username to use, when cloning through HTTPS. - verbose: (CLI:
--verbose
/-v
): The level of verbosity
You can import the main function from giphon
as such:
from pathlib import Path
from giphon.siphon import siphon
siphon(
namespace=Path("my-namespace"),
output=Path("~/Projects"),
gitlab_token="",
gitlab_url="https://gitlab.com",
fetch_repositories=True,
save_ci_variables=False,
clone_archived=False,
verbose=False,
)
The function takes as inputs the same parameters from the CLI tool.
Logo is © from Midjourney