Github 的自托管替代品

软件推荐 网络应用 软件开发 混帐
2021-10-16 18:51:36

我需要一个自托管的 Github 替代品。至关重要的是,它可以在有防火墙的 Intranet 上运行,无法访问 Internet(例如,样式、许可证检查等)。

  1. 比较好的web UI:源代码和提交浏览是必须的。
  2. 支持 git 和/或 mercurial。对两者的支持是一个加号。
  3. SSH shell(存储库必须可以通过 ssh 访问,而不仅仅是 http,即使至少 git 相对较好地支持所有通过 http 的操作)
  4. 权限:至少
    • 私有/公共存储库
    • 只读和完全访问
    • 为 Web UI 和 SSH 设置相同的权限(授予/修改权限时,应同时反映两者)
    • 最好集成到 LDAP(用户和组的权限)
  5. 拉取请求(又名合并请求)
  6. 管理工具:创建存储库、授予访问权限
  7. 简单的问题跟踪器:创建工单、评论、关闭、标签/标签
  8. 最好搜索,包括工单、用户、项目、文件名和内部源代码
  9. 最好从 Web UI 分叉
  10. 最好在 Linux 中运行

必须是开源的(这意味着如果缺少一些次要功能也没关系)或负担得起的(对于 30 个用户来说,每年 2400 欧元太贵了)。

我知道至少有:

但我没有这方面的经验——这个列表不会以任何方式被排除在答案之外。但是,正如我已经知道有一些替代方案,所以我不是在寻找可能的解决方案列表,而是基于您使用和尝试过的建议。我也可以使用搜索引擎,因此无需仅使用第一次点击时复制粘贴的内容来发布答案。

4个回答

我们已经使用GitLab一年多了来托管我的学生的项目。

TL;DR;EDIT:曾经有一个演示,但现在它不见了。您可以免费注册并创建一些公共存储库。

我必须说我真的很满意。

由于鼓励在此站点上对您的要求进行迭代,因此我会这样做。

  1. 相对较好的网络用户界面:您可以浏览源和历史记录、统计信息(全局和每个用户)和提交图(如 Github 上的“网络”)。您可以从 GUI 评论每一行提交,这是一个很棒的功能!抱歉,我无法提供任何屏幕截图,我必须手动匿名。通常它类似于 Github。

  2. 支持 git 和/或 mercurial。对两者的支持是一个加号。仅限 Git。

  3. SSH shell(存储库必须可以通过 ssh 访问,而不仅仅是 http,即使至少 git 相对较好地支持所有通过 http 的操作):就像在 Github 中一样。HTTP 用于只读访问,SSH 用于读写。

  4. 权限:至少

    • 私人/公共存储库:它就在那里。

    • 只读和完全访问权限:您可以定义角色(我相信默认值是 master、developer、reporter、guest)。

    • 为 web UI 和 SSH 设置相同的权限(授予/修改权限时,它应该反映到两者):我相信它就像那样工作,但由于我现在没有管理员访问权限,所以很难测试。但是,再次,它就像 github。

    • 最好集成到 LDAP(用户和组的权限):我们有。每个人都通过 ldap 登录,员工的权限比学生多。但我真的不能说这是否很容易,这只是可能的。

  5. 拉取请求(又名合并请求):存在。

  6. 管理工具:创建存储库,授予访问权限:全部来自 Web 界面,可以很好地搜索用户并能够定义用户组。

  7. 简单的问题跟踪器:创建票证、评论、关闭、标签/标签:是的,它就在那里。不知道你说的标签很硬是什么意思,看不到这样的东西。里程碑?

  8. 最好搜索,包括门票、用户、项目、文件名和内部源代码:这可能是 gitlab 最不花哨的功能。您可以搜索用户/项目/组,可以找到文件的内容,但不能找到文件名。我觉得它很笨拙。

  9. 最好从 Web UI 分叉:存在。

  10. 最好在 Linux 中运行:显然 ;-)

  11. 升级过程:如果您了解您的系统,这非常简单。每个版本都有它自己的升级指南,它总是与默认的推荐设置(即路径、用户、命令等)有点相关。如果您有一个非标准(按照他们的术语)系统,如果您自定义设置,您将不得不花一点时间来拉皮条,但这并不复杂 - 主要是一个新的克隆,运行几个脚本,你'重做。从来没有任何问题,但我很久以前就停止了这个过程。 更新Gitlab 现在包括(从 6.4.2 开始)一个简单的升级脚本假设您有标准的系统布局,实际的升级过程现在是一个命令。

它正在积极开发中,每个月都会发布一个新版本,因此绝对值得一试。它是开源的,可免费用于商业用途。

Gitlab 不需要互联网连接即可工作。需要 Internet 来设置 Gitlab,因为它从 RubyGems 下载其依赖项。或者,您可以构建一个RubyGems 镜像,或者在另一台服务器上进行安装并将完整的安装目录(默认情况下/home/git/)复制到该服务器。

