GitHub Api télécharger le lien zip ou tarball

Il y avait un bon lien ici sur la façon dont la chaîne zip / tarball est créée

Lorsque je télécharge un fichier zip depuis github, quelle est la chaîne hexadécimale à la fin du nom de fichier?

Mais je regarde le GitHub APIv3 et j’étais curieux de savoir s’il me manquait quelque chose.

  1. Existe-t-il un moyen d’obtenir le lien zip / tarball via un appel API?

  2. Sinon, existe-t-il un moyen de créer cette chaîne sans utiliser le binary ou la bibliothèque git? Ce qui veut dire, puis-je utiliser différents appels d’API pour extraire les données nécessaires et les assembler en URL dont j’ai besoin?

Je sais que la deuxième question est un peu déraisonnable pour stackoverflow et c’est un projet plutôt amusant pour moi, alors je préférerais que vous me poussiez dans la bonne direction plutôt que de jeter un extrait de code . Ou juste me dire si c’était possible.

Vous pouvez vous sortir du repo GitHub pour obtenir un fichier tar ( archive ):

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

vous obtiendrez un fichier nommé “master” à partir du repo “repo” de l’utilisateur “User”.

L’ URL de l’API V3 mise à jour est la suivante:

 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 

Vous pouvez ensuite tar xpvf master , obtenir l’archive complète.
Il créera un répertoire suivant la convention de dénomination décrite dans la question que vous avez mentionnée .

Aucun fichier binary git n’est nécessaire pour obtenir une archive à partir de GitHub, grâce au service de téléchargement “Nodeload” .


ligemer proposé dans un assembly l’exemple suivant:

Modifier 2016-08-25 – Exemple de shell avec Wget, Variables et 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 

Appelez via:

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

La commande ci-dessus télécharge et extrait le dossier Github dans le même répertoire que le script.


Diogo Quintela suggère dans les commentaires :

L’exemple suivant permet de télécharger, d’extraire et de couper le répertoire de niveau supérieur

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

La syntaxe est décrite dans les documents :

 GET /repos/:owner/:repo/:archive_format/:ref 

L’exemple d’URL suivant pointera (via une redirection 302 ) vers une archive zip de master dans le repo hadley / devtools :

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

(L’autre option pour archive_format est tarball .)

Je n’ai aucune idée depuis quand cette API est disponible.