Gibt es eine Möglichkeit, alle vorhandenen Repositorys mit git aufzulisten?

22

Um ein Git-Repository zu klonen, muss man den Namen des Repositorys haben. Bei der Arbeit mit vielen Repositorys kann es schwierig sein, sich die verschiedenen Namen zu merken. Daher frage ich mich, ob es möglich ist, alle vorhandenen Repositorys auf dem Remote-Server mit einem git-Befehl aufzulisten.

Cyclonecode
quelle
Können Sie Ihre Antwort als separate Antwort veröffentlichen, anstatt Ihre Frage zu bearbeiten?
Mateusz Konieczny

Antworten:

8

Sie benötigen entweder Shell-Zugriff auf den Rechner, auf dem sich der Git-Daemon befindet, und sehen sich die Parameter an, mit denen der Git-Daemon aufgerufen wird, oder verwenden das Git-Web-Frontend (Repository-Browser) mit dem Namen GitWeb .

Verweisen Sie auch auf diese bestehende Frage

Es gibt einen anderen Weg, aber er benötigt Unterstützung von Serveradministratoren Ihres Unternehmens. Git verfügt über ein Browser-fähiges Web-Frontend namens 'GitWeb', das so konfiguriert werden kann, dass alle von git bereitgestellten Projekte angezeigt werden.

Details werden in der GitWeb README erklärt - der Konfigurationsschlüssel von Interesse heißt "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.

Vielleicht könnten Sie mit Ihren Administratoren sprechen - Gitweb kann für alle Entwickler ein großer Gewinn sein.

Soweit ich das beurteilen kann, muss dies auf dem Computer erfolgen, auf dem git-daemon ausgeführt wird. Sie müssen entweder die Argumente überprüfen, bei denen git-daemon aufgerufen wurde, oder möglicherweise /etc/inetd.conf

IUnbekannt
quelle
0

Da ich Shell-Zugriff auf die Remote-Maschine hatte, schrieb ich ein kleines fabricSkript, das vom Terminal ausgeführt werden konnte, um alle Remote-Repositorys aufzulisten:

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

Ich kann jetzt alle Remote-Repositorys auflisten, indem ich den folgenden Befehl vom Terminal aus gebe:

fab lr
Cyclonecode
quelle
Beachten Sie, dass dieses Skript davon ausgeht, dass sich die Git-Repositorys in befinden /var/git. Dies ist zwar häufig der Fall, aber nicht immer der Fall.
Dave Sherohman
0

Dies hängt stark davon ab, wie auf diese Repositorys zugegriffen wird. Daher gibt es keine einfache Lösung, die alle Anforderungen erfüllt:

  • Wenn die Repos von git-daemonund / oder bereitgestellt werden gitweb, können Sie in der Konfiguration nachsehen, wo sich die Repos befinden, und den Inhalt dieses Verzeichnisses auflisten.
  • Wenn auf die Repos über ssh zugegriffen wird, können sie sich an einer beliebigen Stelle im Dateisystem befinden. Sie sollten in der Lage sein, sie zu finden, indem Sie nach allen Verzeichnissen auf dem System suchen, die eine Datei mit dem Namen HEAD(z. B. locate HEAD | grep \/HEAD$) enthalten. Dies kann jedoch zu Fehlalarmen führen. Außerdem werden alle Repos angezeigt, die ausschließlich lokale Arbeitsverzeichnisse sind und nicht freigegeben oder von denen geklont wurden eine andere Quelle.
  • Wenn die Repos von gitlab verwaltet werden , befinden sie sich überhaupt nicht im Dateisystem. Sie müssen daher die gitlab-Weboberfläche verwenden, um sie aufzulisten. Beachten Sie, dass einige Repos in dieser Liste möglicherweise ausgeblendet sind, wenn Sie keine Zugriffsberechtigung haben.
Dave Sherohman
quelle