截屏

2016 年 8 月版本 8.11 的 gitlab 存储库页面

我们使用 Atlassian StashJira进行问题跟踪。

藏

Stash 的许可价格为 10 位用户 10 美元,25 位用户 1,800 美元,50 位用户 3,300 美元,100 位用户 6,000 美元,500 位用户 12,000 美元。Stash 本身不包括问题跟踪,但一个单独的问题跟踪解决方案 Jira 由 Atlassian 在相同的许可模式下分发。

当然,为了满足您的要求

  1. 您必须自己决定,但到目前为止,我对 Web UI 没有任何问题。它具有高度可扩展性,支持插件和REST API
  2. Stash 仅支持 Git。
  3. Stash 支持 http、https 和 ssh。
  4. 多用户(受许可证限制)和权限系统。
  5. 完整的存储库管理,包括拉取请求。
  6. 完整的管理工具、面向公众的存储库(无需帐户即可访问)、用户存储库和具有访问权限的项目存储库。
  7. 与 Jira 问题跟踪集成。
  8. 按存储库、提交、问题和文件搜索。
  9. Fork 项目存储库、用户存储库等。
  10. 适用于Linux、Windows 和 OS X(仅用于评估目的)

Gogs(Go Git Service)是一个用 Go 编写的无痛自托管 Git 服务。另一种选择是其社区驱动的分支Gitea

我试过这个,我发现它很吸引人。简单的界面,功能几乎与我对 GitHub 的期望相似,维护者渴望实现功能并修复错误。安装非常简单。将二进制文件放入文件夹并从命令行调用它。初始配置是通过一个配置文件。它有 Git 和 Web 钩子。无论如何,我希望以下回答这个问题,即使有点晚了。

  1. 比较好的web UI:源代码和提交浏览是必须的。- 都在场
  2. 支持 git 和/或 mercurial。对两者的支持是一个加号。- 仅支持 Git
  3. SSH shell(存储库必须可以通过 ssh 访问,而不仅仅是 http,即使至少 git 相对较好地支持通过 http 的所有操作) - 据我所知,SSH 和 HTTP 都是
  4. 权限:至少
    • 私人/公共存储库- 两者
    • 只读和完全访问- 不确定只读,我还没有尝试为任何 repo 设置它,快速查看后我找不到设置
    • 为 Web UI 和 SSH 设置相同的权限(授予/修改权限时,它应该反映到两者) - 同样的事情:我还没有使用 SSH(只能在 LAN 上访问)
    • 最好集成到 LDAP(用户和组的权限) - 这要么已经集成,要么正在集成过程中
  5. 拉取请求(又名合并请求) - ofc
  6. 管理工具:创建存储库,授予访问权限- 是的
  7. 简单的问题跟踪器:创建工单、评论、关闭、标签/标签——通常的功能
  8. 最好搜索,包括票证、用户、项目、文件名和内部源代码- 没有搜索我可以在每个 repo 的提交 UI 上区分的内容
  9. 最好从 Web UI 分叉- 存在 UI 功能,但我从未使用过它
  10. 最好在 Linux 中运行- 它可以在任何可以编译的东西上运行。二进制和源可用。

我会建议Tuleap

Tuleap 7 报告

  1. Web UI:目前处于繁重的工作中(主要版本将在几周后发布,您可以在演示站点上进行早期预览)
  2. 支持 git、subversion 甚至 cvs
  3. SSH 和 HTTPS 访问
  4. 基于组的访问控制,每个 repo 的 repo(读、写、倒带)。可以支持 LDAP 或 AD,但不是强制性的
  5. Gerrit 集成附带代码审查和门控(只有 ALM 与本地上游 gerrit 一起运行)
  6. 具有项目/回购范式的基于 Web 的管理。不依赖中央管理员
  7. 全面的跟踪系统。可以根据需要简单,但也可以用于 CMM/ITIL/ISO 合规性(在同一平台上,无需额外工具或计划)。
  8. 搜索适用于票证,但目前在 ElasticSearch 的支持下取得了重大改进。
  9. Web Fork(个人回购和跨项目回购)
  10. 在 Linux 上运行(推荐使用 RHEL/Centos 6 进行生产)

另外(因为它是一个完整的 ALM,它不仅限于代码管理)

  • 与 Jenkins 原生集成以实现持续集成
  • 文件管理
  • 即时消息(jabber/XMPP)
  • 列表、论坛和新闻
  • 非常活跃的开发(每月发布,方便的升级过程:2 个命令,1 分钟停机时间)。
  • 已被主要行业大玩家使用(无法透露,但在邮件列表中很容易找到......)

它是 100% 开源 (GPLv2),您可以从 Enalean 获得专业支持。

全面披露:我是开发团队的一员,所以可能不是 100% 公平;)