O comando que você deseja git ls-remote
permite obter algumas informações sobre repositórios remotos, mas você não pode mostrar o histórico ou listar diretórios ou qualquer coisa desse nível: essencialmente, ele só permite ver os objetos remotos em um nível muito alto (você pode ver o HEADs e tags atuais, por exemplo).
A única maneira real de fazer o que você quer (se bem entendi) seria usar ssh para executar um comando remoto e retornar os resultados, por exemplo:
ssh me@otherhost "cd repo && git log -n 10"
O que você quer seria uma funcionalidade adorável se eles pudessem adicioná-la, mas pelo que li não é muito fácil, uma vez que obter o histórico etc. precisa de muitas informações para ser local para o git, e nesse ponto você pode muito bem ter feito uma busca do git .
git clone
, entretanto, é buscar apenas uma única revisão passando--depth 1
. Isso evita a obtenção de quantidades potencialmente grandes de histórico e seria suficiente para responder a perguntas como "quais arquivos estão presentes na revisãoabcdef1234567890
?"Git é um sistema de controle de versão distribuído , enquanto o Subversion é um sistema de controle de versão centralizado (cliente-servidor). Eles funcionam de forma diferente; acostume-se com isso. Por favor, leia minha resposta explicando as consequências dessa diferença para o equivalente git da
svn status -u
questão no StackOverflow.Me repetindo um pouco: em um sistema de controle de versão centralizado (como CVS ou Subversion) quase todos os comandos são processados no servidor e envolvem rede. Poucos comandos são executados localmente. Note que para ter um bom desempenho de "svn status" e "svn diff" o Subversion armazena 'cópia original' da versão em check-out no cliente, para não ter que envolver transferência de rede para essas operações comuns (isto significa que o Subversion checkout = 2 x tamanho do diretório de trabalho, pelo menos).
Em um sistema de controle de versão distribuído (como Git, Mercurial ou Bazaar), onde você tem uma cópia local (clone) de um repositório inteiro, quase todos os comandos são executados no cliente . Muito poucos comandos requerem conexão de rede a outro repositório (para o servidor).
O número de comandos que você pode executar no servidor é limitado.
" git archive --remote = <URL> HEAD".
" git clone --depth = 1 <URL>".
fonte
Dê uma olhada em http://git-scm.com/book/en/Git-Internals-Transfer-Protocols para obter informações sobre como fazer isso em alguns protocolos de transporte. Observe que isso não funcionará para git padrão sobre SSH.
Para git sobre SSH, um git do lado do servidor atualizado deve permitir que você faça git-archive diretamente do remoto, que você poderia, por exemplo, canalizar para "tar t" para obter uma lista de todos os arquivos em um determinado commit.
fonte
GitHub é compatível com svn, então você pode usar svn ls
BitBucket suporta arquivo git para que você possa baixar o arquivo tar e listar arquivos arquivados. Não é muito eficiente, mas funciona:
fonte
Não exatamente, mas uma maneira de contornar.
Use a API GitHub Developer
Abrindo isso você terá os commits recentes.
https://api.github.com/repos/learningequality/ka-lite/commits
Você pode obter os detalhes específicos do commit anexando o hash do commit no final do url acima.
Todos os arquivos (você precisa do sha para a árvore principal)
https://api.github.com/repos/learningequality/ka-lite/git/trees/7b698a988683b161bdcd48a949b01e2b336b4c01
Espero que isso possa ajudar.
fonte
Isso provavelmente é considerado sujo por alguns, mas uma solução muito prática no caso de repositórios github é apenas fazer um script, por exemplo, "git-ls":
Torná-lo executável e acessível é claro:
chmod a+x git-ls; sudo cp git-ls /usr/local/bin
. Agora, basta executá-lo como desejar:Saiba também que existe um
git instaweb
utilitário para seus arquivos locais. Ter a capacidade de mostrar arquivos e ter um servidor como esse, na minha opinião, não destrói nenhuma das características descentralizadas inerentes do git.fonte
curl -s https://github.com/Itseez/opencv | grep js-directory-link | sed 's|.* title="\(.*\)".*|\1|'
se você conhece o branch remoto que deseja verificar, pode descobrir o mais recente via:
fonte