users - GitHub Api descarga el enlace zip o tarball
github pagination (2)
Hubo un buen enlace aquí sobre cómo se crea la secuencia zip / tarball
Pero estoy mirando el GitHub APIv3 y tenía curiosidad si me falta algo.
¿Hay alguna manera de obtener el enlace zip / tarball a través de una llamada API?
Si no, ¿hay alguna manera de construir esa cadena sin usar el git binary o la biblioteca? Es decir, ¿puedo usar varias llamadas a la API para extraer los datos necesarios y reunirlos con la URL que necesito?
Sé que la segunda pregunta es un poco irracional para Stackoverflow y este es un proyecto un tanto divertido para mí, por lo que preferiría la segunda pregunta si me empujaras en la dirección correcta en lugar de arrojar un fragmento de código . O simplemente me dijo si era posible.
La sintaxis se describe en los documentos :
GET /repos/:owner/:repo/:archive_format/:ref
El siguiente URL de ejemplo apuntará (a través de un redireccionamiento 302 ) a un archivo zip de master
en el hadley/devtools :
https://api.github.com/repos/hadley/devtools/zipball/master
(La otra opción para archive_format
es tarball
).
No tengo idea desde cuando esta API está disponible.
Puedes obtener la forma de salir del repositorio de GitHub para obtener un archivo 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
obtendrá un archivo llamado ''master'' del ''Repo'' repo ''del usuario'' del usuario ''.
La URL de la API V3 actualizada es:
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
A continuación, puede tar xpvf master
, obteniendo el archivo completo.
Creará un directorio siguiendo la convención de nomenclatura descrita en la pregunta que mencionaste .
No se necesita git binary para obtener un archivo de GitHub, gracias a su servicio de descarga "Nodeload" .
ligemer
propuso en una edición el siguiente ejemplo:
Edit 2016-08-25 - Ejemplo de Shell con Wget, Variables y Untar:
#!/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
Llamar por:
$ scriptName.sh token my-organization site.com master
El comando anterior descargará y extraerá la carpeta Github en el mismo directorio que el script.
Diogo Quintela sugiere en los comentarios :
El siguiente ejemplo permite descargar, extraer y cortar el directorio de nivel superior
curl -L https://api.github.com/repos/octokit/octokit.rb/tarball | tar xz --strip=1