Skip to main content

Copy locally a Gitlab group or instance

Project description

Logo PyPI - Python Version Black GitHub Workflow Status Hatch project PyPI PyPI - License GitHub Repo stars


✨ 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.

Motivation

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.

Demo

Usage GIF

Installation

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

Parameters

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

Running programmatically

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

giphon-0.1.8.tar.gz (15.6 kB view hashes)

Uploaded Source

Built Distribution

giphon-0.1.8-py3-none-any.whl (12.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page