ti-enxame.com

GitHub Api download Link zip ou tarball

Havia um bom link aqui sobre como a string Zip/tarball é criada

Quando faço o download de um Zip no github, qual é a string hexadecimal no final do nome do arquivo?

Mas estou vendo a API do GitHub e fiquei curioso para saber se está faltando alguma coisa.

  1. Existe uma maneira de obter o link Zip/tarball através de uma chamada de API?

  2. Caso contrário, existe uma maneira de construir essa string sem usar o binário ou a biblioteca git? Ou seja, posso usar várias chamadas de API para extrair os dados de uma necessidade e montar o URL necessário?

Eu sei que a segunda pergunta é um pouco irracional para o stackoverflow e esse é um projeto um pouco divertido para mim, então eu preferiria a segunda pergunta se você apenas me cutucasse na direção certa, em vez de jogar um trecho de código . Ou apenas me disse se era possível.

55
mkly

Você pode wget sair do repositório GitHub para obter um arquivo tar ( archive ):

wget --no-check-certificate https://github.com/User/repo/archive/master.tar.gz

# better, if the certificate authorities are present:
wget https://github.com/User/repo/archive/master.tar.gz

você receberá um arquivo chamado 'master' no repositório 'repo' do usuário 'repo'.

O RL da API da V3 atualizado é:

https://api.github.com/repos/User/repo/:archive_format/:ref
#
# two possibilities for fomat:
https://api.github.com/repos/User/repo/tarball/master
https://api.github.com/repos/User/repo/zipball/master

# from github example:
$curl -L https://api.github.com/repos/octokit/octokit.rb/tarball > octokit.tar.gz

Você pode então tar xpvf master, obtendo o arquivo completo.
Ele criará um diretório seguindo a convenção de nomenclatura descrita em pergunta que você menciono .

Nenhum binário git é necessário para obter um arquivo do GitHub, graças ao seu serviço de download "Nodeload" .


ligemer proposto em uma edição o seguinte exemplo:

Editar 25/08/2016 - Exemplo de shell com Wget, variáveis ​​e descompactar: ​​

#!/bin/bash -ex

# arguments:
# token = $1
# organization = $2
# repo name = $3
# branch = $4

wget --header="Authorization: token ${1}" --header="Accept:application/vnd.github.v3.raw" -O - https://api.github.com/repos/${2}/${3}/tarball/${4} | tar xz

Ligar via:

$ scriptName.sh token my-organization site.com master

O comando acima fará o download e extrairá a pasta Github para o mesmo diretório que o script.


Diogo Quintela sugere nos comentários :

O exemplo a seguir permite baixar, extrair e cortar o diretório de nível superior

curl -L https://api.github.com/repos/octokit/octokit.rb/tarball | tar xz --strip=1 
96
VonC

A sintaxe é descrita nos documentos :

_GET /repos/:owner/:repo/:archive_format/:ref
_

O exemplo de URL a seguir apontará (via redirecionamento 302 ) para um arquivo Zip de master no repositório hadley/devtools :

https://api.github.com/repos/hadley/devtools/zipball/master

(A outra opção para _archive_format_ é tarball.)

Não faço ideia desde quando esta API está disponível.

23
krlmlr