0

我使用带有 Python 的 gitlab-api 以 root 身份登录。在服务器上,我有一个 git 存储库,其中包含我的模板(示例)代码。但是,此模板代码不在 Adminstrator 下,而是在我自己的命名空间 (teacher/template) 下。我想将此模板项目作为作业分发给 25 名学生,即将此模板分叉到 25 个其他项目,但在不同的命名空间/组中,例如 StudentGroup/assignment1、StudentsGroup/assignment2... 等等。

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

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

第一个选项:

管理员分叉关系

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

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

第二种选择:

分叉项目

将项目分叉到经过身份验证的用户的用户命名空间中。

发布 /projects/fork/:id

参数:

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

2 回答 2

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 日发布)。

于 2016-09-06T07:28:59.367 回答
0

截至今天 2015 年 9 月 6 日,没有可用的解决方案。所以,我找到了一个解决方法。

  1. 将 Teacher/template.git 克隆到本地磁盘。

开始一个 for 循环:

  1. 使用正常的创建项目 API 创建空的 Students/jobs_{count}.git

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

  3. 推送文件 git push origin master

for 循环结束

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

于 2016-09-06T17:07:04.493 回答