gitlab通过命令行获取特定分支的tar

Chr*_*aes 11 git command-line gitlab

我正在使用gitlab.当我进入界面时,在每个分支上我都可以下载源代码作为zip,tar或者任何东西.

我正在制作rpm规范文件,我需要使用命令行下载tar球.因为我添加了我的rsa密钥,我可以毫无问题地执行git clone:

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
Run Code Online (Sandbox Code Playgroud)

无论如何

wget http://gitlab/group/project/repository/archive.zip
Run Code Online (Sandbox Code Playgroud)

给我这些错误:

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.
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 5

GitLab 6.2issue 5253以来,它应该是:

GET /projects/:id/repository/archive
Run Code Online (Sandbox Code Playgroud)

但这似乎仅供内部使用,因为您无法将项目的ID知道为用户(仅限其名称).

不要忘记,shown in ability.rb下载档案链接到权限.确保您download_code为项目设置了" "权限.

在这里,它必须是权限问题,因为,例如:

wget http://demo.gitlab.com/gitlab/gitlab-recipes/repository/archive.zip
Run Code Online (Sandbox Code Playgroud)

这工作正常,并获得该项目的内容没有任何问题.


但是,正如OP Chris Maes问题6645中提出的评论和提及,如下所示:app/models/ability.rb

 if project && project.public?
Run Code Online (Sandbox Code Playgroud)

......" dowload_code"这一功能适用于公共项目.


laz*_*aze 5

对我来说,private_token和和sharef参数不能一起使用。因此,我改变了方式,并通过Gitlab API的标头参数告诉我的私有令牌,如下所示:

wget http://{{your_host}}/api/v3/projects/{{project_id}}/repository/archive?sha={{commit_sha}} --header='PRIVATE-TOKEN: {{private_token}}'
Run Code Online (Sandbox Code Playgroud)