SCM-Manager 介绍与选型指南

SCM-Manager 认知与选型:Cloudogu 维护的开源三合一版本库托管平台定位、Java+Jetty+SQLite 技术栈与零依赖架构,与 Gitea/Gogs/GitLab CE 的 GitHub API 量化对比,官方博客与 apt 源版本溯源,查询日期 2026-10-28。

SCM ManagerSCM Manager版本控制代码托管MercurialUbuntu 22.042026/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 开箱能力如下:

  1. 三种版本库统一托管:Git、Mercurial、Subversion 在同一界面、同一权限模型下管理,无需分别搭建三套服务;
  2. 零外部依赖:不需要 Apache、不需要安装数据库、不需要缓存中间件,单个 Java 进程即可运行(官网原文 "No web servers, databases or caches are required");
  3. 全 Web 化配置:用户、组、权限、仓库、插件全部通过 Web 界面管理,官方强调"无需改动配置文件";
  4. 中心化用户/组/权限:细粒度授权模型,可按用户或组精确授权;
  5. Level 3 RESTful API:Richardson 成熟度模型 L3 级别的 REST 服务(JSON 与 XML),覆盖全部管理功能,便于与企业内部流程集成;
  6. 灵活认证:内置认证之外可对接外部认证机制(LDAP、htpasswd 等,插件扩展);
  7. 插件体系:官方插件中心提供按类目分组的大量插件(代码审查、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-ManagerGiteaGogsGitLab CE
GitHub Stars18449,13146,503约 2.5 万(gitlabhq/gitlabhq,历史广泛引用口径,未当期核验)
Forks355,8635,034—
主语言JavaGoGoRuby/Go
许可证AGPL-3.0-onlyMITMIT开源核心 + 商业分层
最近推送2026-10-262025-06-20(GitHub 托管仓库停更,主仓库在 gitea.com)2025-06-09持续活跃
当前稳定版3.12.2(官方 apt 源 Candidate 实查)1.24.x(主仓库口径)0.13.x(长期小版本)周更节奏

三点解读:

  1. Stars 差距真实存在:SCM-Manager 的 GitHub 热度与 Gitea/Gogs 相差两个数量级,社区生态、第三方教程、问题检索命中量明显少于 Gitea。这不是活跃度问题(2026-10-26 仍有推送,官方博客 2026-08-18 仍发版),而是受众规模差异——SCM-Manager 的核心受众是需要"一个平台管三种 VCS"的存量 Mercurial/SVN 团队;
  2. Gitea 的 GitHub 托管仓库自 2025-06 起停更,对比 Gitea 活跃度应以 gitea.com 主仓库为准,上表数字仅反映 GitHub 侧沉淀;
  3. 发布节奏:SCM-Manager 3.x 保持月度级小版本 + 季度级特性版本(3.8.0→3.12.0 十一个月内 5 个特性版本),维护节奏健康。

3.2 功能与资源对比

维度SCM-Manager 3.12.2Gitea 1.24Gogs 0.13GitLab CE
版本库类型Git + Mercurial + SubversionGitGitGit
内置代码评审插件(Review Plugin 等)Pull Request极简 PR内置 MR 全功能
内置 CI插件集成外部 CI内置 Actions无内置 CI/CD
数据库要求无(内置 SQLite)SQLite/PostgreSQL/MySQLSQLite/PostgreSQL/MySQLPostgreSQL(内置捆绑)
最低内存量级512 MB 内可运行(实测常驻约 420 MB)官方口径树莓派可跑官方口径极低官方最低 4 GB RAM(docs.gitlab.com 安装要求,长期稳定口径)
Web 化配置程度几乎全部大部分大部分部分(配置文件为主)
REST API 成熟度L3(官方口径)L3 实践基础 REST完整

选型结论:

  1. 需要 Mercurial 或 Subversion 与 Git 共存统一管理:SCM-Manager 几乎是开源自托管场景下的唯一成熟选择(同赛道仅 RhodeCode 可比,后者 Python 技术栈、双进程架构,资源占用更高);
  2. 纯 Git 团队、看重插件生态与内置 CI:选 Gitea;
  3. 追求开箱即用一体化 DevOps 平台且资源充足:选 GitLab CE;
  4. 极简 Git 托管、无需评审与 CI:Gogs 依然够用;
  5. 资源受限的边缘小团队要托管混合 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 为历史广泛引用口径,仅作量级参考。