Skip to main content

No project description provided

Project description

Kalandra

Kalandra can be used to mirror multiple Git repositories across different locations in an efficient manner without having to keep a full copy of any of the repositories.

How it works

All changes in Git are kept as objects (commits, tags, trees, etc.). Branches and tags are just references to objects. The Git Protocol allows for discovering what objects are present on the given server. It also allows to negotiate the minimal set of objects (or deltas of objects) that need to be transferred to synchronize with the server.

The naive approach to mirroring a Git repository is:

# First time
git clone --mirror upstream

# Every X minutes
git fetch --prune upstream
git push --mirror downstream

This works fine most of the time, but requires that you maintain a local copy the repository that you are mirroring.

What Kalandra does instead, is to that it acts as a broker between the two servers. No data is persisted by the running service. We negotiate the minimal pack needed to syncronize the mirror with upstream and then only transfer the pack.

Roadmap

Completed features:

  • support for file:// targets.
  • basic support for ssh:// targets using AsyncSSH.

Planned features:

  • support for http:// targets.
  • package as OCI image.
  • optimize use of capabilities like ofs-delta.
  • add server mode where you can trigger a sync round for pre-configured targets over HTTP

Contributing

TBD

License

Copyright (c) 2024 Łukasz Rekucki

Apache License, Version 2.0

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

kalandra-0.1.0.dev2.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

kalandra-0.1.0.dev2-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file kalandra-0.1.0.dev2.tar.gz.

File metadata

  • Download URL: kalandra-0.1.0.dev2.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for kalandra-0.1.0.dev2.tar.gz
Algorithm Hash digest
SHA256 3ccf9d9efd963f5aed63f032618e2bacd2c8ca46e206cca2447f43eda758260c
MD5 a7f00fa64bdf295c1fb23ebc923c37ec
BLAKE2b-256 9b47c2b241920b4dd9e6a58f8fb62c1e812ddd173b8152e6cbcb3cf00bdb68a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalandra-0.1.0.dev2.tar.gz:

Publisher: publish.yml on lqc/kalandra

Attestations:

File details

Details for the file kalandra-0.1.0.dev2-py3-none-any.whl.

File metadata

File hashes

Hashes for kalandra-0.1.0.dev2-py3-none-any.whl
Algorithm Hash digest
SHA256 4b2f7970b48518053243c694d0e46fa011f4037cff397677ee5356b5e0a98a05
MD5 7f6b50902b68671a267aa851f3af5826
BLAKE2b-256 82b21c4a8a2f9c967e923e9dc993a9d8cc766ef3285aec38797283214fb0fbf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalandra-0.1.0.dev2-py3-none-any.whl:

Publisher: publish.yml on lqc/kalandra

Attestations:

Supported by

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