Skip to main content

A CLI tool to sync and update Git workflows and configurations across multiple repositories efficiently and consistently.

Project description

git-pilot

Sync workflows, configs, and more across 10+ repos in seconds using Helm-style templates.


GitHub stars PyPI version License


🚀 Why Git-Pilot?

Managing configuration and CI/CD files across 10, 20, or 100+ repositories is a nightmare.

git-pilot is your autopilot for repository file sync. It brings GitOps discipline, Helm-style templating, and one-command sync to modern DevOps pipelines.

🧠 Built for DevEx

  • One command to sync them all: Apply templates to any number of GitHub repos in one go.
  • Helm-style power: Use partials, macros (.tpl), and regex-driven rendering logic.
  • Preview before you push: Interactive side-by-side diffs before anything is committed.
  • State-aware syncs: Tracks changes and removes stale files automatically.
  • Per-repo flexibility: Custom branches, commit messages, and variable overrides.

🧰 What It Does

Feature Description
🔁 Multi-Repo Sync Render and push files across 1 or 100 repos with a single command
🧩 Helm-Style Templates Use Jinja2 with custom delimiters, includes, and reusable .tpl macros
🔍 Interactive Diff Viewer See what changes before you commit—created, updated, deleted files preview
🧬 Per-Repo Customization Branches, paths, commit messages, and injected variables
🧹 Auto-Cleanup Deletes stale files intelligently based on diff and state tracking
🌐 GitHub Native (for now) Built-in support for GitHub with extensible architecture for future providers

📦 Installation

pip install git-pilot

✨ Getting Started: First Sync in 5 Minutes

1. Initialize Template Directory

git-pilot init --template-dir my-templates

This creates a sample structure with:

  • Example templates (*.yml.j2)
  • Partials in includes/
  • Helper macros in _helpers.tpl
  • A working values.yml config

2. Customize Templates and Values

Edit my-templates/values.yml:

defaults:
  branch: main
  message: "git-pilot: update workflows"
  path: ".github/workflows"
  vars:
    ci_name: my-pipeline
    env: dev
  templates:
    - ".*\.j2$"

repos:
  - name: r3d-shadow/git-pilot-test-1
    vars:
      job_id: scan1
  - name: r3d-shadow/git-pilot-test-2
    branch: main # override
    vars:
      job_id: scan2
      env: prod # override

3. Run Your First Sync

cd my-templates

git-pilot sync \
  --token $GITHUB_TOKEN \
  --templates ./ \
  --values ./values.yml

✅ You’ll see a full visual diff. Confirm to sync. That’s it!

Demo GIF


📘 Docs


🛠️ Advanced Examples

  • Sync GitHub Actions, README.md, configs, policies, and more
  • Regex-targeted templates per repo
  • Environments like dev, staging, prod
  • Centralized secrets and configurations with overrides

→ See /example-template-dir for ready-to-copy setups


🤝 Contributing

We welcome contributors! Here's how to get started:

git clone https://github.com/r3d-shadow/git-pilot.git
cd git-pilot
python3 -m venv venv
source venv/bin/activate
pip install -e .
git-pilot

Open a PR with a clear description. See the Architecture Guide for more details.


🚀 Spread the Word

Just found this tool called git-pilot — sync your GitHub Actions, configs, and more across 10+ repos with a single command. Helm-style templates. Pure 🔥.

Tweet it. Star it. Fork it. Contribute.

Let’s build better DevOps pipelines together.


🪪 License

Apache-2.0 license — 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

git_pilot-0.1.6.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

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

git_pilot-0.1.6-py3-none-any.whl (21.5 kB view details)

Uploaded Python 3

File details

Details for the file git_pilot-0.1.6.tar.gz.

File metadata

  • Download URL: git_pilot-0.1.6.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for git_pilot-0.1.6.tar.gz
Algorithm Hash digest
SHA256 8271cb0229703f764cf30b66cd4a7a018a5d7e34fc8e0e53cc0fe40445232ace
MD5 14989f41b91e4076004e07a1c63a1c93
BLAKE2b-256 c1c1b14ce00c2de5877cd22f93050c882979e77fe326afac2b706f628c91b7f1

See more details on using hashes here.

File details

Details for the file git_pilot-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: git_pilot-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 21.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for git_pilot-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 09d90580df165d203a563ad1d317d8dc44083a210a8508fd067d109d1a14c87f
MD5 334fa86e573265926847afe972b142d6
BLAKE2b-256 1ed97a21088ae30743826529892780f5ab4863c368581e58104603c11a192fc8

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