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.
🚀 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.ymlconfig
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
- Templating Guide — Includes, macros, helpers, and Jinja2 syntax
- Configuration Reference — All config options and repo overrides
- Architecture Guide — Extending providers and internal design
- Contributing to
git-pilot - Roadmap
🛠️ 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78be0fdc6c03282f7c73e02a2858379f05b5b17bc08240ed5bfe1141f97cd929
|
|
| MD5 |
0cb76a13a3be603af269b1007578830b
|
|
| BLAKE2b-256 |
dcf1744c6c51d316a77cec0871c2a3800bff479df1e69c6f800eb95d84062436
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef5b775dda3eb3c632f33853c7d14b4f6c822308f0f828106485a68b3faa5098
|
|
| MD5 |
69931acb4f2899ea9000bd4bb471e9fd
|
|
| BLAKE2b-256 |
419a4aafa6604a8e3dd975dd6edc471427cc2dcd0039d3589fa86fb91b8f6b91
|