2014-03-27 67 views
7

我正在使用gitlab。當我進入界面時,我可以在每個分支上以zip,tar或任何形式下載源代碼。gitlab通過命令行獲取特定分支的tar

我正在製作rpm規格文件,我需要使用命令行下載tar球的可能性。自從我加入我的RSA密鑰,我可以做混帳克隆沒有問題:

git clone http://gitlab/group/project.git 
Cloning into 'project'... 
remote: Counting objects: 1885, done. 
remote: Compressing objects: 100% (826/826), done. 
remote: Total 1885 (delta 1194), reused 1496 (delta 954) 
Receiving objects: 100% (1885/1885), 1.30 MiB | 0 bytes/s, done. 
Resolving deltas: 100% (1194/1194), done. 
Checking connectivity... done 

但是做

wget http://gitlab/group/project/repository/archive.zip 

讓我這些錯誤:

Resolving gitlab (gitlab)... 10.1.253.75 
Connecting to gitlab (gitlab)|10.1.253.75|:80... connected. 
HTTP request sent, awaiting response... 401 Unauthorized 
Authorization failed. 

回答

3

由於GitLab 6.2issue 5253,它應該是:

GET /projects/:id/repository/archive 

但是,這似乎只用於內部使用,因爲你無法知道項目的id作爲用戶(只有它的名字)。

不要忘記,作爲shown in ability.rb,下載檔案鏈接到權限。確保您的項目具有「download_code」權限集。

在這裏,它必須是一個權限問題,因爲,例如:

wget http://demo.gitlab.com/gitlab/gitlab-recipes/repository/archive.zip 

這工作得很好,並獲得該項目的內容,沒有任何問題。


然而,隨着OP Chris Maescomments並提到在issue 6645,如由app/models/ability.rb所示:

if project && project.public? 

...那 「dowload_code」 功能僅適用於公共項目

+0

正如我所說;我已經放置了rsa-key,這樣我就可以在沒有他的情況下克隆我的用戶名和密碼,但是我怎樣才能得到你所說的ID?現在我進入界面並從「獲取焦油」按鈕 –

+0

@ChrisMaes複製下載URL,這將不起作用:API不支持通過其名稱訪問項目,只能通過其id:https:// github.com/gitlabhq/gitlabhq/issues/4921 – VonC

+0

我沒有真正使用API​​(不知道如何);所以如果我在命令行或界面中:我可以獲得項目ID嗎?怎麼樣?所以如果我有項目ID,命令「wget http:// gitlab/projects /:123/repository/archive.tar」應該工作?恐怕不是,但是並不真正理解如何使用API​​ ... –

3

試試這個

curl http://$yourhost:$port/$yourgroup/$yourrepo/repository/archive.zip\?ref\=$yourbranch\&\private_token\=$yourtoken -o newpackage.zip 
+1

如果您已閱讀答案,您會發現OP的問題無法解決,因爲下載功能僅支持公共存儲庫; OP詢問了一個非公共存儲庫。 –

+0

@MaxLeske OP在問題中沒有詢問非公開回購。無論如何,他的回答很有用,我不知道還有什麼地方可以找到它。 注意:''yourrepo'沒有'.git'擴展名 – Otheus

+0

我們的GitLab已升級到8.2。這不起作用了。任何人有類似的經歷? – Otheus

3

對我來說,private_tokensharef參數不一起工作。所以,我改變了方式,並且通過Gitlab API的頭參數告訴了我的私人令牌,如下所示:

wget http://{{your_host}}/api/v3/projects/{{project_id}}/repository/archive?sha={{commit_sha}} --header='PRIVATE-TOKEN: {{private_token}}' 
+0

它與內部存儲庫一起工作,我試過了。 – laze