Unified version control system management for .NET.
VcsManager provides a core abstraction package plus one package per supported provider, so applications can work with GitHub, GitLab, Azure DevOps, and Gitea through a consistent API.
The repository is under active development. The core contracts, builder, configuration readers, operational layers, and tests are available. The GitHub, GitLab, Azure DevOps, and Gitea providers are available.
src/
VcsManager/ Core abstractions (VcsManager.Core)
VcsManager.GitHub/ GitHub provider
VcsManager.GitLab/ GitLab provider
VcsManager.AzureDevOps/ Azure DevOps provider
VcsManager.Gitea/ Gitea provider
tests/
VcsManager.Tests/
VcsManager.GitHub.Tests/
VcsManager.GitLab.Tests/
VcsManager.AzureDevOps.Tests/
VcsManager.Gitea.Tests/
VcsManager.IntegrationTests/
samples/
docs/ Docusaurus documentation site
- .NET 10 SDK or later
- Linux, macOS, or Windows
- Node.js 20 or later for the documentation site
dotnet restore
dotnet build
dotnet testIntegration tests are a console runner with YAML configs. See
tests/VcsManager.IntegrationTests/README.md.
dotnet pack src/VcsManager/VcsManager.csproj -c ReleaseThe core package ID is VcsManager.Core.
The sample runs the full repository and pull request flow with the built-in
in-memory demo provider. For the same flow against a real provider, see the
GitHub provider page, the
GitLab provider page, the
Azure DevOps provider page, or the
Gitea provider page.
cd samples/VcsManager.Samples
VCS_PROVIDER=demo dotnet runOptional owner:
VCS_PROVIDER=demo VCS_DEMO_OWNER=my-owner dotnet runYAML configuration:
VCS_CONFIG_FILE=./sample.yaml dotnet runprovider:
demo: {}The sample exits with status 1 when no configuration is present, before it
runs any operation.
Use VcsProviderBuilder with UseProvider, environment variables, or YAML.
Environment variables use this shape:
VCS_PROVIDER=github
VCS_GITHUB_TOKEN=<token>
VCS_GITHUB_BASE_URL=https://github.example.com/api/v3VCS_{PROVIDER}_{KEY} maps to a setting key. Underscores after the provider
name become dots, so VCS_GITHUB_BASE_URL becomes base.url.
YAML uses one provider block:
provider:
github:
token: <token>
base:
url: https://github.example.com/api/v3The documentation site is built with Docusaurus:
https://mrhamburg.github.io/VcsManager/
Run it locally:
cd docs
npm install
npm startBuild the static site:
cd docs
npm run buildSource documentation:
- Introduction
- Installation
- Quick start
- Configuration
- Providers overview
- Provider capability matrix
- GitHub provider
- GitLab provider
- Azure DevOps provider
- Gitea provider
- Advanced usage
- API reference
- Architecture decision records
Licensed under either of the following, at your option:
- MIT License (LICENSE-MIT)
- Apache License 2.0 (LICENSE-APACHE)