https://github.com/nthnn/mvs
Lightweight version control system written in Go. MVS provides basic init, add, remove, commit, log, branch, checkout, status, and tree commands, with msgpack metadata, Ed25519 signatures for tamper-evident history, and global configuration via YAML.
https://github.com/nthnn/mvs
version-control version-control-system version-manager versioninfo versioning
Last synced: 12 days ago
JSON representation
Lightweight version control system written in Go. MVS provides basic init, add, remove, commit, log, branch, checkout, status, and tree commands, with msgpack metadata, Ed25519 signatures for tamper-evident history, and global configuration via YAML.
- Host: GitHub
- URL: https://github.com/nthnn/mvs
- Owner: nthnn
- License: mit
- Created: 2025-05-09T03:03:50.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-09T20:18:10.000Z (about 1 year ago)
- Last Synced: 2025-05-09T20:26:34.834Z (about 1 year ago)
- Topics: version-control, version-control-system, version-manager, versioninfo, versioning
- Language: Go
- Homepage: https://nthnn.github.io/mvs/
- Size: 188 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Minimal Versioning System
A lightweight version control system written in Go. MVS provides basic `init`, `add`, `remove`, `commit`, `amend`, `log`, `branch`, `checkout`, `status`, and `tree` commands, with `msgpack` metadata, Ed25519 signatures for tamper-evident history, and global configuration via YAML.
- **Repository Initialization**: Create a new `.mvs` repository with `mvs init`.
- **Content Tracking**: Stage (`add`) and unstage (`remove`) files, then snapshot changes with `commit`.
- **History & Integrity**: Browse history with `log`; each commit is MsgPack-serialized, gzip-compressed, and signed with Ed25519.
- **Branching & Checkout**: Lightweight branches in `.mvs/refs/heads`; switch contexts via `branch` and `checkout`.
- **Status & Tree Views**: `status` shows staged, modified (including deletions), and untracked files; `tree` renders your branches in an ASCII UI.
- **Global Configuration**: Set your name and email in `~/.local/mvs/globals.yaml` for commits.
## Commands
| Command | Description |
| ------------------- | ------------------------------------ |
| `init` | Initialize a new repository |
| `branch [name]` | List or create a branch |
| `checkout ` | Switch to branch or commit |
| `add ` | Stage file changes |
| `remove ` | Unstage or remove file changes |
| `commit -m ` | Commit staged changes |
| `amend -m ` | Amend the message of previous commit |
| `log` | Show commit history |
| `status` | Show staged/modified/untracked files |
| `tree` | Render an ASCII branch tree |
## License
This project is licensed under the **MIT License**. See the [LICENSE](https://github.com/nthnn/mvs/blob/main/LICENSE) file for details.