2013-07-16 5 views
25

Sto scrivendo uno script per distribuire facilmente un'applicazione. Il codice per l'applicazione è memorizzato in un repository privato di BitBucket.Download privato del file zip del repository BitBucket utilizzando l'autenticazione http

Mi piacerebbe essere in grado di scaricare un file zip del commit. Ho provato l'autenticazione con il seguente codice:

https://user:[email protected]/user/repo/get/commit.zip

Tuttavia, invece di realizzare il compito che reindirizza alla pagina di login su BitBucket.

risposta

28

Per scaricare una copia zippata di un repository privato Bitbucket dalla riga di comando, utilizzare il seguente:

curl --digest --user <username>:<password> https://bitbucket.org/<username>/<repository>/get/<branchname>.zip -o <branchname>.zip 

dove <username> e <password> sono il nome dell'account Bitbucket e password, <repository> è il repo nome e <branchname> è il ramo. Se si preferisce scaricare una specifica commit, utilizzare l'hash SHA-1 del commit al posto di <branchname>.

La bandiera --digest è per la vostra sicurezza, ed è altamente raccomandato. Esegue l'autenticazione in modo che il nome utente e la password siano non inviati in chiaro. Il flag -o invia l'output del comando curl su disco come un file, invece di eseguire lo streaming sullo schermo del terminale.

Nota: schema di autenticazione di Bitbucket non è compatibile con wget. Questo è il motivo per cui è necessario utilizzare curl.

Per pubblico Bitbucket repository il comando è:

curl https://bitbucket.org/<username>/<repository>/get/<branchname>.zip -o <branchname>.zip 

o in alternativa, si può utilizzare wget per archivi pubblici poiché non è richiesta l'autenticazione:

wget https://bitbucket.org/<username>/<repository>/get/<branchname>.zip 

In aggiunta al formato .zip, è possibile scaricare i repository negli aromi .gz e .bz2. È sufficiente sostituire .zip nel codice sopra con .gz o .bz2 per scaricare il repository nel formato compresso desiderato.

+4

ho cercato 'ricciolo --digest --user : https://bitbucket.org/ //downloads/ -o ' per il download dal Area download, ma non funziona. Qualche idea, perché no? –

+0

Ha funzionato come un incantesimo per me. Grazie! Ora ho creato uno script di aggiornamento automatico per il mio sito Web! – alexander7567

+1

@FaheemMitha, per scaricare dall'area Download, è necessario aggiungere l'opzione '-L', in questo modo:' curl -L --digest --user : https://bitbucket.org/ //download/ -o ' – user1027169

29

Personalmente, non volevo inserire la mia password nel mio script per realizzare questo. Quindi il trucco è stato quello di eseguire il seguente comando, dopo aver aggiunto la chiave pubblica al tuo account bitbucket:

git archive --remote=ssh://[email protected]/your_bitbucket_username/your_repository.git --format=zip --output="name_of_your_desired_zip_file.zip" master 

ho più i tasti sul mio sistema, se lo fai troppo, si vuole creare un file di configurazione all'interno del tuo ~/.ssh directory che specifica di utilizzare una chiave specifica per le connessioni bitbucket.

~/.ssh/config

Host bitbucket.org 
    StrictHostKeyChecking no 
    IdentityFile /home/me/.ssh/my_private_key 
+2

Questo è solo il modo di fare, qualsiasi altro modo di autenticare con la password di testo è sbagliato, a meno che non ti interessi della sicurezza. – thomas

2

GrowlTigers risposta è grande, solo un aggiornamento: con wget sembra funzionare ora, troppo:

wget --user=<username> --password='<password>' https://bitbucket.org/<user>/<repo>/get/<filename>.tar.gz 
6

Per coloro che vogliono scarica il singolo file dal repository privato su bitbucket, ho provato quanto sopra ma nessuno ha funzionato. Infine ho ottenuto che funziona con il seguente comando:

wget --user=<user> --password=<password> https://bitbucket.org/<user>/<repo>/raw/master/<filename> 
+2

Questo ha funzionato anche per me, anche se preferisco usare '--ask-password' piuttosto che' --password = 'in modo da non avere la mia password visibile e/o memorizzata ovunque come testo normale. – Jonny

9

La bandiera --digest è per la vostra sicurezza, ed è altamente raccomandato. Realizza l'autenticazione in modo tale che il nome utente e la password non vengano inviati in chiaro.

Questo non è vero.

Bitbucket utilizza esclusivamente TLS e quindi in nessun punto qualcosa va oltre il filo in testo chiaro. Di conseguenza, Digest non offre alcun vantaggio rispetto all'autenticazione di base. Infatti, considerando che Digest è avviato dal server, si incorre in un ulteriore round del server che richiede il nonce fornito dal server.

Il nostro uso di Digest è stato ridondante e deprecato da quando abbiamo smesso di offrire l'accesso HTTP non crittografato diversi anni fa ed è stato mantenuto solo perché c'erano script basati su arricciature che eseguono --digest come suggerito da @GrowlTiger.

In effetti, stiamo per disattivare del tutto Digest il 1 ° maggio, dopo il quale curl --digest cesserà di funzionare.

Maggiori informazioni si possono trovare: https://blog.bitbucket.org/2015/04/03/fare-thee-well-digest-access-authentication/

+0

Questa non è una risposta alla domanda iniziale, ma un commento ad un'altra risposta.Si prega di inviare nuovamente un commento alla risposta incriminata (o allegata alla domanda stessa). –