Skip to main content

Multi-repository management tool for managing complex dependencies

Project description

Gordion

A powerful multi-repository management tool that helps you manage complex dependencies across multiple Git repositories with ease.

Features

  • Deterministic Dependency Management: Specify exact commits for reproducible builds
  • Diamond Dependency Resolution: Automatically resolves version conflicts when multiple repositories depend on a common repository
  • Intuitive Git-like Commands: Familiar commands like gor add, gor commit, gor push that work across all repositories
  • Smart Workspace Management: Automatically discovers and manages repositories in your workspace

Installation

pip install gordion

Quick Start

  1. Create a gordion.yaml file in your root repository:
repositories:
  my-library:
    url: https://github.com/myorg/my-library.git
    tag: v1.2.3
  my-app:
    url: https://github.com/myorg/my-app.git
    tag: main
  1. Clone and set up your workspace:
# Clone repositories defined in gordion.yaml
gor -u

# Check status across all repositories
gor status

# Make changes and commit across repos
gor add .
gor commit -m "Update dependencies"
gor push

Key Commands

  • gor -u - Update/clone all repositories to their specified versions
  • gor status - Show status across all repositories
  • gor add <pathspec> - Stage changes in all repositories
  • gor commit -m <message> - Commit changes and update dependency versions
  • gor push - Push changes in all repositories
  • gor -w - Show current workspace path
  • gor -f <repo-name> - Find path to a specific repository

Why Gordion?

Gordion solves the "diamond dependency problem" in multi-repository projects:

    A
   / \
  B   C
   \ /
    D

When repository A depends on B and C, which both depend on D, Gordion ensures all repositories use the same version of D, preventing version conflicts.

Development Setup

Prerequisites

# Install nix
curl -L https://nixos.org/nix/install | sh

For cloning with HTTPS

  • Generate a new token with access to Contents
  • When it asks for username, use token as password
git config --global color.ui always

Testing

Run all tests:

nox -s tests

Run specific test files:

nox -s tests -- test/test_repository.py -s
nox -s tests -- test/test_tree.py -s
nox -s tests -- test/test_cache.py -s
nox -s tests -- test/test_status.py -s
nox -s tests -- test/test_workspace.py -s

Linting

nox -s lint

License

MIT License - see LICENSE file for details

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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

gordion-1.0.0.tar.gz (39.0 kB view details)

Uploaded Source

Built Distribution

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

gordion-1.0.0-py3-none-any.whl (32.9 kB view details)

Uploaded Python 3

File details

Details for the file gordion-1.0.0.tar.gz.

File metadata

  • Download URL: gordion-1.0.0.tar.gz
  • Upload date:
  • Size: 39.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for gordion-1.0.0.tar.gz
Algorithm Hash digest
SHA256 3c2907cd689e6445e9d173d50b60028965f5c6e748ccfc3d57d52a4881e59df5
MD5 8615dbd6007d8ae5c3d06a66f6330414
BLAKE2b-256 ba3495df34d060fba896882489e95e160be9f4c8417d61454dab6b116fddd5a8

See more details on using hashes here.

File details

Details for the file gordion-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: gordion-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 32.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for gordion-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a67e24df905d27392c4eef814f9ba0590222ab4b0e26ce4e0b1ccb78887665a4
MD5 999dff2c7accb7012b26f5dbb5e1471d
BLAKE2b-256 ad2512e0eeb4616b66e669825943df394db4f406fc3ccfd9f727ac8ae83eb16c

See more details on using hashes here.

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