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.
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.
Yanıtlar:
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.
Uzak makineye kabuk erişimim olduğundan, fabric
tü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
/var/git
. Bu genellikle böyle olsa da, her zaman doğru değildir.
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:
git-daemon
ve / veya tarafından sunuluyorsa, depolarını gitweb
nerede tuttuğunu görmek ve bu dizinin içeriğini listelemek için config dosyasına bakabilirsiniz.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.