2012-02-29 18 views
20

Dostaliśmy konieczność pobrania zipball z prywatnego repo. W przypadku publicznych jest to dość łatwe albo poprzez API GitHub lub ręcznie (https://github.com/user/repo/zipball/master). Ale co z prywatnymi repo? Niezupełnie oczywiste, jak to zrobić, nawet mając token OAuth.Czy mimo to programowo pobierasz zipball prywatnego repozytorium github?

+0

co to jest „Zipball” można proszę mi dać trochę więcej opisu. –

+0

To plik zip. – CMCDragonkai

Odpowiedz

25

nowa alternatywa

Ponieważ dana akceptowane odpowiedź już nie działa, myślałem, że chciałbym wyjaśnić, jak udało mi się zrobić to z nowymi zmianami w API github.

Nowa Pobierz Api link

Najpierw znalazłem informacji o pobraniu archiwum tutaj: https://developer.github.com/v3/repos/contents/#get-archive-link

Public Repo

Jeśli jest to publiczna repo to jest bardzo łatwe ... możesz zrobić:

 
curl -L https://api.github.com/repos/pengwynn/octokit/tarball > octokit.tar.gz 

Prywatna Repo

Jeśli to jest to prywatna repo, musisz utworzyć token OAuth wchodząc do swojego profilu, a następnie wybierając „Aplikacja”. (https://github.com/settings/applications) Stworzyłem osobisty token.

Następnie postępując zgodnie z instrukcjami na następnej stronie dowiedziałem się, jak uzyskać prywatne repo, że masz uprawnienia do: https://developer.github.com/v3/#authentication

Pełna Kodeksu

Ci się to

 
curl -H "Authorization: token ab499f3b..." \ 
-L https://api.github.com/repos/godzilla/my_priv_repo/tarball > wut.tar.gz 

Be z pewnością zastąpi ab499f3b... swoim faktycznym tokenem.

1

Nie wydaje mi się, żebym miał problem z uzyskaniem zipball z prywatnych repozytoriów do pobrania. Używam tego samego formatu, który podałeś i działa idealnie.

Używam OAuth2 do pobierania repozytoriów, ale buduję link do kuli zip w formacie, który podałeś. Here is the application Zrobiłem to.

Jeśli szukasz tokena OAuth2, po prostu użyj formatu GitHubt API v3, to całkiem proste. Mimo to nie pasuje dokładnie swój problem:

This sposób uzyskać token OAuth2 z GitHub dla this chrome extension

UPDATE

@jayarjo I build the URL here on line 202. Po prostu utworzyłem adres URL podobny do tego, który podałeś, a token OAuth2 nawet go nie używa. Cały mój token pozwala mi pobierać prywatne dane wszystkich użytkowników przed utworzeniem znaczników. Ale działa bez problemu ...

Myślę, że powodem, dla którego mogę pobrać aplikację zipball, jest fakt, że adres URL to rzeczywiście https://github.com/ *, a ponieważ jestem obecnie zalogowany z powodu OAuth2, mam pozwolenie na uzyskanie do tego adresu URL - gdzie brzmi to tak, jak nie, więc otrzymujesz błąd 404.

Możesz spróbować wysłać zapytanie do strony, a jeśli otrzymasz odpowiedź o błędzie, użytkownik najpierw będzie się logował, a kiedy zażądasz tego zip, nie powinno być problemu.

+0

Weird ... Otrzymuję komunikat "not found" za każdym razem, gdy próbuję. Również przy użyciu tego samego formatu nie określiłem, gdzie umieścić token tam? .. Czy możesz połączyć konkretną linię kodu, gdy to zrobisz? – jayarjo

+0

@jayarjo Zaktualizowałem moją odpowiedź - zasadniczo użytkownik musi być zalogowany, aby adres URL był dla nich dostępny. Wtedy nie dostaniesz 404 – jjNford

+0

Ale otrzymuję token (mam na myśli to, że próbuję tego adresu). Ale czy to wszystko, co robisz i to działa? Może przeoczę coś prostego tutaj ... – jayarjo

2

z dyni:

curl -L -F "login=$USER" -F "token=$TOKEN" https://github.com/$USER/$REPO/$PKGTYPE/$BRANCHorTAG 

gdzie $TOKEN jest token API na swoim profilu github, nie token OAuth2 używany do komunikowania się z APIv3.

$USER to konto użytkownika, z którym związany jest token, niekoniecznie organizacja/inny użytkownik, do którego należy repozytorium. Drugą instancją z $USER jest użytkownik/konto repo.

$REPO to nazwa prywatnej repozytorium

$PKGTYPE jest archiwum tar lub zipball i $BRANCHorTAG jest gałęzią, jak kapitan lub nazwę znacznika dla commit.

Pierwsza instancja $USER musi mieć dostęp do repo należącego do drugiej instancji $USER.

Nie mogłem znaleźć tego udokumentowanego GDZIEKOLWIEK, więc mam też trochę o tym pisać, jeśli chcesz czegoś bardziej szczegółowego.

+0

Nie wiesz, czy to już działa: http://stackoverflow.com/questions/10418596/cant-find-api-token-in-gitub –

2

natknąłem się na ten sam problem i to pracował dla mnie (od lutego 2015):

curl -O -J -L -u $YOUROAUTHKEY:x-oauth-basic https://github.com/$USER/$REPO/archive/master.zip 

ouath jako rozwiązań nagłówka nie działa dla mnie, ale co pracował był farsz klucz do nazwa użytkownika i podanie typu. Następnie dał 302 do przekierowania z właściwym łączem.

polecenie Pełne naprawdę pomógł mi rozwiązać problem, czy poświadczenia używałem były akceptowane lub nie (404 vs 401)

Powiązane problemy