2012-02-29 66 views
20

我們有必要獲取私人回購的zipball。對於公衆來說,通過GitHub API或手動操作非常簡單(https://github.com/user/repo/zipball/master)。但是私人回購呢?即使有oAuth令牌,如何做也不是很明顯。有無論如何編程取回私人github回購的zipball?

+0

這是什麼「Zipball」可以請你給我多一點的描述。 – 2013-08-16 06:02:12

+0

這是一個zip文件。 – CMCDragonkai 2013-11-05 17:15:19

回答

25

新的替代

因爲給定的接受的答案不工作了,我以爲我會解釋我是如何能夠與GitHub的API中的新變化,以做到這一點。

新下載的API鏈接

首先,我發現有關此下載的檔案資料: https://developer.github.com/v3/repos/contents/#get-archive-link

公共回購

如果它是一個公共回購則是很容易的...你可以這樣做:

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

私人回購

如果它是私人回購協議,你需要將你的個人資料,然後選擇「應用程序」創建OAuth憑證。 (https://github.com/settings/applications) 我創建了個人令牌。

然後使用以下頁面上的說明,我發現如何讓私人回購,你有權

https://developer.github.com/v3/#authentication

全碼

喜歡這個

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

要一定要用你的實際代幣代替ab499f3b...

1

我似乎沒有問題從私人回購下載zipball。我使用您指定的相同格式,並且完美地工作。

我使用OAuth2來獲取存儲庫,但我使用您給出的格式構建zip球的鏈接。 Here is the application我這樣做。

如果您正在尋找獲得OAuth2令牌,只需使用GitHubt API v3格式,它非常簡單。雖然這並不完全適合您的問題:

This是如何得到從GitHub中加入OAuth2令牌this chrome extension

UPDATE

@jayarjo I build the URL here on line 202。我只是按照您指定的那樣構建URL,但OAuth2令牌甚至沒有使用它。我的所有令牌都允許我在創建標記之前獲取所有用戶的私有數據。但它的工作沒有問題...

我想我真的能夠下載zipball的原因是因爲該網址實際上是https://github.com/ *,因爲我目前正在登錄,因爲OAuth2我有權獲得到該網址 - 因爲它聽起來像你不這樣你會得到一個404錯誤。

你可以嘗試發送一個請求到頁面,如果你得到一個錯誤響應提示用戶先登錄,那麼當你請求zipball時你應該沒有問題。

+0

奇怪......我每次嘗試都會收到「找不到」的錯誤。另外,當使用相同的格式時,我已經指定了不知道將令牌放置在哪裏?..你可以鏈接特定的代碼行嗎? – jayarjo 2012-03-05 12:45:00

+0

@jayarjo更新了我的答案 - 本質上,用戶必須登錄才能使用URL。然後你不會得到一個404 – jjNford 2012-03-05 13:08:50

+0

但我獲取令牌(我的意思是,當我嘗試該網址時,我擁有它)。但是,這是你所做的全部工作?也許我忽略了一些簡單的東西... – jayarjo 2012-03-06 12:00:42

2

,捲曲:

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

其中$TOKEN是您的GitHub的個人資料的API令牌,而不是用於與APIv3通信的的OAuth2令牌。

$USER是令牌連接的用戶帳戶,不一定是回購所屬的組織/其他用戶。 $USER的第二個實例是回購的用戶/帳戶。

$REPO是專用倉庫

$PKGTYPE的名稱爲壓縮包或zipball 和$BRANCHorTAG是一個分支,母版,或標記名稱提交。

$USER的第一個實例必須有權訪問屬於第二個$USER實例的回購。

我無法在任何地方找到這個文檔,所以如果您想要更詳細的內容,我也有一點點寫下來。

+0

不知道這是否工作了:http://stackoverflow.com/questions/10418596/cant-find-api-token-in-github – 2012-06-10 10:02:11

2

我遇到了同樣的問題,這個工作對我來說(如二月的2015年):

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

的ouath爲標題的解決方案並沒有爲我工作,但什麼工作是肥了鑰匙插進用戶名和指定類型。然後它給了一個302重定向與適當的鏈接。

verbose命令真的幫我解決是否被接受我所用的憑證或沒有(404 VS 401)