(A version control system designed to track file changes)
Current Version: v0.0.1 (Pre-alpha)
- Repository Initialization (
mgit init): Creates the internal database structure to track your files. - Staging (
mgit add): Adds file contents to the staging index. - Status Tracking (
mgit status): Shows differences between the working directory and the staging area. - Recording Changes (
mgit commit): can now record and maintain a linear history.
This project is a personal learning exercise driven by two main goals:
- Understanding Git: The best way to understand how a tool works is to build it from scratch. Implementing the core mechanics of Git helps demystify how it manages, tracks, and stores data.
- Learning Rust: I wanted a practical, hands-on project to practice and deepen my understanding of Rust. A version control system provides a great way to explore Rust's safety guarantees, ownership model, and file system APIs.
mgit [-v | --version] [-h | --help] <COMMANDS> <SUBCOMMANDS>
COMMANDS:
init Create an empty mgit repository or reinitialize an existing one
add Add file contents to the staging index
commit Record changes to the repository history
status Show the working tree status
Run 'mgit <COMMANDS> --help' for more information on a specific command.
To run this project locally, clone the repository and build it from the source:
git clone https://github.com/debuggerdragon311/mgit.git
cd mgitcargo build --releaseThis project is licensed under the AGPLv3 License - see the LICENSE file for details.