2023年GitHub项目镜像实践:挑战与解决方案

本文详细探讨了在2023年实现GitHub项目镜像到其他协作平台的技术挑战,包括GitLab拉取镜像功能限制、各平台功能对比,以及最终采用的外部问题追踪器解决方案,涉及CI脚本、GraphQL接口等技术细节。

GitHub项目镜像在2023年 | Alexander Popov

2023年2月1日

由于多种原因,我决定将自己的开源GitHub项目镜像到其他协作开发平台。实现这一目标并不简单。这篇短文描述了我遇到的困难以及最终的可行解决方案。

背景与挑战

拉取镜像功能从我的一些仓库中消失了。免费启用它不再可能:

GitLab拉取镜像限制

在俄罗斯无法购买GitLab高级支持(Premium Tier)。GitLab甚至禁止使用其免费试用版。因此,我开始寻找其他解决方案来镜像我的GitHub项目。

探索替代平台

  • 自建服务器:部署自己的GitLab或Forgejo服务器不适合我:我不想将开源项目放在隔离的服务器上,这会严重限制社区互动并成为贡献者的障碍。
  • Gitee:检查了中国平台Gitee,但不喜欢其有限的英语本地化支持。
  • Radicle:查看了Radicle,一个点对点的软件开发网络,但其“基于区块链的强大功能”对我来说过于激进。
  • Codeberg:这个协作平台由同名的非营利组织支持,推广自由软件理念。这些人比拥有GitHub的Microsoft更让我喜欢。但在2020年3月,由于资源不足,他们关闭了Codeberg服务器上的镜像功能。据他们说,“镜像仓库容易创建,但永久消耗资源” :(
  • SourceHut:检查了SourceHut(感谢paulmairo提供的链接)。这个平台不适合我,因为它只提供付费服务,且开发流程与GitHub不兼容:在SourceHut上,使用电子邮件处理项目问题和代码。
  • Salsa:查看了Salsa(感谢Mic_92的想法)。这是Debian社区的协作服务器,运行在GitLab软件上。我注册了账户,几天后管理员激活了它,我成功将一个项目从GitHub复制到Salsa。但Salsa的拉取镜像功能也被禁用,就像gitlab.com的免费模式一样。我在他们的跟踪器中提问,但未得到回复。

GitFlic尝试

GitHub -> GitFlic镜像方案

手动备份策略

总结来说,我没有找到任何流行的协作平台能提供全功能镜像给我的GitHub项目。因此,我决定从另一个角度看待这个问题:如何手动创建GitHub项目讨论的备份?

该工具在底层使用GitHub提供的GraphQL接口,因此我需要生成一个具有最小权限的GitHub个人访问令牌。有关处理此类令牌的详细信息可以在GitHub文档中找到。

GitHub访问令牌

还有另一种方法:可以将GitHub的问题和讨论导出到项目的git存储库中。这可以使用专门的跟踪器git-bug实现(感谢Сергей Бронников提供的链接):

git-bug项目

Codeberg最终方案

GitHub -> Codeberg镜像方案

Codeberg仓库设置

这已经是一个可行的解决方案。如果GitHub出现问题,我会在Codeberg重新创建仓库,启用内部跟踪器和合并请求,然后向社区和GNU/Linux发行版宣布,我的开源项目开发已转移到该平台。

最终镜像方案GitHub -> Codeberg

感谢阅读。欢迎评论和建议。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计