1 unstable release
new 0.0.9 | Nov 5, 2024 |
---|
#1 in #development-tools
67KB
1.5K
SLoC
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 :)
Dependencies
~5–6.5MB
~124K SLoC