Declarative multi-forge Git workspace sync and mirror management
Project description
repoman
Declarative multi-forge Git workspace sync — preview-first CLI that plans and applies local clones (and later forge-side mirrors) from one YAML file. Works on Linux, macOS, and Windows.
| Status | Meaning |
|---|---|
OK |
No action needed |
WOULD UPDATE |
Preview of a planned change |
UPDATED |
Change applied |
SKIP |
Left unchanged (e.g. dirty tree, non–fast-forward) |
WARN |
Informational issue |
ERROR |
Failure |
Documentation
| Resource | Description |
|---|---|
| Getting started | Install, first config, tokens, first sync (start here) |
| Published docs | MkDocs site (after GitHub Pages is enabled — see Deployment) |
| Full docs site | MkDocs index — build with uv run mkdocs serve |
| Design spec | Architecture, schema, roadmap |
| Examples | Runnable sample commands and namespace include / exclude recipes |
| Examples (repo) | Safe runnable YAML under examples/ |
Requirements
- Python ≥ 3.11
- Git on
PATH - uv — environments and CI
Install
From PyPI (recommended)
pip install repoman-cli
# or: uv pip install repoman-cli
repoman --version
The PyPI package name is repoman-cli; the CLI command is still repoman.
From a clone (development)
git clone <this-repo-url> repoman && cd repoman
uv sync --all-groups
uv run repoman --version
Optional: install the CLI into the active environment from the checkout:
uv pip install .
repoman --version
First-time setup (5 minutes)
1. Create configuration
uv run repoman config init
uv run repoman config path # shows where repoman.yaml was created
| Platform | Default config directory |
|---|---|
| Linux / macOS | ~/.config/repoman/ |
| Windows | %USERPROFILE%\.repoman\ |
Set REPOMAN_HOME to use a different directory on any OS, or pass --config PATH per command.
2. Edit repoman.yaml
Set paths.workspace_root, configure remotes, and add at least one namespaces entry (or explicit repos).
See getting started for a GitHub namespace example and token setup.
3. Tokens
Use environment variables (token_env in YAML) or credentials.toml beside repoman.yaml with
token_credentials — never put tokens in YAML. Details: Getting started § Tokens.
4. Validate, preview, apply
uv run repoman config validate
uv run repoman doctor
uv run repoman local plan # preview only
uv run repoman local status # read-only; add --json for automation
uv run repoman local sync --write # clones / fetch / ff-only merges
Adjust settings without an editor:
uv run repoman config set paths.workspace_root '~/repositories' --write
Safety: local sync without --write never mutates clones; dirty trees and non–fast-forward states
produce SKIP, not silent data loss.
What's implemented
config—init,path,validate,show,setdoctor— tokens and optional API reachabilitylocal plan/local sync/local status— discovery, layout, guarded git operations
Not yet shipped: mirrors — see roadmap.
Development
uv sync --all-groups
uv run ruff check .
uv run ruff format --check .
uv run pytest
uv run mkdocs build --strict
uv run mkdocs serve # local docs at http://127.0.0.1:8000
Contributor rules: AGENTS.md (backlog in .adr.md, chatlogs under docs/chatlogs/).
License
Released under the MIT License — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file repoman_cli-0.4.2.tar.gz.
File metadata
- Download URL: repoman_cli-0.4.2.tar.gz
- Upload date:
- Size: 139.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a044475a2ceba951b5d479e29e1ba4641690bb0847fc2cabc4d69bb232670d3
|
|
| MD5 |
b0840d02f48279db5c5aeb5a36067ca3
|
|
| BLAKE2b-256 |
785daa5a9174cf113fd0c0a5b600eaa5180e793774902a2fbb5572ae56c4f317
|
Provenance
The following attestation bundles were made for repoman_cli-0.4.2.tar.gz:
Publisher:
release.yml on dfabianus/repoman
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repoman_cli-0.4.2.tar.gz -
Subject digest:
7a044475a2ceba951b5d479e29e1ba4641690bb0847fc2cabc4d69bb232670d3 - Sigstore transparency entry: 1608757619
- Sigstore integration time:
-
Permalink:
dfabianus/repoman@028b2fb549b42b2a2cb5c4bf5b13bc2c4c16f317 -
Branch / Tag:
refs/tags/v0.4.3 - Owner: https://github.com/dfabianus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@028b2fb549b42b2a2cb5c4bf5b13bc2c4c16f317 -
Trigger Event:
push
-
Statement type:
File details
Details for the file repoman_cli-0.4.2-py3-none-any.whl.
File metadata
- Download URL: repoman_cli-0.4.2-py3-none-any.whl
- Upload date:
- Size: 37.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
892f391a2fca514b346b2a8945960488517f8c4df6e0e067423ca09923ce0524
|
|
| MD5 |
4403fa7fe10928fe68afb6096c18c4ae
|
|
| BLAKE2b-256 |
8c8d93e6a96d44d9936cdaa371d9caf91070141718cbd162c062aff550bbd9fa
|
Provenance
The following attestation bundles were made for repoman_cli-0.4.2-py3-none-any.whl:
Publisher:
release.yml on dfabianus/repoman
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repoman_cli-0.4.2-py3-none-any.whl -
Subject digest:
892f391a2fca514b346b2a8945960488517f8c4df6e0e067423ca09923ce0524 - Sigstore transparency entry: 1608757802
- Sigstore integration time:
-
Permalink:
dfabianus/repoman@028b2fb549b42b2a2cb5c4bf5b13bc2c4c16f317 -
Branch / Tag:
refs/tags/v0.4.3 - Owner: https://github.com/dfabianus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@028b2fb549b42b2a2cb5c4bf5b13bc2c4c16f317 -
Trigger Event:
push
-
Statement type: