2013-07-16 23 views

Odpowiedz

28

Aby pobrać spakowany kopię prywatnej Bitbucket repozytorium z poziomu wiersza poleceń, należy użyć następujących:

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

gdzie <username> i <password> to nazwa konta Bitbucket i hasło, <repository> jest repo nazwa i <branchname> jest oddziałem. Jeśli wolisz pobrać konkretny popełnić, użyj skrótu SHA-1 z commit zamiast <branchname>.

--digest flaga jest dla bezpieczeństwa i jest wysoce zalecana. Dokonuje uwierzytelnienia, aby Twoja nazwa użytkownika i hasło były , a nie wysyłane w sposób wyraźny. Flaga -o wysyła dane wyjściowe polecenia zwijania na dysk jako plik, zamiast przesyłać strumieniowo przez ekran terminala.

Uwaga: Schemat uwierzytelniania Bitbucket nie jest kompatybilny z wget. Dlatego trzeba użyć curl.

Dla publicznej Bitbucket repozytoriów komenda jest:

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

Lub alternatywnie, możesz użyj wget dla repozytoriów publicznych, ponieważ nie jest wymagane uwierzytelnianie:

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

Oprócz formatu .zip można pobierać repozytoria o smakach .gz i .bz2. Po prostu zamień .zip w powyższym kodzie na .gz lub .bz2, aby pobrać repozytorium w wybranym przez Ciebie skompresowanym formacie.

+4

Próbowałem 'curl --digest --user : https://bitbucket.org/ //pliki do pobrania/ -o ' ściągnąć z Obszar pobierania, ale nie działa. Każdy pomysł, dlaczego nie? –

+0

Pracowałam jak urok dla mnie. Dzięki! Teraz stworzyłem skrypt auto-updater dla mojej strony! – alexander7567

+1

@FaheemMitha, aby pobrać z obszaru pobierania, musisz dodać opcję '-L', taką jak ta:' curl -L --digest --user : https://bitbucket.org/ //downloads/ -o ' – user1027169

29

Osobiście nie chciałem umieszczać mojego hasła w moim skrypcie, aby to osiągnąć. Więc trik było uruchomić następujące polecenie, po dodaniu klucza publicznego do konta bitbucket:

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

Mam wielu kluczy w systemie, jeśli Ty też, będziemy chcieli, aby utworzyć plik konfiguracyjny w swoim ~/.ssh katalog określający użycie określonego klucza do połączeń bitbucket.

~/.ssh/config

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

To jest po prostu sposób, aby zrobić, każdy inny sposób uwierzytelnienia z jasnym hasłem jest błędny, chyba że nie dbasz o bezpieczeństwo. – thomas

2

GrowlTigers odpowiedź jest super, tylko zmiana: wget wydaje się działać teraz, zbyt:

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

Dla tych, którzy chcą pobierz jeden plik z prywatnego repo na bitbucket, próbowałem powyższych, ale żaden nie działał. Wreszcie mam to działa z polecenia poniżej:

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

To działało również dla mnie, ale wolę używać '--ask-password' zamiast' --password = ', aby moje hasło nie było widoczne i/lub przechowywane gdziekolwiek jako zwykły tekst. – Jonny

9

--digest flaga jest dla bezpieczeństwa, i jest wysoce zalecana. Uwierzytelnia się, dzięki czemu nazwa użytkownika i hasło nie są wysyłane w przejrzysty sposób.

To nieprawda.

Bitbucket używa wyłącznie protokołu TLS, więc w żadnym momencie nic nie przechodzi przez przewód w postaci czystego tekstu. W rezultacie Digest nie zapewnia żadnych korzyści w stosunku do Basic Auth. W rzeczywistości, biorąc pod uwagę, że Digest jest inicjowany przez serwer, użytkownik otrzymuje dodatkowy serwer w obie strony, żądając dostarczonego przez serwer nonce.

Używanie Digest było zbyteczne i przestarzałe, odkąd kilka lat temu przestaliśmy oferować nieszyfrowany dostęp HTTP i było zachowane tylko dlatego, że istniały skrypty oparte na skryptach o numerze --digest, zgodnie z sugestią @GrowlTiger.

W rzeczywistości, całkowicie wyłączysz Digest 1 maja, po czym przestanie działać curl --digest.

Więcej informacji można znaleźć: https://blog.bitbucket.org/2015/04/03/fare-thee-well-digest-access-authentication/

+0

To nie jest odpowiedź na pierwsze pytanie, ale komentarz do innej odpowiedzi.Napisz ponownie jako komentarz do obraźliwej odpowiedzi (lub dołączonej do samego pytania). –

Powiązane problemy