rgit: A git implementation in Rust
This is a simple git implementation in Rust heavily inspired from James Coglan's Building Git. It is a work in progress and is not yet fully functional. This is in no way a replacement for the original git (though you can use it for toying around), but rather a learning exercise to understand how git works under the hood and to get a better understanding of Rust.
Currently, the following commands are implemented:
rgit init <optional root directory>: Initialize a new git repositoryrgit add <file(s)>: Add a file(s) to the staging areargit commit -m <message>: Commit the staged filesrgit status: Show the status of the working directoryrgit diff: Show the difference between the working directory and the staging areargit diff --cached: Show the difference between the staging area and the last commit
Note: For commit to work, you need to have the following evnironment variables set:
This is because the commit command extracts the author name and email from these environment variables.
Installation
To install rgit, clone the repository and run the following command:
This will create an executable in the target/release directory. You can then add this directory to your PATH to use rgit from anywhere like this:
Usage
)
)
Local Development
To run the tests, use the following command:
This is necessary because the few tests modify the same repository and run concurrently, which can cause issues. The --test-threads=1 flag ensures that the tests run sequentially.