Чи є список усіх існуючих сховищ за допомогою git?


22

Для клонування git-сховища необхідно мати ім’я сховища. Під час роботи з багатьма сховищами важко запам'ятати всі різні імена, тому зараз мені цікаво, чи можна перерахувати всі існуючі сховища на віддаленому сервері за допомогою якоїсь команди git.


Чи можете ви розмістити свою відповідь як окрему відповідь, а не як редагування свого питання?
Матеуш Коньєчний

Відповіді:


8

Вам або потрібен доступ Shell до машини, на якій розміщується git-демон, і побачити параметри, які використовуються для виклику git-daemon, або використовувати фронтенд Git Web (браузер репозиторію) під назвою 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-демон. Вам або потрібно перевірити аргументи, де викликався 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

Зауважте, що цей сценарій передбачає, що сховища git розташовані в /var/git. Хоча це зазвичай так, це не завжди так.
Дейв Шерохман

0

Це сильно залежить від способу доступу до цих сховищ, тому насправді не існує простої відповіді одного розміру:

  • Якщо репост обслуговується git-daemonта / або gitweb, ви можете подивитися на конфігурацію, щоб побачити, де він зберігає свої репозиції, і перерахувати вміст цього каталогу.
  • Якщо доступ до репостів здійснюється через ssh, вони можуть бути розташовані в будь-якому місці файлової системи. Ви можете знайти їх, шукаючи всі каталоги в системі, що містять файл з назвою HEAD(наприклад locate HEAD | grep \/HEAD$), але це може призвести до помилкових позитивів, і він також покаже будь-які репости, які є виключно локальними робочими каталогами і не поділяються або були клоновані з інше джерело.
  • Якщо репозиціями керує gitlab , вони взагалі не знаходяться у файловій системі, тому для їх переліку потрібно використовувати веб-інтерфейс gitlab. Зауважте, що деякі репости можуть бути приховані від цього списку, якщо у вас немає дозволу на доступ до них.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.