21

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

3 ответа3

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.

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
0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .