Lien de téléchargement de L'Api Github 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 zip à partir de github, Quelle est la chaîne de caractères hexadécimaux à la fin du nom du fichier represent?

mais je regarde le Github APIv3 et je me demandais si je ratais quelque chose.

  1. y a-t-il un moyen d'obtenir le lien zip/tarball via un appel API?

  2. si non, y a-t-il un moyen de construire cette chaîne sans utiliser le binaire git ou la bibliothèque? Sens, puis-je utiliser divers appels API pour extraire des données th un besoin et 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 sur la deuxième question si vous avez juste un peu poussé dans la bonne direction plutôt que de jeter un code snippet. Ou m'a juste dit si c'était possible.

50
demandé sur Community 2011-12-04 21:18:55

2 réponses

Vous pouvez wget votre moyen de sortir de l'dépôt 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 obtiendra un fichier nommé 'master' de l'Utilisateur 's repo 'repo'.

le mise à jour de l'url de L'API V3 est:

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 , obtenir l'archive complète.

Il va créer un répertoire suivant le nom convention 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 un edit l'exemple suivant:

Edit 2016-08-25 - Exemple D'Interpréteur De Commandes Avec Wget, Variables, et Untar:

#!/bin/bash -ex

# arguments:
# token = 
# organization = 
# repo name = 
# branch = 

wget --header="Authorization: token " --header="Accept:application/vnd.github.v3.raw" -O - https://api.github.com/repos///tarball/ | tar xz

Appel à l'aide:

$ 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 le téléchargement, extraire et couper le répertoire de haut niveau

curl -L https://api.github.com/repos/octokit/octokit.rb/tarball | tar xz --strip=1 
85
répondu VonC 2017-05-23 10:31:37

la syntaxe est décrite dans les docs :

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

L'URL d'exemple suivant pointera (via un 302 redirect ) vers une archive zip De master dans le hadley / devtools repo:

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.

21
répondu krlmlr 2014-05-07 22:53:32