This repository is an in-progress implementation outline for a custom VCS written in C++.
- Early scaffold stage
- Architecture and feature scope are subject to change
- Current executable is a bootstrap placeholder
Build a lightweight Git-inspired VCS to better understand core concepts:
- Object storage (blob/tree/commit-like structures)
- Content-addressing and hashing
- Local configuration
- Staging/index behavior
- Commit history traversal
- Basic branching and checkout semantics
vcs initvcs config <user.name|user.email>vcs add <path>vcs commit -m "message"vcs statusvcs logvcs branch <name>vcs checkout <name|commit>
This list is intentionally tentative and may evolve as internals are implemented.
.vcs/
objects/
refs/
heads/
HEAD
index
config
hashing: object IDs and content hashingcompression: compress data with Huffman codingconfig: configuring the local vcs instanceio: input and logging utilitiesobjects: read/write serialized objectsindex: staging area format + updatescommits: commit creation and parent linksrefs: branches and HEAD resolutioncommands: CLI command handlers
The project currently contains a minimal CMake + C++ scaffold:
CMakeLists.txtmain.cppio.cppconfig.cpp
cmake -S . -B build
cmake --build build
./build/vcs- Replace placeholder
main.cppwith CLI argument parsing - Implement
vcs initto create.vcsdirectory structure - Add object hashing + write/read roundtrip
- Implement basic
addstaging flow - Implement first working
commit
This README is a living outline and will be updated as architecture decisions solidify.