Skip to main content

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

  • configinit, path, validate, show, set
  • doctor — tokens and optional API reachability
  • local 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

repoman_cli-0.4.2.tar.gz (139.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

repoman_cli-0.4.2-py3-none-any.whl (37.1 kB view details)

Uploaded Python 3

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

Hashes for repoman_cli-0.4.2.tar.gz
Algorithm Hash digest
SHA256 7a044475a2ceba951b5d479e29e1ba4641690bb0847fc2cabc4d69bb232670d3
MD5 b0840d02f48279db5c5aeb5a36067ca3
BLAKE2b-256 785daa5a9174cf113fd0c0a5b600eaa5180e793774902a2fbb5572ae56c4f317

See more details on using hashes here.

Provenance

The following attestation bundles were made for repoman_cli-0.4.2.tar.gz:

Publisher: release.yml on dfabianus/repoman

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for repoman_cli-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 892f391a2fca514b346b2a8945960488517f8c4df6e0e067423ca09923ce0524
MD5 4403fa7fe10928fe68afb6096c18c4ae
BLAKE2b-256 8c8d93e6a96d44d9936cdaa371d9caf91070141718cbd162c062aff550bbd9fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for repoman_cli-0.4.2-py3-none-any.whl:

Publisher: release.yml on dfabianus/repoman

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page