Saltar al contenido

¿Cómo clonar todos los proyectos de un grupo a la vez en GitLab?

Iris, miembro de este equipo, nos ha hecho el favor de crear este artículo ya que controla a la perfección el tema.

Solución:

No realmente, a menos que:

  • tiene un proyecto 21 que hace referencia a los otros 20 como submódulos.
    (en cuyo caso un clon seguido de un git submodule update --init sería suficiente para clonar y verificar los 20 proyectos)

  • o de alguna manera enumera los proyectos a los que tiene acceso (API de GitLab para proyectos) y repite ese resultado para clonar cada uno (lo que significa que se puede programar y luego ejecutar como comando “uno”)


Desde 2015, Jay Gabez menciona en los comentarios (agosto de 2019) la herramienta gabrie30/ghorg

ghorg le permite clonar rápidamente todos los repositorios de una organización o de un usuario en un solo directorio.

Uso:

$ ghorg clone someorg
$ ghorg clone someuser --clone-type=user --protocol=ssh --branch=develop
$ ghorg clone gitlab-org --scm=gitlab --namespace=gitlab-org/security-products
$ ghorg clone --help

También (2020): https://github.com/ezbz/gitlabber

usage: gitlabber [-h] [-t token] [-u url] [--debug] [-p]
                [--print-format json,yaml,tree] [-i csv] [-x csv]
                [--version]
                [dest]

Gitlabber - clones or pulls entire groups/projects tree from gitlab

Aquí hay un ejemplo en Python 3:

from urllib.request import urlopen
import json
import subprocess, shlex

allProjects     = urlopen("http://[yourServer:port]/api/v4/projects?private_token=[yourPrivateTokenFromUserProfile]&per_page=100000")
allProjectsDict = json.loads(allProjects.read().decode())
for thisProject in allProjectsDict: 
    try:
        thisProjectURL  = thisProject['ssh_url_to_repo']
        command     = shlex.split('git clone %s' % thisProjectURL)
        resultCode  = subprocess.Popen(command)

    except Exception as e:
        print("Error on %s: %s" % (thisProjectURL, e.strerror))

Un trazador de líneas con rizo, jq, tr

for repo in $(curl -s --header "PRIVATE-TOKEN: your_private_token" https:///api/v4/groups/ | jq ".projects[].ssh_url_to_repo" | tr -d '"'); do git clone $repo; done;

Para Gitlab.com use https://gitlab.com/api/v4/groups/

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4.5)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *