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!


📘 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:

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.5.tar.gz (16.6 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.5-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: git_pilot-0.1.5.tar.gz
  • Upload date:
  • Size: 16.6 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.5.tar.gz
Algorithm Hash digest
SHA256 78be0fdc6c03282f7c73e02a2858379f05b5b17bc08240ed5bfe1141f97cd929
MD5 0cb76a13a3be603af269b1007578830b
BLAKE2b-256 dcf1744c6c51d316a77cec0871c2a3800bff479df1e69c6f800eb95d84062436

See more details on using hashes here.

File details

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

File metadata

  • Download URL: git_pilot-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 21.1 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 ef5b775dda3eb3c632f33853c7d14b4f6c822308f0f828106485a68b3faa5098
MD5 69931acb4f2899ea9000bd4bb471e9fd
BLAKE2b-256 419a4aafa6604a8e3dd975dd6edc471427cc2dcd0039d3589fa86fb91b8f6b91

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