Git kullanan tüm depoları listelemenin bir yolu var mı?


22

Git deposunu klonlamak için, deponun adı olmalı. Birçok depo ile çalışırken, tüm farklı isimleri hatırlamak zor olabilir, bu yüzden şimdi bazı Git komutunu kullanarak uzak sunucudaki tüm depoları listelemenin mümkün olup olmadığını merak ediyorum.


Cevabınızı, sorunuzu düzenlemek yerine ayrı bir cevap olarak gönderebilir misiniz?
Mateusz Konieczny

Yanıtlar:


8

Git-daemon'u barındıran makineye Shell erişimine ihtiyacınız var ve git-daemon'u çağırmak için kullanılan paraşütleri görmek ya da GitWeb adlı Git Web önyüzünü (Depo tarayıcı) kullanmak için kullandığınız paramları görün .

Ayrıca bu mevcut soruyu bakın

Başka bir yol var, ancak şirket yöneticilerinin size yardım etmesi gerekiyor. Git, Git tarafından sunulan tüm projeleri gösterecek şekilde yapılandırılabilen ve 'GitWeb' adı verilen göz atılabilir bir web arayüzüne sahiptir.

Ayrıntılar GitWeb README'de açıklanmıştır - ilgilenilen config anahtarı "GITWEB_PROJECTROOT" olarak adlandırılmıştır:

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.

Belki de yöneticilerinizle konuşabilirsiniz - gitweb tüm geliştiriciler için büyük bir kazanç olabilir.

Söyleyebileceğim kadarıyla, git-daemon çalıştıran makinede yapılması gerekiyor. Git-daemon'un çağrıldığı argümanları kontrol etmeniz veya muhtemelen /etc/inetd.conf dosyasını kontrol etmeniz gerekir.


0

Uzak makineye kabuk erişimim olduğundan, fabrictüm uzak depoları listelemek için terminalden çalıştırılabilecek küçük bir senaryo yazdım :

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

Artık tüm uzak depoları terminalden aşağıdaki komutu vererek listeleyebiliyorum:

fab lr

Bu betiğin git depolarının içinde bulunduğunu varsaydığını unutmayın /var/git. Bu genellikle böyle olsa da, her zaman doğru değildir.
Dave Sherohman

0

Bu, büyük ölçüde bu havuzlara nasıl erişildiğine bağlıdır, bu yüzden gerçekten basit bir tek beden uyan herkese cevap:

  • Depolar git-daemonve / veya tarafından sunuluyorsa, depolarını gitwebnerede tuttuğunu görmek ve bu dizinin içeriğini listelemek için config dosyasına bakabilirsiniz.
  • Depolara ssh ile erişilirse, dosya sisteminde herhangi bir yerde bulunabilirler. Onları HEAD(örneğin locate HEAD | grep \/HEAD$) adlı bir dosya içeren sistemdeki tüm dizinleri arayarak bulabilmelisiniz , ancak bu yanlış pozitifler üretebilir ve aynı zamanda yalnızca yerel çalışma dizinleri olan ve paylaşılmayan veya klonlanan tüm repoları gösterecektir. başka bir kaynak.
  • Depolar gitlab tarafından yönetiliyorsa , hiç dosya sisteminde bulunmazlar, bu yüzden listelemek için gitlab web arayüzünü kullanmanız gerekir. Erişim izniniz yoksa, bazı depoların bu listeden gizlenebileceğini unutmayın.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.