Skip to main content

Project Logo

The Lupaxa GitHub Toolbox
Part of The Lupaxa Project


lupaxa-github-repo-sync

A command-line application that clones, organises, and safely synchronises large collections of GitHub repositories from a single declarative YAML, JSON, or JSON5 configuration.

Unlike many repository synchronisation tools, it does not assume every repository can be updated automatically. Each repository is inspected before any Git operation, so only repositories in a safe state are modified.

Features

  • Safe repository inspection before synchronisation
  • Automatic cloning of missing repositories
  • Fast-forward updates where safe
  • Protection against unsafe local states
  • HTTPS and SSH clone protocols
  • YAML, JSON, or JSON5 configuration with inherited defaults
  • Multiple GitHub organisations, aliases, and destination paths
  • Concurrent clone, update, and status checks (--workers, default: CPU count)
  • Ordered per-repository output (alphabetical by GitHub name after load)
  • Rich console output with progress reporting
  • Configuration validation and synchronisation plan preview
  • Status check (optional fetch of tracking refs)
  • Transient GitHub SSH retries during bulk sync
  • Cross-platform: macOS, Linux, and Windows

Installation

From PyPI

pip install lupaxa-github-repo-sync

Verify the installation:

grs --version

or:

github-repo-sync --version

The shorter grs command is used in the examples below.

From source (development mode)

pip install -e ".[dev]"

Quick Start

Create ~/.github-repo-sync.yaml:

config:
  clone_path: ~/Desktop/GitMaster
  clone_protocol: ssh

organisations:
  - name: the-lupaxa-project
    alias: Lupaxa/TheLupaxaProject
    repositories:
      - name: .github
        alias: github
      - name: workflows
      - name: brand-assets

Local layout resolves to clone_path/<organisation-alias>/<repository-alias-or-name>.

Organisation aliases may be a single directory name or a relative path under clone_path. Repository aliases must remain a single directory name.

If --config is not specified, the application looks for ~/.github-repo-sync.yaml, then .yml, then .json, then .json5. Config files may be YAML, JSON, or JSON5.

Validate the configuration:

grs --validate

Review the synchronisation plan:

grs --plan

Synchronise your repositories:

grs

Command-Line Interface

Synchronisation is the default operation.

Command Description
grs Synchronise all configured repositories.
grs --validate Validate the configuration and exit.
grs --plan Display the resolved synchronisation plan and exit.
grs --status Check repositories for a clean, synchronised state (may fetch tracking refs).

Use -c FILE / --config FILE to point at a different YAML, JSON, or JSON5 file.

grs --config work.yaml --validate
grs --status --ignore-clean --offline
grs --recover-rewritten-history
grs --workers 8
grs --results-table

Documentation

Online documentation:

Documentation

Serve the docs locally:

mkdocs serve

Then open the local URL printed by MkDocs in your browser.

Development

Clone the repository and install development dependencies:

pip install -e ".[dev]"

Useful make targets:

make test   # run tests
make type   # type checking (mypy)
make check  # lint, type check, and tests
The Lupaxa Project Footer

Metadata

Release files for lupaxa-github-repo-sync 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lupaxa-github-repo-sync 0.1.4
File Size Uploaded
lupaxa_github_repo_sync-0.1.4.tar.gz 47.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lupaxa-github-repo-sync 0.1.4
File Interpreter ABI Platform
lupaxa_github_repo_sync-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 92.5 kB

Release files / lupaxa_github_repo_sync-0.1.4.tar.gz

Download URL lupaxa_github_repo_sync-0.1.4.tar.gz
Size 47.4 kB
Tags Source
SHA-256 checksum
How to use checksums
cbb842a37bd14d59d5b126c2655a480f05b0deaa2ff68ecddcd8786757addfc9
BLAKE2b-256 checksum
How to use checksums
025be7d2d7185b5c6ec0618021a05d58e12d28f95ba50c215e003b68e1ecee8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.

Transparency log

Release files / lupaxa_github_repo_sync-0.1.4-py3-none-any.whl

Download URL lupaxa_github_repo_sync-0.1.4-py3-none-any.whl
Size 45.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bf6ddcbb6b7b273a99cd22acb7d886b211a745c007051299608c0c29f71e674c
BLAKE2b-256 checksum
How to use checksums
2c889c5b4bc739588c0cce704127848922d6f00399e6f9a06167cdff6b2a7a60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page