•
为了集中资源为科大师生提供更好的 Git 托管服务,网络信息中心与 Linux 用户协会经讨论决定:即日起,Linux 用户协会将与网络信息中心共同运维中国科大 Git 服务(即 USTC GitLab,https://git.ustc.edu.cn/),并停止独立维护的 LUG GitLab 服务。为了给广大师生留出充足时间迁移数据,现将 LUG GitLab 停止服务的时间表通知如下:
- LUG GitLab 即日起停止新用户注册,现有用户可以继续使用;
- LUG GitLab 将于 10 月 31 日进入只读状态;
- LUG GitLab 将于 12 月 31 日停止服务。
如有任何疑问或需要协助,可以通过 LUG 的联系方式联系我们。
附:如何迁移数据?
由于自动化迁移存在困难(例如无法妥善解决命名冲突的问题),因此数据需要您手工迁移。以下分别介绍针对群组的半自动化迁移方式,以及针对个人项目的手工迁移方式。
迁移群组(Group)
GitLab 支持使用「直接传输」(Direct Transfer)的功能迁移群组。简单来说,需要在 LUG GitLab https://git.lug.ustc.edu.cn 创建一个有 “api” 范围权限的个人访问令牌(PAT),然后在 USTC GitLab https://git.ustc.edu.cn 的指定界面填写该 token,并配置迁移。
前提条件:你需要是被迁移的 Group 的 owner(所有者),否则没有权限迁移。
第一步:在 LUG GitLab 创建 PAT
登录 https://git.lug.ustc.edu.cn。点击网站右上角的图标,选择 “Preferences”(偏好设置)。

然后选择 “Access”(访问)-> “Personal Access Tokens”(个人访问令牌)。

选择创建 “Legacy token”(旧版令牌)。

给 token 起个名字,并确保选中下面的 “api”作为范围。如果当天无法完成迁移,可以适当拉长有效期。

创建出来的 token 复制出来。如果忘记记录了,需要删除之后重新走一遍上面的创建流程。请勿分享 token。

第二步:在 USTC GitLab 启动直接传输
登录 https://git.ustc.edu.cn。点击上面的加号,选择 “New Group”(新建群组)。

在新界面中选择 “Import Group”(导入群组)。

在导入群组界面,填写 https://git.lug.ustc.edu.cn,以及第一步生成出来的 token。

输入完成后,点击 “Connect instance”(连接实例),之后会看到你拥有的群组。

在非嵌套群组的情况下,点击 “Select parent group”(选择父组)并选择 “No parent”(没有父组)即可。如果群组的名字和别人冲突了,需要重新起名。
最后全选你要导入的群组,点击 “Import with projects”(导入包含项目)即可。

等待一段时间。在迁移过程中,该页面上可以查看迁移的进度。
第三步:收尾清理
迁移完成后,由于 GitLab 无法将 USTC GitLab 和 LUG GitLab 上面的用户一一对应,已有的用户都变成了 placeholder(占位符)。需要手工指定占位符和 USTC GitLab 上面用户的关系。
在群组内选择 “Members”(成员)。

在成员页面中选择 “Placeholders”(占位符)。

在与组内用户协调确认后,输入占位符与 USTC GitLab 上面用户的关系,点击 “Reassign”(重新分配)。

如果占位符不需要了,也可以不重新分配。

重新分配需要对方的批准。在重新分配后,对方会收到一封邮件。如果重新分配了自己,你自己也会收到邮件。

确认无误后,在点击弹出的页面中批准即可。

在迁移完成后,可以在 LUG GitLab 删除对应的群组,并删除使用的 PAT。
迁移个人仓库
GitLab 的「直接传输」功能不支持个人仓库,因此需要手工逐个仓库操作。如果不希望做下面的步骤,也可以自己创建群组后,将仓库移动到群组,再使用直接传输功能。
做法 1:创建新组,将个人仓库迁移到新组后,进行直接传输
这是最简单的方式。
在 LUG GitLab 创建新的群组后,可以在此页面快速逐个迁移:

之后参考上文的操作即可。
做法 2:如果只有代码要迁移
首先在 USTC GitLab 创建仓库。先查看你的原始 remote:
git remote -v
预期输出为:
origin git@git.lug.ustc.edu.cn:yourname/yourproj (fetch)
origin git@git.lug.ustc.edu.cn:yourname/yourproj (push)
假设你在 USTC GitLab 上的 remote 为 git@git.ustc.edu.cn:yourname/yourproj:
git remote set-url origin git@git.ustc.edu.cn:yourname/yourproj.git
git push --all origin
git push --tags origin
从本地传输数据相比做法 3(导出、下载存档再导入)成功率更高。
做法 3:有除了代码以外的仓库内的其他内容要迁移(不推荐)
这种做法我们不推荐,因为失败风险较高。建议优先考虑创建新组后使用直接传输功能传输。
在 LUG GitLab 内,你的仓库界面中选择 “Settings”(设置)-> “General”(通用)。

展开弹出界面中的 “Advanced”(高级)。

选择 “Export project”(导出项目)。

等待一会之后,邮件会收到导出的存档 URL。如果仓库很大,存档的时间可能会比较长。如果长时间没有看到存档邮件,请联系我们。
在收到的邮件中选择 Download 下载存档到本地。

之后在 USTC GitLab 中界面顶部选择 “New project/repository”(新建项目/仓库)。

选择 “Import project”(导入项目)。

在导入选项中选择 GitLab 导出:

设置导入参数,包括仓库名称、导入目标(可以是你自己的用户名,也可以是群组),并且选择导出出来的文件,点击导入。

如果导入的文件过大,有可能会出现问题。请联系我们处理。