¿Hay alguna forma de enumerar todos los repositorios existentes usando git?

22

Para clonar un repositorio git, uno debe tener el nombre del repositorio. Cuando se trabaja con muchos repositorios, puede ser difícil recordar todos los nombres diferentes, por lo que ahora me pregunto si es posible enumerar todos los repositorios existentes en el servidor remoto utilizando algún comando git.

Código ciclónico
fuente
¿Puedes publicar tu respuesta como una respuesta separada en lugar de una edición a tu pregunta?
Mateusz Konieczny

Respuestas:

8

Necesitaría acceso de Shell a la máquina que aloja el git-daemon y ver los parámetros utilizados para invocar a git-daemon o usar la interfaz web de Git (navegador de repositorios) llamada GitWeb .

Consulte también esta pregunta existente

Hay otra manera, pero necesita ayuda de los administradores de servidores de sus empresas. Git presenta una interfaz web navegable llamada 'GitWeb' que se puede configurar para mostrar todos los proyectos atendidos por git.

Los detalles se explican en el archivo README de GitWeb: la clave de configuración de interés se denomina "GITWEB_PROJECTROOT":

GITWEB_PROJECTROOT The root directory for all projects shown by gitweb. Must be set correctly for gitweb to find repositories to display. See also "Gitweb repositories" in the INSTALL file for gitweb.

Tal vez podría hablar con sus administradores: gitweb puede ser una gran ganancia para todos los desarrolladores.

Por lo que puedo decir, esto debe hacerse en la máquina que ejecuta git-daemon. Debe verificar los argumentos donde se invocó git-daemon, o posiblemente verificar /etc/inetd.conf

I Desconocido
fuente
0

Como tenía acceso de shell a la máquina remota, terminé escribiendo un pequeño fabricscript que se podía ejecutar desde la terminal para enumerar todos los repositorios remotos:

#!/bin/python

from fabric.api import run, env
from fabric.colors import green 

env.hosts = ['<hostname>'];
env.user = '<user>';
env.password = '<password>';

def lr():
  "Lists all remote repositories"
  print(green("listing remote repos"))
  run('cd /var/git; ls -al')

Ahora puedo enumerar todos los repositorios remotos emitiendo el siguiente comando desde la terminal:

fab lr
Código ciclónico
fuente
Tenga en cuenta que este script asume que los repositorios git se encuentran en /var/git. Si bien este es comúnmente el caso, no siempre es cierto.
Dave Sherohman
0

Esto depende en gran medida de cómo se accede a esos repositorios, por lo que no hay realmente una respuesta única para todos:

  • Si los repositorios están siendo atendidos por git-daemony / o gitweb, puede mirar la configuración para ver dónde guarda sus repositorios y enumerar los contenidos de ese directorio.
  • Si se accede a los repositorios a través de ssh, pueden ubicarse en cualquier parte del sistema de archivos. Debería poder encontrarlos buscando todos los directorios en el sistema que contengan un archivo llamado HEAD(p locate HEAD | grep \/HEAD$. Ej. ), Pero esto puede producir falsos positivos y también mostrará cualquier repos que sean únicamente directorios de trabajo locales y que no se hayan compartido o se hayan clonado otra fuente.
  • Si los repositorios son administrados por gitlab , no están en el sistema de archivos, por lo que debe usar la interfaz web de gitlab para enumerarlos. Tenga en cuenta que algunos repositorios pueden estar ocultos de esta lista si no tiene permiso para acceder a ellos.
Dave Sherohman
fuente