5 个 GitHub 的开源替代方案

通过将您的开源代码保存在开源存储库中来保持弹性。
111 位读者喜欢这篇文章。
Woman programming

WOCinTech Chat。由 Opensource.com 修改。CC BY-SA 4.0

Git 是一种流行的版本控制系统,主要用于代码,但在其他学科中也很流行。它可以本地运行在您的计算机上供个人使用,也可以在服务器上运行以进行协作,还可以作为托管服务运行以供广泛的公众参与。市面上有许多托管服务,其中最受欢迎的品牌之一是 GitHub

GitHub 不是开源的。实际上,这对大多数用户来说并没有太大的区别。绝大多数放在 GitHub 上的代码,大概都鼓励所有人共享,因此 GitHub 的主要功能是一种公共备份服务。如果 GitHub 倒闭或大幅更改其服务条款,恢复数据将相对简单,因为预计您拥有您保存在 GitHub 上的代码的本地副本。但是,一些组织已经开始依赖 GitHub 服务产品中非 Git 的部分,这使得从 GitHub 迁移变得困难。这是一个尴尬的处境,因此对于许多人和组织来说,防范供应商锁定是一项值得的投资。

如果这就是您所处的情况,请查看以下五个 GitHub 替代方案,所有这些方案都是开源的。

1. GitLab

GitLab 不仅仅是 GitHub 的替代方案;它更像是一个完整的 DevOps 平台。GitLab 几乎是软件开发公司所需的所有基础设施,因为它提供代码和项目管理工具、问题报告、持续交付和监控。您可以在 GitLab.com 上使用 GitLab,或者您可以下载代码库并在本地运行它,无论是否需要付费支持。GitLab 具有 Web 界面,但所有特定于 Git 的命令都按预期工作。

GitLab 致力于开源,无论是在其代码还是其背后的组织,以及 Git 本身。该组织发布了其大部分业务文档,包括 员工入职方式、他们的 营销政策 等等。作为一个网站,GitLab 热衷于推广 Git。当您使用特定于站点的功能(例如合并请求)时,GitLab 的界面会解释如何在纯 Git 中解决该请求,如果您喜欢在终端中工作。

2. Gitolite

Gitolite 很可能是在服务器管理员为 Git 存储库管理提供前端所需的最少代码量。与 GitHub 不同,它没有 Web 界面,没有桌面客户端,并且从用户角度来看,它没有为 Git 添加任何内容。事实上,您的用户实际上并没有直接使用 Gitolite。他们只是像往常一样使用 Git,无论他们习惯于在终端中使用 Git 还是在像 Git Cola 这样的前端客户端中使用 Git。

但是,从服务器管理员的角度来看,Gitolite 解决了您在运行普通 Git 服务器时必须手动管理的所有权限和访问问题。使用 Gitolite,您只需在服务器上创建一个用户(例如,一个名为 git 的用户)。您允许您的用户使用此单一登录身份来访问您的 Git 服务器,但是当他们登录时,他们必须通过 Gitolite 来处理您的 Git 服务器。正是 Gitolite 验证用户的访问权限,管理他们的 SSH 密钥,验证他们在访问特定存储库时的权限级别等等。管理员不必创建和管理无数的 Unix 用户帐户,只需列出允许访问存储库的用户(通过他们的 SSH 公钥识别)即可。Gitolite 会处理其他一切。

Gitolite 对用户几乎是不可见的,并且它使 Git 管理对服务器管理员几乎是不可见的。只要您不需要 Web 界面,Gitolite 对所有参与者来说都是净胜。

3. Gitea 和 Gogs

Gogs 项目是一个 MIT 许可的 Git 服务器框架和 Web 用户界面。在 2016 年,一些 Gogs 用户认为开发受到阻碍,因为只有其初始开发人员拥有对其开发存储库的写入权限,因此他们将代码 fork 到了 Gitea。今天,这两个项目彼此独立地共存,并且从用户的角度来看,它们的体验基本相同。具有讽刺意味的是,这两个项目都托管在 GitHub 上。

使用 Gitea 和 Gogs,您可以下载源代码并将其作为服务在您的服务器上运行。这为用户提供了一个网站,他们可以在其中创建帐户、登录、创建自己的存储库、上传代码、浏览代码、提交问题和错误报告、请求代码合并、管理 SSH 密钥等等。该界面在外观和感觉上类似于 GitLab、GitHub 或 Bitbucket,因此如果用户有任何在线代码管理系统的经验,他们基本上已经熟悉 Gitea 和 Gogs。

