我有一个 GitLab 项目,其设置如下:
myserver.com/SuperGroup/SubGroup/SubGroupProject以下项目的树是一个顶级txt文件和一个目录内的txt文件。我从 GitLab API 获取树:
myserver.com/api/v4/projects/1/repository/tree?recursive=true[{"id":"aba61143388f605d3fe9de9033ecb4575e4d9b69","name":"myDirectory","type":"tree","path":"myDirectory","mode":"040000"},{"id":"0e3a2b246ab92abac101d0eb2e96b57e2d24 915d ","name":"1stLevelFile.txt","type":"blob","path":"myDirectory/1stLevelFile.txt","mode":"100644"},{"id":"3501682ba833c3e50addab55e42488e98200b323", “名称”:“top_level.txt”,“类型”:“blob”,“路径”:“top_level.txt”,“模式”:“100644”}]
如果我请求内容,top_level.txt它们将通过以下方式毫无问题地返回:
myserver.com/api/v4/projects/1/repository/files/top_level.txt?ref=master但是我无法myDirectory/1stLevelFile.txt通过我尝试的任何 API 调用进行访问。例如:
myserver.com/api/v4/projects/1/repository/files/"myDirectory%2F1stLevelFile.txt"?ref=master
和,myserver.com/api/v4/projects/1/repository/files/"myDirectory%2F1stLevelFile%2Etxt"?ref=master结果是:
未找到 在此服务器上未找到请求的 URL /api/v4/projects/1/repository/files/myDirectory/1stLevelFile.txt。Apache/2.4.25 (Debian) 服务器位于 myserver.com 端口 443
myserver.com/api/v4/projects/1/repository/files/"myDirectory/1stLevelFile.txt"?ref=master和,myserver.com/api/v4/projects/1/repository/files?ref=master&path=myDirectory%2F1stLevelFile.txt结果是:
未找到错误404”
组件的版本是:
GitLab 10.6.3-ee
GitLab Shell 6.0.4
GitLab Workhorse v4.0.0
GitLab API v4
Ruby 2.3.6p384
Rails 4.2.10
postgresql 9.6.8
Run Code Online (Sandbox Code Playgroud)
根据我的研究,有一个类似的错误,已在 10.0.0 更新中修复。
我还添加了我的 ssh-key,尽管我怀疑它有任何效果,遵循此建议在 php 中解决相同的问题。
解决方案: 我最终通过调整服务器上安装的apache解决了。只需按照以下说明操作:https://gitlab.com/gitlab-org/gitlab-ce/issues/35079#note_76374269