Есть ли способ перечислить все существующие репозитории, используя git?

22

Чтобы клонировать git-репозиторий, необходимо иметь имя репозитория. При работе со многими репозиториями может быть трудно запомнить все разные имена, поэтому теперь я задаюсь вопросом, можно ли перечислить все существующие репозитории на удаленном сервере с помощью какой-либо команды git.

Cyclonecode
источник
Можете ли вы опубликовать свой ответ как отдельный ответ, а не как редактирование своего вопроса?
Матеуш Конечны

Ответы:

8

Вам потребуется либо доступ Shell к машине, на которой размещен git-демон, и просмотреть параметры, используемые для запуска git-daemon, либо использовать веб-интерфейс Git (обозреватель хранилища) под названием GitWeb .

Также передайте этот существующий вопрос

Есть еще один способ, но он нуждается в некоторой помощи администраторов серверов вашей компании. Git имеет веб-интерфейс с возможностью просмотра «GitWeb», который можно настроить для отображения всех проектов, обслуживаемых git.

Подробности объясняются в GitWeb README - интересующий ключ конфигурации называется «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.

Может быть, вы могли бы поговорить с вашими администраторами - gitweb может принести большую прибыль всем разработчикам.

Насколько я могу судить, это нужно делать на машине, на которой работает git-daemon. Вам нужно либо проверить аргументы, где был вызван git-daemon, либо, возможно, проверить /etc/inetd.conf

IUnknown
источник
0

Поскольку у меня был доступ к удаленной машине через оболочку, я написал небольшой fabricскрипт, который можно было запустить из терминала, чтобы вывести список всех удаленных репозиториев:

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

Теперь я могу перечислить все удаленные репозитории, выполнив следующую команду из терминала:

fab lr
Cyclonecode
источник
Обратите внимание, что в этом сценарии предполагается, что репозитории git находятся в /var/git. Хотя это обычно так, но это не всегда так.
Дейв Шерохман
0

Это в значительной степени зависит от того, как осуществляется доступ к этим репозиториям, поэтому на самом деле не существует простого универсального ответа:

  • Если репо обслуживаются git-daemonи / или gitwebвы можете посмотреть конфигурацию, где хранятся репо, и просмотреть содержимое этого каталога.
  • Если доступ к репозиториям осуществляется через ssh, они могут быть расположены в любом месте файловой системы. Вы сможете найти их, просмотрев все каталоги в системе, содержащие файл с именем HEAD(например locate HEAD | grep \/HEAD$), но это может привести к ложным срабатываниям, а также к любым репозиториям, которые являются исключительно локальными рабочими каталогами и не являются общими или были клонированы из другой источник.
  • Если репозитории управляются gitlab , они вообще не находятся в файловой системе, поэтому вам нужно использовать веб-интерфейс gitlab для их перечисления. Обратите внимание, что некоторые репозитории могут быть скрыты в этом списке, если у вас нет разрешения на доступ к ним.
Дейв Шерохман
источник