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.2.0.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.2.0-py3-none-any.whl (21.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: git_pilot-0.2.0.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.2.0.tar.gz
Algorithm Hash digest
SHA256 1842b158fe575e87921ff9ad0c12265c8203a9d90975a73d6ee1430a6efb66f8
MD5 fe806ec04a026dd6dddd548e41f530af
BLAKE2b-256 e2fab81cb428ef208602f5c712ed0c1b14a73bc0adf723bb8571b8dac4fcb242

See more details on using hashes here.

File details

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

File metadata

  • Download URL: git_pilot-0.2.0-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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 930a9cd8f0ca428b80576cdefe7d0677728969698aa6ccd119670b41a21c9d53
MD5 dd8f64c140581e1db03ce43b724a5daf
BLAKE2b-256 9bea1899caa67973954fc4cd50f49708c9db6526f0abb82f70725f5b848292e1

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