Il y avait un bon lien ici sur la façon dont la chaîne Zip/tarball est créée
Mais je regarde l'APIv3 GitHub et j'étais curieux de savoir si je manque quelque chose.
Existe-t-il un moyen d'obtenir le lien Zip/tarball via un appel API?
Sinon, existe-t-il un moyen de créer cette chaîne sans utiliser le binaire ou la bibliothèque git? Autrement dit, puis-je utiliser divers appels d'API pour extraire les données nécessaires et les assembler à l'URL dont j'ai besoin?
Je sais que la deuxième question est un peu déraisonnable pour stackoverflow et c'est un peu un projet amusant pour moi, donc je préférerais la deuxième question si vous me donniez un petit coup de coude dans la bonne direction plutôt que de jeter un extrait de code . Ou juste m'a dit si c'était possible.
Vous pouvez wget
sortir du référentiel GitHub pour obtenir un fichier 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
vous obtiendrez un fichier nommé "maître" de l'utilisateur "Repo utilisateur" "repo".
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 alors tar xpvf master
, obtention de 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 binaire git n'est nécessaire pour obtenir une archive de GitHub, grâce à leur service de téléchargement "Nodeload" .
ligemer
proposé dans une édition l'exemple suivant:
Edit 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échargera et extraira 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 --strip=1
La syntaxe est décrite dans la documentation :
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.