Rino is a minimal snapshot-based versioning tool inspired by Git, designed for simplicity and speed.
No staging, no commits — just snapshots.
Rino operates on the idea of alternate realities for your software.
-
Variants : These act like branches, allowing you to explore different development paths.
-
Snapshots : Instead of tracking incremental "diffs," Rino captures the entire state of your project.
-
No Merging : Currently, variants are independent tracks; merging is not supported in the current version.)
rino init# Example: rino snap main
rino snap variantrino use snapshotidsnapshotid is of form variant#version. You can use variant#latest for the latest version of the variant.
rino delete snapshotidrino listrino currentrino -vSince Rino doesn't force a linear timeline, you have total flexibility:
-
You can create a snapshot with variant
featurestarting from main. -
After making several snapshots on
feature, you can jump back tomainand continue snapping there. -
If a specific path doesn't work out, simply use the older version of main and keep moving forward.
Rino is designed for absolute state integrity, which influences how it handles data :
-
Heavy Snapshots : Every unique file is stored in .rino/objects. Even a minor change in a file results in the creation of a new object.
-
Maintenance : Because snapshots are heavier than traditional Git commits, you are encouraged to delete older snapshots regularly to save disk space.
-
Ignoring Files : Use a .rinoignore file (works exactly like .gitignore) to ensure temporary files or build artifacts aren't tracked.
This is a Version 0 release. Rino is an evolving project; expect the developer experience (DX) and command structures to change significantly as the project progresses.