Czy istnieje sposób na wyświetlenie listy wszystkich istniejących repozytoriów za pomocą git?

22

Aby sklonować repozytorium git, trzeba mieć nazwę repozytorium. Podczas pracy z wieloma repozytoriami może być trudno zapamiętać wszystkie różne nazwy, więc teraz zastanawiam się, czy można wyświetlić listę wszystkich istniejących repozytoriów na zdalnym serwerze za pomocą polecenia git.

Kod cyklonowy
źródło
Czy możesz opublikować swoją odpowiedź jako osobną odpowiedź, a nie jako edycję swojego pytania?
Mateusz Konieczny

Odpowiedzi:

8

Będziesz albo potrzebował dostępu Shell do komputera, na którym znajduje się git-demon i zobaczysz parametry użyte do wywołania git-demona lub skorzystaj z interfejsu Git Web (przeglądarki repozytorium) o nazwie GitWeb .

Odwołaj się także do istniejącego pytania

Jest jeszcze jeden sposób, ale potrzebuje pomocy administratorów serwerów twojej firmy. Git posiada przeglądalną nakładkę internetową o nazwie „GitWeb”, którą można skonfigurować tak, aby wyświetlała wszystkie projekty obsługiwane przez git.

Szczegóły wyjaśniono w GADWeb README - interesujący klucz konfiguracji nazywa się „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.

Może porozmawiasz z administratorami - gitweb może być świetnym zyskiem dla wszystkich programistów.

O ile mi wiadomo, należy to zrobić na komputerze, na którym działa git-daemon. Musisz albo sprawdzić argumenty wywołane przez git-daemon, albo ewentualnie /etc/inetd.conf

Nieznany
źródło
0

Ponieważ miałem dostęp do powłoki do zdalnego komputera, napisałem mały fabricskrypt, który można uruchomić z terminala, aby wyświetlić listę wszystkich zdalnych repozytoriów:

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

Teraz mogę wyświetlić listę wszystkich zdalnych repozytoriów, wydając następujące polecenie z terminala:

fab lr
Kod cyklonowy
źródło
Zauważ, że ten skrypt zakłada, że ​​repozytoria git się znajdują /var/git. Chociaż często tak jest, nie zawsze jest to prawda.
Dave Sherohman,
0

Jest to w dużej mierze zależne od sposobu dostępu do tych repozytoriów, więc tak naprawdę nie ma prostej, uniwersalnej odpowiedzi:

  • Jeśli repozytoria są obsługiwane przez git-daemoni / lub gitweb, możesz spojrzeć na konfigurację, aby zobaczyć, gdzie przechowuje repozytorium i wyświetlić zawartość tego katalogu.
  • Jeśli repozytoria są dostępne przez ssh, można je zlokalizować w dowolnym miejscu w systemie plików. Powinieneś być w stanie je znaleźć, szukając wszystkich katalogów w systemie zawierających plik o nazwie HEAD(np. locate HEAD | grep \/HEAD$), Ale może to dawać fałszywe alarmy, a także wyświetla repozytoria, które są wyłącznie lokalnymi katalogami roboczymi i nie są udostępniane lub zostały sklonowane z inne źródło.
  • Jeśli repozytoria są zarządzane przez gitlab , w ogóle nie znajdują się w systemie plików, więc musisz użyć interfejsu sieciowego gitlab, aby je wyświetlić. Pamiętaj, że niektóre repozytoria mogą być ukryte na tej liście, jeśli nie masz uprawnień dostępu do nich.
Dave Sherohman
źródło