Release Notes
Command: apply
Added
-
Deep merge
.jsonfiles during overlay applicationResolve
.jsonfile conflicts automatically instead of failing. When--mergeis enabled (via CLI flag orREPOVERLAY_MERGEenv var), JSON files are recursively deep merged — objects merge key-by-key with overlay values winning, arrays and scalars use overlay values directly, and type mismatches are logged with full dotted key paths. Merged files are tracked with a newMergedlink type in overlay state for correct cleanup on remove/update.
Fixed
-
Reload overlay targets after removing a conflicting overlay during re-apply
When
--forceremoved an existing overlay to make room for a re-apply, the in-memory target set was stale, causing subsequent conflict checks in the same batch to see phantom conflicts. The target set is now reloaded after each forced removal.
Command: edit
Added
-
Add
editcommand for modifying existing overlaysNew
editcommand with--add,--remove, and--interactiveflags for modifying applied overlays.--addadds files to an overlay,--removeremoves specific files without removing the whole overlay, and--interactivere-runs the file selection UI with currently-applied files pre-selected. The existingaddcommand is deprecated in favor ofedit --add.
Changed
-
editdefaults to interactive file selection when no flags givenRunning
repoverlay edit <name>without--add,--remove, or--interactivein an interactive terminal now launches interactive file re-selection automatically. Non-interactive environments are unaffected.
Command: remove
Changed
-
removedefaults to interactive selection when no arguments givenRunning
repoverlay removein an interactive terminal now launches the interactive overlay selection instead of printing a usage error. Non-interactive environments (CI, piped stdin, TERM=dumb) are unaffected.
Security
-
Reject git refs starting with
-to prevent flag injectionSource URLs with refs like
--upload-pack=evilcould be passed through to git commands as flags.GitRef::from_strnow rejects any ref beginning with-andwith_ref_overridepropagates the error instead of panicking via.unwrap(). -
Validate overlay mapping destinations against path traversal
Overlay configs with mappings like
secret.txt = ../etc/passwdcould write files outside the target repository. Mapping destinations are now canonicalized and verified to stay within the target directory before any files are copied. Symlinks in overlay sources are also skipped to prevent symlink-based escapes.
Install repoverlay 0.6.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tylerbutler/repoverlay/releases/download/v0.6.0/repoverlay-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/tylerbutler/repoverlay/releases/download/v0.6.0/repoverlay-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install tylerbutler/tap/repoverlayDownload repoverlay 0.6.0
| File | Platform | Checksum |
|---|---|---|
| repoverlay-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| repoverlay-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| repoverlay-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| repoverlay-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| repoverlay-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |