2012-04-06 7 views
14

Ich brauche die Möglichkeit, unsere Anwendung auf bestimmte Tags herunterladen, aber ich bin nicht in der Lage, eine funktionierende Lösung dafür zu finden. Das Herunterladen von Tarballs auf Git-Tag scheint vielversprechend, aber ich kann es nicht mit Curl arbeiten. Ich habe das folgende versucht, aber alles, was ich zurückbekomme, ist die Quelle für die github 404-Seite.Probleme beim Herunterladen von Git Archiv Tarballs von Private Repo

curl -sL https://github.com/$ACCOUNT/$PRIVATE_REPO/tarball/0.2.0.257m?login=$MY_USER_NAME&token=$MY_TOKEN > 0.2.0.257m.tar 
+0

Haben Sie das gleiche URL-Schema in einem öffentlichen Repo versucht? – CharlesB

+0

Haben Sie versucht, wget? Oder verwenden Sie einfach git, um den Code von einem bestimmten Tag zu klonen? –

Antwort

26

Für öffentliche Repo, haben Sie this gist Auflistung einige Beispiele:

wget --no-check-certificate https://github.com/sebastianbergmann/phpunit/tarball/3.5.5 -O ~/tmp/cake_phpunit/phpunit.tgz 

Für einen privaten Repo, versuchen Sie Ihre Anmeldeinformationen in einer post-Richtlinie vorbei:

wget --quiet --post-data="login=${login}&token=${token}" --no-check-certificate https://github.com/$ACCOUNT/$PRIVATE_REPO/tarball/0.2.0.257m 

oder Verwendung curl-Befehl wie in SO-Frage "git equivalent to svn export or github workaround", auch ausführlich erläutert in:
"A curl tutorial using GitHub's API" .


Die OP Steven Jp Berichte der curl Arbeit Befehl gemacht zu haben:

Der letzte curl Befehl am Ende schauen, um etwas wie folgt aus:

curl -sL --user "${username}:${password}" https://github.com/$account/$repo/tarball/$tag_name > tarball.tar 

(in mehreren Linien zur besseren Lesbarkeit)

curl -sL --user "${username}:${password}" 
    https://github.com/$account/$repo/tarball/$tag_name 
    > tarball.tar 
+3

Ihr zweiter Link hat mir geholfen, die Dinge zum Laufen zu bringen. Der finale curl-Befehl sah schließlich so aus: curl -sL --user "$ {username}: $ {password}" https://github.com/$account/$repo/tarball/$tag_name> tarball.tar ' –

+0

@Steven_JP Ausgezeichnet. Ich habe Ihren Befehl in die Antwort für mehr Sichtbarkeit aufgenommen. – VonC

+0

Vielen Dank für Ihre Hilfe –

11

Nach einer access token Erstellen

können Sie wget verwenden:

wget --output-document=<version>.tar.gz \ 
    https://api.github.com/repos/<owner>/<repo>/tarball/<version>?access_token=<OAUTH-TOKEN> 

oder curl:

curl -L https://api.github.com/repos/<owner>/<repo>/tarball/<version>?access_token=<OAUTH-TOKEN> \ 
    > <version>.tar.gz 

Weitere Informationen finden Sie in GitHub's API reference for archive links finden.

0

Loggen Sie sich in Ihrem privaten Org auf Github.com, dann hier gehen Token zu erstellen: https://github.com/settings/applications#personal-access-tokens

Wenn in Ihrem privaten Org zu kräuseln versuchen, verwenden Sie die folgenden Schritte aus:

curl --header 'Authorization: token ADDACCESSTOKENHERE' \ 
--header 'Accept: application/vnd.github.v3.raw' \ 
--remote-name \ 
--location https://api.github.com/repos/ORG/PROJECT/contents/FILE 

ersetzen, was in CAPS mit Ihren Informationen ...

+0

Für einige Grund, ich hatte Problem mit dem Senden mehrerer Header mit Curl an Github API, um ein binäres Asset zu downloaden, wenn ein Header für Auth ist.Sie gibt die XML-Antwort "Nur ein Authentifizierungsmechanismus ist zulässig; nur der Abfrageparameter X-Amz-Algorithmus, der Parameter Signaturabfragestring oder der Header Autorisierung muss angegeben werden". Aber wenn ich die Auth von einem Header zum Abfrage-String-Parameter geändert habe, dann funktioniert es. Also erwähne nur diese Eigenart. – David

+0

Hat bei mir nicht funktioniert, druckt 'Not Found' – zaitsman

Verwandte Themen