Для клонування git-сховища необхідно мати ім’я сховища. Під час роботи з багатьма сховищами важко запам'ятати всі різні імена, тому зараз мені цікаво, чи можна перерахувати всі існуючі сховища на віддаленому сервері за допомогою якоїсь команди git.
Для клонування git-сховища необхідно мати ім’я сховища. Під час роботи з багатьма сховищами важко запам'ятати всі різні імена, тому зараз мені цікаво, чи можна перерахувати всі існуючі сховища на віддаленому сервері за допомогою якоїсь команди git.
Відповіді:
Вам або потрібен доступ 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
Оскільки я мав доступ до оболонки на віддаленій машині, я закінчив писати невеликий 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
/var/git
. Хоча це зазвичай так, це не завжди так.
Це сильно залежить від способу доступу до цих сховищ, тому насправді не існує простої відповіді одного розміру:
git-daemon
та / або gitweb
, ви можете подивитися на конфігурацію, щоб побачити, де він зберігає свої репозиції, і перерахувати вміст цього каталогу.HEAD
(наприклад locate HEAD | grep \/HEAD$
), але це може призвести до помилкових позитивів, і він також покаже будь-які репости, які є виключно локальними робочими каталогами і не поділяються або були клоновані з інше джерело.