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.13
  • 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.1.tar.gz (120.5 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.1-py3-none-any.whl (37.1 kB view details)

Uploaded Python 3

File details

Details for the file repoman_cli-0.4.1.tar.gz.

File metadata

  • Download URL: repoman_cli-0.4.1.tar.gz
  • Upload date:
  • Size: 120.5 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.1.tar.gz
Algorithm Hash digest
SHA256 570503db8799f597404641a8aa1caef997cc7a987272eb1699614ead5c68807d
MD5 3d3fa2a526cb1ccfd471a14fbc24f26a
BLAKE2b-256 92cd9e5e3528a40bdf71d617d2e173699ffee17f6bc9efa2dc8f1c27ec443da0

See more details on using hashes here.

Provenance

The following attestation bundles were made for repoman_cli-0.4.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: repoman_cli-0.4.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 04d8b8d2c00ca388d169a58383827d4d34529f9bfbebf1f4d2deb4a99e53e8c1
MD5 586acd0959f04a874f5ed7117c4828f8
BLAKE2b-256 58043172d0a898784eed3bde41ce7b37598c64da198f46e30180ad0517d857de

See more details on using hashes here.

Provenance

The following attestation bundles were made for repoman_cli-0.4.1-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