Gitea 或 Gogs 可以作为软件包安装在任何 Linux 服务器上,包括 Raspberry Pi,作为容器,在 BSD、macOS 或 Windows 上,或者从源代码编译。它们都是跨平台的,因此它们可以在任何运行 Go 的平台上运行。阅读 Ricardo Gerardi 关于 使用 Podman 设置 Gogs 容器 的文章以获取更多信息。

4. 独立社区

如果您不打算自行托管,您可以稍微作弊一下,在别人的服务器上使用自托管选项。有许多独立的站点,例如 Codeberg、Nixnet、Tinfoil-hat 和 Notabug.org。有些运行 Gitea,有些运行 Gogs,但结果是相同的:免费的代码托管,以帮助您保持工作的安全和公开。这些解决方案可能不如 GitLab 或 GitHub 这样的复杂,它们可能不提供按需 Jenkins 管道和持续集成/持续开发 (CI/CD) 解决方案,但它们是您工作的绝佳镜像。

也有特定用途的提供商:面向 FSFE 支持者的 Gitea 实例,面向 Freedesktop 项目的 Gitlab 实例,以及面向 GNOME 项目的另一个实例。

由于这些独立的服务器是较小的社区,您可能还会发现社交编码的“社交”方面更为重要。我通过一个独立的 Git 提供商结交了几个在线朋友,而 GitHub 至少在社交方面被证明是令人失望的。

信息很明确:没有必要或优势存在一个中心化的、占主导地位的、非免费的 Git 软件托管服务。

5. Git

您可能会惊讶地发现,Git 作为服务器来说,出奇地自力更生。虽然它缺乏用户管理和权限设置,但 Git 与 SSH 集成,并附带一个特殊的 git-shell 应用程序,专门设计用作使用 Git 命令的受限环境。通过将用户的默认 shell 设置为 git-shell,您可以限制他们在与您的服务器交互时可以执行的操作。

Git 单独不提供的是存储库权限工具,以帮助您管理每个用户可以访问的内容。为此,您将不得不退回到操作系统的用户和访问控制列表 (ACL) 控制,如果您有超过少数用户,这可能会变得乏味。对于小型项目或刚启动的项目,在 Linux 服务器上运行 Git 是满足协作空间需求的简单而直接的解决方案。有关更多信息,请阅读我关于 构建 Git 服务器 的文章。

奖励:Fossil

Fossil 绝不是 Git,从某种意义上说,这就是它作为 GitHub 替代方案的吸引力所在。事实上,Fossil 是整个 Git 系统的替代方案。它是一个完整的版本控制系统,就像 Git 一样,并且它还具有错误跟踪、wiki、论坛和文档功能,内置于您创建的每个存储库中。它还包含一个 Web 界面,并且完全是独立的。如果这一切听起来好得令人难以置信,您可以在 fossil-scm.org 上亲眼看看,因为 Fossil 的主页就运行在 Fossil 上!

阅读 Klaatu 关于 Fossil 入门 的文章以获取更多信息。

开源意味着选择

关于 Git(和 Fossil)最好的事情是它们是开源技术。您可以选择最适合您的任何解决方案。事实上,由于 Git 也是分布式的,您甚至可以选择多种解决方案。没有什么可以阻止您将代码托管在多个服务上,并在每次推送时写入所有服务。看看您的选择,决定最适合您的方案,然后开始工作!

接下来阅读
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,经常同时进行。

7 条评论

... 那么 Codeberg 呢?
https://codeberg.org/

免费和开源软件、内容、项目的协作平台和 git 托管。
(https://victorhckinthefreeworld.com/2020/07/06/codeberg-alternativa-github-gitlab/)

您绝对应该提到 codeberg.org ;)

我会将 Gerrit (https://gerrit-review.googlesource.com/Documentation/index.html) 添加到列表中,它在代码审查方面非常强大!在这里 (https://review.gerrithub.io/) 您可以找到它的免费托管版本。感谢这篇文章 :)

Gitea 已经比 Gogs 具有更多完整的功能 ;)

© . All rights reserved.