Apakah ada cara untuk membuat daftar semua repositori yang ada menggunakan git?

22

Untuk mengkloning repositori git kita harus memiliki nama repositori. Ketika bekerja dengan banyak repositori, mungkin sulit untuk mengingat semua nama yang berbeda, jadi sekarang saya bertanya-tanya apakah ada kemungkinan untuk membuat daftar semua repositori yang ada di server jauh menggunakan beberapa perintah git.

Cyclonecode
sumber
Dapatkah Anda memposting jawaban Anda sebagai jawaban terpisah dan bukan sebagai edit untuk pertanyaan Anda?
Mateusz Konieczny

Jawaban:

8

Anda juga memerlukan akses Shell ke mesin yang menjadi tuan rumah git-daemon dan melihat params yang digunakan untuk memanggil git-daemon atau menggunakan antarmuka web Git (browser Repositori) yang disebut GitWeb .

Lihat juga pertanyaan yang ada ini

Ada satu cara lain tetapi perlu bantuan admin server perusahaan Anda. Git menampilkan antarmuka web yang dapat dijelajahi yang disebut 'GitWeb' yang dapat dikonfigurasi untuk menampilkan semua proyek yang dilayani oleh git.

Detail dijelaskan di GitWeb README - kunci konfigurasi minat disebut "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.

Mungkin Anda bisa berbicara dengan Anda admin - gitweb bisa menjadi keuntungan besar bagi semua pengembang.

Sejauh yang saya tahu, ini perlu dilakukan pada mesin yang menjalankan git-daemon. Anda juga perlu memeriksa argumen di mana git-daemon dipanggil, atau mungkin memeriksa /etc/inetd.conf

Saya tidak tahu
sumber
0

Karena saya memiliki akses shell ke mesin jarak jauh, saya akhirnya menulis fabricskrip kecil yang dapat dijalankan dari terminal untuk mendaftar semua repositori jarak jauh:

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

Sekarang saya dapat membuat daftar semua repositori jarak jauh dengan mengeluarkan perintah berikut dari terminal:

fab lr
Cyclonecode
sumber
Perhatikan bahwa skrip ini mengasumsikan repositori git berada di /var/git. Meskipun hal ini biasa terjadi, itu tidak selalu benar.
Dave Sherohman
0

Ini sangat tergantung pada bagaimana repositori-repositori itu diakses, jadi sebenarnya tidak ada jawaban sederhana untuk semua ukuran:

  • Jika repo dilayani oleh git-daemondan / atau gitweb, Anda dapat melihat konfigurasi untuk melihat di mana ia menyimpan repo dan daftar isi direktori itu.
  • Jika repo diakses melalui ssh, maka mereka dapat ditemukan di mana saja di sistem file. Anda harus dapat menemukannya dengan mencari semua direktori pada sistem yang berisi file bernama HEAD(misalnya locate HEAD | grep \/HEAD$), tetapi ini dapat menghasilkan positif palsu dan juga akan menunjukkan repo yang hanya merupakan direktori kerja lokal dan tidak dibagikan atau dikloning dari sumber lain.
  • Jika repo dikelola oleh gitlab , mereka tidak ada di sistem file sama sekali, jadi Anda perlu menggunakan antarmuka web gitlab untuk membuat daftar. Perhatikan bahwa beberapa repo mungkin disembunyikan dari daftar ini jika Anda tidak memiliki izin untuk mengaksesnya.
Dave Sherohman
sumber