2014-09-18 21 views
5

Ho un repository con file binari in esso di cui ho bisogno.Come posso scaricare file binari di una versione di GitHub?

posso

git checkout tags/thetagoftherelease 

che sembra alla cassa il tag corretto, ma non abbattere i file binari. Come posso tirare giù i file binari che sono stati aggiunti alla versione (le caselle verdi sulla versione)?

Aggiunta immagine di file binari in una versione.

enter image description here

+0

Giù voti con commenti non sono utili –

+0

* Pull * o * checkout *? Questi sono due termini molto distinti in Git. Inoltre, che "scatole verdi"? – Jubobs

+0

Scusa, stavo usando pull colloquialmente. Caselle verdi come in, aggiunti file binari a una versione di git. Vengono visualizzati come caselle verdi che è possibile scaricare manualmente su github. Voglio scaricare questi file binari aggiunti dalla versione. Il controllo del tag di rilascio non mi fornisce i file binari. –

risposta

14

Ho provato per giorni a cercare la risposta corretta a questo, e alla fine ho capito come farlo tramite il comando di arricciatura. È un processo in 3 fasi.

In primo luogo, per ottenere un elenco delle attività per l'ultima versione:

curl -H "Authorization: token YOURGITHUBTOKEN" https://api.github.com/repos/NAME/REPO/releases/latest 

Poi nel JSON, cercare l'URL del bene che si desidera. Ad esempio, sarebbe simile a: "url": "https://api.github.com/repos/NAME/REPO/releases/assets/1275759"

Quindi si passa a un altro comando di ricciolo per recuperare l'URL effettivo, che in realtà è un collegamento a un file Amazon S3.

curl -H "Authorization: token YOURGITHUBTOKEN" -H "Accept:application/octet-stream" -i https://api.github.com/repos/NAME/REPO/releases/assets/1275759 

L'URL sarà nel campo "location" della risposta HTTP, e quindi utilizzare curl per ottenere il file in questo modo:

curl "https://github-cloud.s3.amazonaws.com...." -i -o FILENAME 
+1

risposta migliore, grazie.Forget curl, utilizzare http://httpie.org (client HTTP CLI, sostituzione dell'arricciatura user-friendly con interfaccia utente intuitiva, supporto JSON, evidenziazione della sintassi, download di tipo wget, estensioni, ecc.) – frekele

+1

Marca sicuro di usare le virgolette per circondare l'url s3. Altrimenti arricciatura non lo otterrà apropiatamente. –

4

beni versione binaria esistono al di fuori del Git, e non possono essere gestiti utilizzando gli strumenti standard.

Dovrebbero essere disponibili tramite l'API di GitHub, però.

  1. List the repository's release assets:

    GET /repos/:owner/:repo/releases/:id/assets 
    

    Questo invierà indietro un documento JSON elenca le attività di rilascio per il repository, per esempio

    [ 
        { 
        "url": "https://api.github.com/repos/octocat/Hello-World/releases/assets/1", 
        "browser_download_url": "https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip", 
        "id": 1, 
        "name": "example.zip", 
        "label": "short description", 
        "state": "uploaded", 
        "content_type": "application/zip", 
        "size": 1024, 
        "download_count": 42, 
        "created_at": "2013-02-27T19:35:32Z", 
        "updated_at": "2013-02-27T19:35:32Z", 
        "uploader": { 
         "login": "octocat", 
         ... 
        } 
        } 
    ] 
    
  2. Retrieve the assts from the release you want, come definito dal suo id dall'alto:

    GET /repos/:owner/:repo/releases/assets/:id 
    

    Se volete scaricare contenuto binario del bene, passare un tipo di supporto di "application/octet-stream". L'API reindirizzerà il client al percorso o lo invierà direttamente, se possibile. I client API devono gestire sia una risposta 200 o 302.

Come documented, queste richieste sono tutti relativi a https://api.github.com.