What problem does it solve?
grepo pins recurring read-only reference sources into a project-local grepo/ directory. grepo/.lock is the tracked source of truth; each grepo/<alias> is a generated symlink into a shared cached snapshot (a read-only tree with .git stripped).
Core Features & Use Cases
- Lockfile-driven snapshots: A single source of truth for all alias trees and their sources.
- Multi-source provenance: Supports npm packages, cargo crates, and git URLs, with subdir and ref handling.
- Deterministic upgrades: Use grepo update to advance movable entries; grepo sync materializes what is recorded in the lockfile.
- Reference management in projects: Alias trees under grepo/<alias> are read-only and are meant to be shared across the workspace.
- Use Case: In a project with a suite of dependencies, grepo ensures each developer uses identical snapshot trees by symlinking grepo/<alias> references from a central cache.
Quick Start
Initialize grepo in your project, add references with grepo add, then run grepo sync or grepo update to materialize and refresh snapshots.