从存储库

时间:2017-08-16 11:41:14

标签: git api gitlab

我想通过使用它的api在gitlab中获取文件内容。 首先,我检查我的gitlab版本,它写成, GitLab社区版9.4.3 b125d21更新asap

然后我创建一个私人令牌 http://gitadress/api/v4/projects/id/repository/files?private_token=PRIVATE_TOKEN 返回为;

{"error":"404 Not Found"}

然后我将查询修改为;

http://gitadress/api/v4/projects/222/repository/tree?private_token=PRIVATE_TOKEN 此请求返回为;

[{"id":"8078365d80c","name":"test.js","type":"blob","path":"test.js","mode":"100644"}]

我想要的是获取test.js的内容,但无论我尝试过什么都无法实现它。

http://gitadress/api/v4/projects/id/repository/tree/test.js/raw?private_token=PRIVATE_TOKEN&ref=master 返回为;

{"error":"404 Not Found"}

如何使用gitlab api获取原始文件内容? 文档在这里; https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/repository_files.md#get-raw-file-from-repository

1 个答案:

答案 0 :(得分:2)

文件提到:

  

Url编码新文件的完整路径。防爆。 lib%2Fclass%2Erb

这意味着您需要对test.js进行网址编码:test%2Ejs (见Percent encoding: character data

http://gitadress/api/v4/projects/id/repository/files/test%2Ejs/raw?private_token=PRIVATE_TOKEN

您可以添加?ref=master以确保从master分支获取内容。

http://gitadress/api/v4/projects/id/repository/files/test%2Ejs/raw?ref=master&private_token=PRIVATE_TOKEN

话虽如此,你仍然有gitlab-ce issue 31470仍在开放:

  

用于“从存储库获取原始文件”的API对于带点

的文件失败

正在进行修复:gitlab-ce merge_request 13370,并将为GitLab 9.5提供。