gx

Run a Git Server

Posted at — Sep 7, 2022

GitHub Copilot 出现有一段时间了, 在其刚公布时似乎不少组织认为它存在 LICENSE 的问题。但如今,似乎这种讨伐 的声音十分式微了。我身边的不少试用过 Copilot 的同学都表示很不错。虽然对 机器学习到底有没有违背 LICENSE 存在疑问,但我对 Copilot 没有什么特别的反 感,能提高开发效率是一件好事。然而最近,当我在群聊中看见群友吐槽 Copilot 补全 markdown 文档的内容时,我才意识到,不只是代码,任何用户的数据都能被 拿来学习。我写的代码被成为他人的补全内容,我觉得无所谓。但我写的博客,甚 至是其它文字,成为他人的补全内容时,即便我的文字大部分可能都是垃圾,我还 是会感到不愉快。因此我决定迁出 GitHub ,自己的数据还是自己维护吧。

自己部署 Git Server 的方案有很多,比如 Gogs, Gitea, GitLab ,甚至可 以选择 Sourcehut 。但它们对我而言都太过重了, 有着太多我不需要的功能,比如 issue tracker ,比如 pull request ,比如账 号管理。基本上,我服务器上的项目不会用于团队协作,只是用于存放个人的代码, 这些冗余的功能毫无必要。直接在服务器上建立裸仓库,然后 ssh 链接来操作更 便利也更符合我的需求。此外,这样操作的维护成本极低,唯一需要的操作是定时 备份仓库,恢复备份时只要把仓库拷回服务器即可,十分便捷。

git-scm.com 介绍了在 服务器使用 Git 的方法。在服务器中创建新的用户 git ,并把所有仓库存放在 githome 目录下,这样当真的需要多人协作时,只需要把协作者的 ssh key 添加到 git 用户中便可以了,十分方便。倘若不希望协作者接触自己的服 务器,跑个 nginx 让协作者用 HTTP 协议来 clone ,然后通过 git-send-mail 来发送修改。虽然没有好看的 UI 界面 1,但是整个过程是去中心化的。不用注册账号,不用将数据交给公 司,没有 Walled Gardens 。

迁移的过程中,我发觉我对 GitHub 所创建的生态似乎过于依赖了。All in one solution 是诱人的也是危险的。当然,我不是批判 GitHub ,其对开源社区的贡 献和帮助是毋庸置疑的,无数优秀的项目都托管在 GitHub 上,无数优秀的开发者 在其上面协作互助。我想表达的,只是一种独立自主的态度和行为罢了。


  1. 可以套上 gitweb 或者 cgit ,效果还不错,如 kernel

    [return]