通过 Gitlab API 建立 fork 关系,返回 403

今天闲来想整理一下之前做的前端项目。公司用的是 Gitlab 来存放项目,有一系列后台系统是通过 fork 一个模板项目来起手的。出于一些原因需要重新建立派生关系,但是在 Gitlab 并未提供界面来修改 fork 的关系。经过一番搜索发现可以通过 API create-a-forked-fromto-relation-between-existing-projects 来设置派生关系。

1
2
# Create a forked from/to relation between existing projects
POST /projects/:id/fork/:forked_from_id

从个人设置拿到 Token 之后便在 Postman 里操作了一番,但是拿到的都是 { message: '403 Forbidden }。第一反应应该是权限问题,但是从 Gitlab 后台查看,要设置的两个项目我都是拥有者。于是通过一些别的 API 进行测试,验证了 Token 对项目是有操作权限的。

就在我都要放弃的时候,在 Gitlab 的 issue Allow to create fork relationship for non-admins 发现了端倪。这个 issue 有下面的这个诉求:

allow /projects/:id/fork/:forked_from_id API call when user is owner of both :id and :forked_from_id

显然,Gitlab 的团队拒绝了这个诉求,所以,这个 API 只能通过管理员帐号来操作,即使你是两个项目的拥有者。但是作为小前端,肯定不可能拿到管理员权限的,所以只能放弃了。