MCPSERV.CLUB
SCM Manager

SCM Manager

Self-Hosted

Simplify Git, Mercurial, and Subversion hosting

Active(85)
151stars
0views
Updated 3 days ago
SCM Manager screenshot 1
1 / 3

Overview

Discover what makes SCM Manager powerful

SCM‑Manager is a self‑hosted source control server that unifies **Git, Mercurial, and Subversion** under a single, web‑based interface. From a technical standpoint it functions as a **stand‑alone Java application** that bundles its own HTTP server, persistence layer, and authentication mechanisms. This design eliminates the need for external web servers or database installations, making it attractive for developers who prefer minimal operational overhead while still requiring a feature‑rich SCM platform.

Language & Runtime

Frameworks

Data Store

Plugin System

Overview

SCM‑Manager is a self‑hosted source control server that unifies Git, Mercurial, and Subversion under a single, web‑based interface. From a technical standpoint it functions as a stand‑alone Java application that bundles its own HTTP server, persistence layer, and authentication mechanisms. This design eliminates the need for external web servers or database installations, making it attractive for developers who prefer minimal operational overhead while still requiring a feature‑rich SCM platform.

Architecture

  • Language & Runtime: Java 11, compiled with Gradle. The project is structured as a collection of Maven‑style modules that produce a single executable WAR and an optional Docker image.
  • Frameworks: Uses the JAX‑RS stack for its REST API, Spring Boot (or a lightweight alternative) for dependency injection and configuration, and Hibernate/JPA for optional persistence.
  • Data Store: By default it ships with an embedded H2 database for quick starts, but supports PostgreSQL, MySQL, and MariaDB via JDBC. No caching layer is required; the application relies on the database’s native mechanisms for concurrency control.
  • Plugin System: Exposes a simple SPI‑based plugin API that allows developers to hook into lifecycle events, add custom authentication providers, or extend the REST surface. Plugins are distributed as JARs placed in a dedicated plugins/ directory.

Core Capabilities

  • RESTful API: Full CRUD operations for repositories, users, groups, and permissions. Supports both JSON and XML payloads, with pagination, filtering, and HATEOAS links for discoverability.
  • Web UI: A modern, responsive front‑end built with React or Angular (depending on the build variant) that consumes the REST API. The UI is fully configurable via the web interface, eliminating any need to edit YAML/INI files.
  • Authentication & Authorization: Supports LDAP, OAuth2, and an embedded user store. Permissions are fine‑grained at the repository level (read/write/admin) and can be assigned to individual users or groups.
  • Repository Management: Seamless creation, deletion, and mirroring of Git, Mercurial, or Subversion repositories. Hooks for pre‑commit validation and post‑push notifications are available out of the box.

Deployment & Infrastructure

SCM‑Manager can run as a stand‑alone JAR (java -jar scm-manager.jar) or inside a Docker container. The Docker image is built with Alpine Linux, reducing the footprint to under 200 MB. For production use, it is recommended to deploy behind a reverse proxy (NGINX/Traefik) for TLS termination and load balancing. Horizontal scaling is achievable via a shared database and stateless application instances, while the embedded H2 mode is best suited for development or small teams.

Integration & Extensibility

  • Plugin API: Developers can create custom plugins that expose new REST endpoints, modify UI components, or implement bespoke authentication schemes.
  • Webhooks: Out‑of‑the‑box support for GitHub/GitLab style webhooks, allowing CI/CD pipelines to react to repository events.
  • SDKs & Client Libraries: While not bundled, the REST API is well‑documented and can be consumed by any HTTP client. The project’s Javadoc provides a reference for internal classes that may serve as a starting point for advanced integrations.
  • Custom Themes: The UI can be themed by overriding CSS variables and injecting custom JavaScript, enabling branding or workflow‑specific visual cues.

Developer Experience

The build system is Gradle‑based, with a rich set of tasks (run, build, distribution) that streamline development and CI pipelines. Documentation is hosted on the official site, featuring a comprehensive API guide, plugin developer tutorial, and configuration reference. The AGPL‑3.0 license encourages community contributions while protecting the integrity of the codebase. A dedicated support forum and an active mailing list provide timely assistance for integration challenges.

Use Cases

  • Enterprise Code Hosting: Companies that need a single, self‑managed solution for multiple VCS types can deploy SCM‑Manager behind their corporate firewall.
  • Continuous Integration: Coupled with Jenkins or GitLab CI, the webhook system triggers builds on commit events.
  • Educational Platforms: Universities can host course repositories for students, leveraging the fine‑grained permission model to control access.
  • Open Source Projects: Projects that prefer self‑hosting over public services can use SCM‑Manager to maintain control over data and branding.

Advantages

SCM‑Manager offers performance through a lightweight Java runtime, flexibility via its multi‑VCS support and plugin system, and cost‑effectiveness by eliminating the need for separate web servers or databases. Its AGPL license ensures that any derivative work remains open, fostering a healthy ecosystem of plugins and integrations. For developers who value full control over their source‑control infrastructure without the operational complexity of traditional servers, SCM‑Manager delivers a compelling balance of features and simplicity.

Open SourceReady to get started?

Join the community and start self-hosting SCM Manager today