Skip to content
/ mvs Public

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.

License

Notifications You must be signed in to change notification settings

nthnn/mvs

Repository files navigation

Minimal Versioning System

Build MVS

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 <name> Switch to branch or commit
add <paths> Stage file changes
remove <paths> Unstage or remove file changes
commit -m <msg> Commit staged changes
amend -m <msg> 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 file for details.

About

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.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages