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)
自GitLab 6.2和issue 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
"这一功能仅适用于公共项目.
对我来说,private_token
和和sha
或ref
参数不能一起使用。因此,我改变了方式,并通过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)