gitlab api fork项目为root

时间:2016-08-20 19:23:19

标签: gitlab-api

我使用gitlab-api和Python以root身份登录。在服务器上,我有一个git存储库,它包含我的模板(示例)代码。但是,此模板代码不在Adminstrator下,而是在我自己的命名空间(教师/模板)下。我想将此模板项目分发给25名学生作为一项任务,即将此模板分配给另外25个项目,但是在不同的命名空间/组中,例如StudentsGroup / assignment1,StudentsGroup / assignment2 ...和soforth。

有谁能告诉我实现它的最佳方法是什么?

在gitlab api中,我看到了两种可能性:

第一个选项:

Admin fork relation

允许修改现有项目之间的分叉关系。仅适用于管理员。 在现有项目之间创建一个fork / from关系。

POST / projects /:id / fork /:forked_from_id

参数:

id (required) - The ID of the project
forked_from_id: (required) - The ID of the project that was forked from

第二个选项:

Fork项目

将项目分配到经过身份验证的用户的用户名称空间。

POST / projects / fork /:id

参数:

id (required) - The ID of the project to be forked

2 个答案:

答案 0 :(得分:2)

如果你有gitlab-admin权限,那么第一个选项是目前实现这一目标的唯一方法。

但是有一个问题(https://gitlab.com/gitlab-org/gitlab-ce/issues/21591)和一个合并请求(https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6213)将namespace_id参数添加到第二个选项。如果幸运的话,下一个gitlab版本(8.12)将添加此功能(gitlab通常会在每个月的22个月发布)。

答案 1 :(得分:0)

截至2015年9月6日,尚无解决方案。所以,我找到了一个解决方法。

  1. 将Teacher / template.git克隆到本地磁盘。
  2. 开始for循环:

    1. 使用普通的创建项目API创建空学生/ jobs_ {count} .git

    2. 在本地磁盘中,不断更改脚本文件中的远程源,例如git remote set-url origin git @ server:Students / jobs_ {count} .git

    3. 推送文件git push origin master

    4. for循环结束

      如果有人对该脚本感兴趣,您可以ping我或在删除凭据后稍后上传。