| Crates.io | repoverlay |
| lib.rs | repoverlay |
| version | 0.2.0 |
| created_at | 2026-01-07 00:40:05.510091+00 |
| updated_at | 2026-01-26 01:31:55.972307+00 |
| description | Overlay config files into git repositories without committing them |
| homepage | https://github.com/tylerbutler/repoverlay |
| repository | https://github.com/tylerbutler/repoverlay |
| max_upload_size | |
| id | 2027218 |
| size | 499,827 |
Apply configuration files to git repositories without committing them.
Files are symlinked (or copied with --copy) from overlay sources and automatically excluded from git tracking via .git/info/exclude.
| Task | Command |
|---|---|
| Apply overlay | repoverlay apply <source> |
| Check status | repoverlay status |
| Remove overlay | repoverlay remove <name> |
| Remove all | repoverlay remove --all |
| Update from GitHub | repoverlay update |
| Restore after git clean | repoverlay restore |
| Create overlay | repoverlay create <name> |
| Sync changes back | repoverlay sync <name> |
| Switch overlays | repoverlay switch <source> |
brew install tylerbutler/tap/repoverlay
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tylerbutler/repoverlay/releases/latest/download/repoverlay-installer.sh | sh
irm https://github.com/tylerbutler/repoverlay/releases/latest/download/repoverlay-installer.ps1 | iex
cargo install repoverlay
git clone https://github.com/tylerbutler/repoverlay
cd repoverlay
cargo install --path .
# From local directory
repoverlay apply /path/to/overlay
# From GitHub (uses default branch)
repoverlay apply https://github.com/owner/repo
# From GitHub with specific branch/tag
repoverlay apply https://github.com/owner/repo/tree/v1.0.0
repoverlay apply https://github.com/owner/repo --ref develop
# From a subdirectory within a repo
repoverlay apply https://github.com/owner/repo/tree/main/overlays/rust
# From overlay repository
repoverlay apply org/repo/overlay-name
# Options
repoverlay apply ./overlay --target /path/to/repo # Apply to specific directory
repoverlay apply ./overlay --copy # Copy instead of symlink
repoverlay apply ./overlay --name my-config # Custom overlay name
repoverlay remove # Interactive (lists applied overlays)
repoverlay remove my-overlay # Remove specific overlay
repoverlay remove --all # Remove all overlays
repoverlay status # Show all applied overlays
repoverlay status --name my-overlay # Show specific overlay
repoverlay update # Check and apply updates to all GitHub overlays
repoverlay update --dry-run # Check without applying
repoverlay update my-overlay # Update specific overlay
repoverlay restore # Restore overlays from external backup
repoverlay restore --dry-run # Preview what would be restored
Create overlays and store them in the overlay repository:
# Short form: detect org/repo from git remote
repoverlay create my-overlay # Creates org/repo/my-overlay
# Explicit form: specify full path
repoverlay create microsoft/vscode/ai-config # Creates microsoft/vscode/ai-config
# Include specific files
repoverlay create my-overlay --include .claude/ --include CLAUDE.md
# Local output (no overlay repo)
repoverlay create --local ./output --include .envrc
# Preview what would be created
repoverlay create my-overlay --dry-run
# Overwrite existing overlay
repoverlay create my-overlay --force
After modifying files in an applied overlay, sync changes back to the overlay repo:
repoverlay sync my-overlay # Sync changes from applied overlay
repoverlay sync org/repo/my-overlay # Explicit path
repoverlay sync my-overlay --dry-run # Preview what would be synced
Both create and sync automatically commit and push to the remote overlay repo.
Replace all existing overlays with a new one:
repoverlay switch ~/overlays/typescript-ai
repoverlay switch https://github.com/user/ai-configs/tree/main/rust
repoverlay switch ~/overlays/new-config --name my-config
repoverlay cache list # List cached repositories
repoverlay cache path # Show cache location
repoverlay cache clear # Clear entire cache
repoverlay cache remove owner/repo # Remove specific cached repo
Create a repoverlay.ccl in your overlay directory to configure it:
overlay =
name = my-config
mappings =
/= Rename files when applying
.envrc.template = .envrc
vscode-settings.json = .vscode/settings.json
Without a config file, all files in the overlay directory are symlinked with the same relative path.
MIT