✨ 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 giphonAnd 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"' >> ~/.bashrcThe 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

