SCM-Manager 介绍与选型指南
SCM-Manager 认知与选型:Cloudogu 维护的开源三合一版本库托管平台定位、Java+Jetty+SQLite 技术栈与零依赖架构,与 Gitea/Gogs/GitLab CE 的 GitHub API 量化对比,官方博客与 apt 源版本溯源,查询日期 2026-10-28。
SCM-Manager 介绍与选型指南
SCM-Manager 是由德国 Cloudogu GmbH 主导维护的开源代码仓库管理平台,一个应用同时托管 Git、Mercurial 和 Subversion 三种版本库,全部配置通过 Web 界面完成,无需外挂数据库与 Web 服务器。本文基于官方站点、官方博客与 GitHub 仓库的联网溯源(查询日期 2026-10-28),结合官方 apt 仓库实查的版本数据,给出认知全景与量化选型对比。安装部署见《SCM-Manager 3.12.2 Ubuntu 22.04 安装指南》,参数逐项验证见《SCM-Manager 3.12.2 配置参数详解》,日常运维命令见《SCM-Manager 3.12.2 常用命令与运维详解》。
一、产品定位与核心能力
1.1 定位与沿革
SCM-Manager 的官方自我定位是"分享与管理 Git、Mercurial 和 Subversion 仓库的最简单方式"(来源:GitHub 仓库简介,2026-10-28 查询)。项目由 Sebastian Sdorra 于 2010 年前后发起 1.x 系列,2020 年发布 Java 技术栈完全重写的 2.x,2023 年进入 3.x 系列,当前由 Cloudogu GmbH 提供社区维护与企业支持(来源:scm-manager.org 官网 "Powered by Cloudogu" 与 Support 页面,2026-10-28 查询)。
关键版本事实(来源:官方博客 scm-manager.org/blog,2026-10-28 查询):
- 3.8.0(2025-04-17 发布):正式落地 SQLite 存储支持,Pushlog 插件改用 SQLite 持久化;
- 3.12.0(2026-08-18 发布):仓库同步插件大幅增强,官方博客自述"React 更新改造最难的部分已经过去";
- 3.12.2:官方 apt 仓库 stable 渠道当前最新版(来源:
apt-cache policy scm-server在 Ubuntu 22.04.5 实测回显,Candidate 为 3.12.2,2026-10-28 查询)。
1.2 核心功能
依据官网功能页与仓库 README(2026-10-28 查询),SCM-Manager 开箱能力如下:
- 三种版本库统一托管:Git、Mercurial、Subversion 在同一界面、同一权限模型下管理,无需分别搭建三套服务;
- 零外部依赖:不需要 Apache、不需要安装数据库、不需要缓存中间件,单个 Java 进程即可运行(官网原文 "No web servers, databases or caches are required");
- 全 Web 化配置:用户、组、权限、仓库、插件全部通过 Web 界面管理,官方强调"无需改动配置文件";
- 中心化用户/组/权限:细粒度授权模型,可按用户或组精确授权;
- Level 3 RESTful API:Richardson 成熟度模型 L3 级别的 REST 服务(JSON 与 XML),覆盖全部管理功能,便于与企业内部流程集成;
- 灵活认证:内置认证之外可对接外部认证机制(LDAP、htpasswd 等,插件扩展);
- 插件体系:官方插件中心提供按类目分组的大量插件(代码审查、CI 触发、仓库同步等),Web 界面一键安装。
1.3 许可证与商业支持
SCM-Manager 采用 AGPL-3.0-only 许可证(来源:GitHub 仓库 license 字段与官网 "OpenSource" 版块,2026-10-28 查询)。AGPL 对"通过网络提供服务"的场景同样要求开放源代码,企业内部自托管使用不触发传染义务,但若对 SCM-Manager 本体做修改后对外提供网络服务,则须开放修改部分的源码。商业支持由 Cloudogu GmbH 提供(企业级 SLA),社区支持通过官方支持渠道进行。
二、技术架构与部署形态
2.1 技术栈
- 语言与运行时:Java(GitHub 仓库 language 字段为 Java,2026-10-28 查询)。3.x 要求 Java 17 运行时,官方 deb 包自动依赖 OpenJDK 17(Ubuntu 22.04.5 实测:安装后
java -version回显 OpenJDK 17.0.20.1); - Web 服务引擎:内置 Jetty(启动日志与
/opt/scm-server/bin/scm-server启动输出中可见Set http port to 8080、Jetty war 部署信息,3.12.2 实测); - 存储:仓库文件直接落盘(
/var/lib/scm/repositories),元数据自 3.8.0 起支持 SQLite(/var/lib/scm/scm.db),旧实例为 XML 存储(3.12.2 全新安装实测落盘为 scm.db); - 前端:React 单页应用(官方博客多次提及 React 更新改造,2026-10-28 查询);
- 构建体系:Gradle + Java 11 编译(GitHub README 构建说明,2026-10-28 查询)。
2.2 部署形态
官方支持五种分发形态(来源:官方文档 Installation 章节,2026-10-28 查询):Debian/Ubuntu 的 deb 包、Red Hat 系的 rpm 包、Windows 安装包、Unix 通用包、以及 K8s 编排形态(官方提供 Helm 图表,适用于集群化交付;单机场景仍以系统包 + systemd 托管为主流)。Ubuntu 22.04 单机安装的完整过程见本专栏《SCM-Manager 3.12.2 Ubuntu 22.04 安装指南》。
单机资源口径(Ubuntu 22.04.5 实测,3.12.2 全新安装):deb 包本体下载 102 MB,落盘 102 MB;服务首次启动后 Java 进程常驻内存约 420 MB(默认堆配置,systemctl status 的 Memory 字段实测值);无任何外部数据库进程。
三、量化选型对比
3.1 社区热度与版本节奏
下表数据来源:GitHub REST API repos/{owner}/{repo} 逐仓实查(查询日期 2026-10-28),GitLab CE 例外标注。
| 维度 | SCM-Manager | Gitea | Gogs | GitLab CE |
|---|---|---|---|---|
| GitHub Stars | 184 | 49,131 | 46,503 | 约 2.5 万(gitlabhq/gitlabhq,历史广泛引用口径,未当期核验) |
| Forks | 35 | 5,863 | 5,034 | — |
| 主语言 | Java | Go | Go | Ruby/Go |
| 许可证 | AGPL-3.0-only | MIT | MIT | 开源核心 + 商业分层 |
| 最近推送 | 2026-10-26 | 2025-06-20(GitHub 托管仓库停更,主仓库在 gitea.com) | 2025-06-09 | 持续活跃 |
| 当前稳定版 | 3.12.2(官方 apt 源 Candidate 实查) | 1.24.x(主仓库口径) | 0.13.x(长期小版本) | 周更节奏 |
三点解读:
- Stars 差距真实存在:SCM-Manager 的 GitHub 热度与 Gitea/Gogs 相差两个数量级,社区生态、第三方教程、问题检索命中量明显少于 Gitea。这不是活跃度问题(2026-10-26 仍有推送,官方博客 2026-08-18 仍发版),而是受众规模差异——SCM-Manager 的核心受众是需要"一个平台管三种 VCS"的存量 Mercurial/SVN 团队;
- Gitea 的 GitHub 托管仓库自 2025-06 起停更,对比 Gitea 活跃度应以 gitea.com 主仓库为准,上表数字仅反映 GitHub 侧沉淀;
- 发布节奏:SCM-Manager 3.x 保持月度级小版本 + 季度级特性版本(3.8.0→3.12.0 十一个月内 5 个特性版本),维护节奏健康。
3.2 功能与资源对比
| 维度 | SCM-Manager 3.12.2 | Gitea 1.24 | Gogs 0.13 | GitLab CE |
|---|---|---|---|---|
| 版本库类型 | Git + Mercurial + Subversion | Git | Git | Git |
| 内置代码评审 | 插件(Review Plugin 等) | Pull Request | 极简 PR | 内置 MR 全功能 |
| 内置 CI | 插件集成外部 CI | 内置 Actions | 无 | 内置 CI/CD |
| 数据库要求 | 无(内置 SQLite) | SQLite/PostgreSQL/MySQL | SQLite/PostgreSQL/MySQL | PostgreSQL(内置捆绑) |
| 最低内存量级 | 512 MB 内可运行(实测常驻约 420 MB) | 官方口径树莓派可跑 | 官方口径极低 | 官方最低 4 GB RAM(docs.gitlab.com 安装要求,长期稳定口径) |
| Web 化配置程度 | 几乎全部 | 大部分 | 大部分 | 部分(配置文件为主) |
| REST API 成熟度 | L3(官方口径) | L3 实践 | 基础 REST | 完整 |
选型结论:
- 需要 Mercurial 或 Subversion 与 Git 共存统一管理:SCM-Manager 几乎是开源自托管场景下的唯一成熟选择(同赛道仅 RhodeCode 可比,后者 Python 技术栈、双进程架构,资源占用更高);
- 纯 Git 团队、看重插件生态与内置 CI:选 Gitea;
- 追求开箱即用一体化 DevOps 平台且资源充足:选 GitLab CE;
- 极简 Git 托管、无需评审与 CI:Gogs 依然够用;
- 资源受限的边缘小团队要托管混合 VCS 资产:SCM-Manager 的 420 MB 常驻内存与零外部依赖是硬优势。
四、适用场景与选型建议
4.1 推荐场景
- 存量 Mercurial/SVN 资产的接管与统一授权(SCM-Manager 的立身之本);
- 中小团队的轻量代码托管:一个 Java 进程解决托管、用户、权限、API 四件事;
- 需要将代码仓库管理集成进自有运维平台:Level 3 REST API 全功能覆盖,自动化友好(本专栏《SCM-Manager 3.12.2 常用命令与运维详解》给出了 API 实操);
- 内网隔离环境:官方包仓库 + 离线 deb 包均可安装,无强制外联依赖。
4.2 谨慎场景
- 期望"装完即有完整 CI/CD 与评审流水线"的团队——SCM-Manager 的评审与 CI 均为插件集成外部系统,不是 GitLab 式一体化;
- 需要 GitHub 级社区插件生态与海量第三方集成的团队;
- 对 AGPL 传染条款敏感且计划深度修改源码再对外提供服务的商业产品团队(需法务评估)。
4.3 总结
SCM-Manager 是一条"窄而深"的赛道产品:以最小的部署 footprint 换取三种 VCS 的统一托管与全 Web 化管理。它的社区热度无法与 Gitea 相提并论,但在"混合 VCS + 轻量运维 + API 自动化"这一组合需求下,开源自托管市场缺乏同等定位的替代品。若你的资产里还有 Mercurial 或 Subversion,它值得进入候选名单首位;若只有 Git,Gitea 的综合生态优势更大。
溯源清单(查询日期均为 2026-10-28):scm-manager.org 官网与官方博客(3.12.0 发布公告、3.8.0 发布公告);scm-manager.org/docs 安装文档(Debian/Ubuntu、First Start-up 章节);GitHub REST API 仓库元数据(scm-manager/scm-manager、go-gitea/gitea、gogs/gogs);官方 apt 仓库 packages.scm-manager.org stable 渠道版本实查;Ubuntu 22.04.5 实测资源口径。文中标注"未当期核验"的 GitLab CE Stars 为历史广泛引用口径,仅作量级参考。