Readme
Vault
Vault will be a command line tool (if successful) similar to git which would have multiple features like branches etc etc.
Drop a ✨ if you are here. It would mean a lot : )
__ __ _ _
\ \ / / _ _ _ _ | | | _
\ \ / / _ ` | | | | | __ |
\ V / ( _ | | | _ | | | | _
\_ / \__ , _ | \__ , _ | _ | \__ | , simplified version control for local files
About
Vault is a version control system in Rust, written as a learning project. It follows a similar approach of how Git works i.e.
Files are stored as Blobs and Directories as Trees.
SHA256 is used to encode these objects.
ZLib Compression is used for maximum efficiency.
For more details, Refer to Workflow.md (wip)
Vault is not suitable for real-world use, but might be of interest for learning about git-internals.
Installation
You can directly install from Cargo by
cargo install vault_vcs
Note - This will install the binaries with executable name vault_vcs . So, if you want to continue using vault as an executable name, you can alias vault_vcs to vault or build it from source.
References
From Source
Clone this repository by running the command
git clone https://github.com/saksham-tomer/vault
cd into the directory and run
cargo build -- release
This will create binaries for the project.
Export the path of the executable (It is in the /target/release/ directory .) For eg,
export PATH = " $ PATH :~/vault/target/release"
You are now all set to "VAULTIFY" your local files :)
Commands
To initialize a new vault instance in your present working directory.
vault init
To create a new commit.
vault commit - m " Your Commit Message"
Parameter - m or --message is optional. It would take an empty message by default if no message is provided.
To create a new branch.
vault create branch_name
To revert commits (get back to a previous point of directory)
vault revert - l " No. of commits" " dir_name"
Parameter - l or --level defines the number of commits to go back.. For eg. -l 2 would go back 2 commits in the repository. If nothing is provided , default vaule would be taken as 1.
dir_name requires a directory name in which the files would be added. If nothing is provided, it would replace the files of the current directory.. (wip)
For eg. for vault revert - l 2 hello , a new directory would be created namely hello , that would have the files 2 commits ago..
Delete a Branch
vault delete branch_to_delete
Switching to another branch ( git checkout )
vault switch branch_to_switch
Logs of the current branch
vault log
Note - Output of vault log just consists of the logs of current active branch.
8) (Mainly For Debugging Purposes) To read the contents of a Zlib compressed binary
vault cat hash_string_to_read
Note - vault cat command should be run in the root directory. i.e. the directory in which . vault exists.
Limitations / WIP
. vaultignore is not functional currently
To add - Test cases and subsequent workflows
Add more useful commands
There would be probably many more! Some of them are in the issues .
Thanks
If you read till here, thanks for showing interest in the project :)