C'è un modo per elencare tutti i repository esistenti usando git?


22

Per clonare un repository git è necessario avere il nome del repository. Quando si lavora con molti repository può essere difficile ricordare tutti i diversi nomi, quindi ora mi chiedo se sia possibile elencare tutti i repository esistenti sul server remoto usando un comando git.


Puoi pubblicare la tua risposta come risposta separata piuttosto che come modifica alla tua domanda?
Mateusz Konieczny il

Risposte:


8

Avresti bisogno dell'accesso Shell al computer che ospita il git-daemon e vedi i parametri usati per invocare git-daemon o usare il frontend Git Web (browser del repository) chiamato GitWeb .

Fai riferimento anche a questa domanda esistente

C'è un altro modo, ma ha bisogno dell'assistenza degli amministratori del server delle aziende. Git presenta un frontend web navigabile chiamato 'GitWeb' che può essere configurato per mostrare tutti i progetti serviti da git.

I dettagli sono spiegati nel README di GitWeb - la chiave di configurazione di interesse si chiama "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.

Forse potresti parlare con i tuoi amministratori - gitweb può essere un grande profitto per tutti gli sviluppatori.

Per quanto posso dire, questo deve essere fatto sulla macchina che esegue git-daemon. È necessario controllare gli argomenti in cui è stato invocato git-daemon o eventualmente controllare /etc/inetd.conf


0

Dato che avevo accesso shell alla macchina remota, ho finito per scrivere un piccolo fabricscript che poteva essere eseguito dal terminale per elencare tutti i repository remoti:

#!/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')

Ora posso elencare tutti i repository remoti emettendo il seguente comando dal terminale:

fab lr

Si noti che questo script presuppone che si trovino i repository git /var/git. Mentre questo è comunemente il caso, non è sempre vero.
Dave Sherohman,

0

Ciò dipende fortemente da come si accede a questi repository, quindi non c'è davvero una semplice risposta adatta a tutti:

  • Se i repository sono serviti da git-daemone / o gitweb, è possibile guardare la configurazione per vedere dove mantiene i repository ed elencare i contenuti di quella directory.
  • Se si accede ai repository tramite ssh, è possibile trovarli ovunque nel filesystem. Dovresti essere in grado di trovarli cercando tutte le directory sul sistema contenenti un file chiamato HEAD(ad es. locate HEAD | grep \/HEAD$), Ma questo può produrre falsi positivi e mostrerà anche tutti i repository che sono solo directory di lavoro locali e non sono condivisi o sono stati clonati da un'altra fonte.
  • Se i repository sono gestiti da gitlab , non sono affatto nel filesystem, quindi è necessario utilizzare l'interfaccia web di gitlab per elencarli. Si noti che alcuni repository potrebbero essere nascosti da questo elenco se non si dispone dell'autorizzazione per accedervi.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.