Existe uma maneira de listar todos os repositórios existentes usando o git?


22

Para clonar um repositório git, é necessário ter o nome do repositório. Ao trabalhar com muitos repositórios, pode ser difícil lembrar todos os nomes diferentes, então agora estou pensando se é possível listar todos os repositórios existentes no servidor remoto usando algum comando git.


Você pode postar sua resposta como uma resposta separada e não como uma edição da sua pergunta?
Mateusz Konieczny

Respostas:


8

Você precisa do acesso do Shell à máquina que hospeda o git-daemon e vê os parâmetros usados ​​para invocar o git-daemon ou usa o front-end da Web Git (navegador de repositório) chamado GitWeb .

Consulte também esta pergunta existente

Existe uma outra maneira, mas ela precisa de assistência dos administradores de servidor de suas empresas. O Git apresenta um front-end da web navegável chamado 'GitWeb', que pode ser configurado para mostrar todos os projetos atendidos pelo git.

Os detalhes são explicados no Leiame do GitWeb - a chave de configuração de interesse é chamada "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.

Talvez você possa conversar com seus administradores - o gitweb pode ser um grande lucro para todos os desenvolvedores.

Até onde eu sei, isso precisa ser feito na máquina que está executando o git-daemon. Você precisa verificar os argumentos em que o git-daemon foi chamado ou, possivelmente, verificar /etc/inetd.conf


0

Como eu tinha acesso ao shell da máquina remota, acabei escrevendo um pequeno fabricscript que poderia ser executado no terminal para listar todos os repositórios remotos:

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

Agora posso listar todos os repositórios remotos emitindo o seguinte comando no terminal:

fab lr

Observe que este script assume que os repositórios git estão localizados /var/git. Embora esse seja geralmente o caso, nem sempre é verdade.
Dave Sherohman

0

Isso depende muito de como esses repositórios são acessados; portanto, não há realmente uma resposta simples:

  • Se os repositórios estão sendo atendidos por git-daemone / ou gitweb, você pode ver a configuração para ver onde ele mantém seus repositórios e listar o conteúdo desse diretório.
  • Se os repositórios forem acessados ​​via ssh, eles poderão ser localizados em qualquer lugar do sistema de arquivos. Você deve encontrá-los procurando todos os diretórios no sistema que contenham um arquivo chamado HEAD(por exemplo locate HEAD | grep \/HEAD$), mas isso pode produzir falsos positivos e também exibirá quaisquer repositórios que são apenas diretórios de trabalho locais e não são compartilhados ou clonados. outra fonte.
  • Se os repositórios são gerenciados pelo gitlab , eles não estão no sistema de arquivos, então você precisa usar a interface da web do gitlab para listá-los. Observe que alguns repositórios podem estar ocultos nessa lista se você não tiver permissão para acessá-los.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.