{"id":16759620,"url":"https://github.com/shubhexists/vault","last_synced_at":"2025-03-17T02:31:11.825Z","repository":{"id":206297371,"uuid":"716269032","full_name":"shubhexists/vault","owner":"shubhexists","description":"A simplified version control system written in Rust, similar to Git, for local files","archived":false,"fork":false,"pushed_at":"2024-01-08T04:29:03.000Z","size":181,"stargazers_count":31,"open_issues_count":17,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-27T16:40:45.613Z","etag":null,"topics":["git","github","rust","version-control","version-manager"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shubhexists.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-08T19:32:56.000Z","updated_at":"2025-02-23T15:05:22.000Z","dependencies_parsed_at":"2023-11-11T09:24:39.164Z","dependency_job_id":"be39ab05-f40d-4956-be68-8a930ed7fda0","html_url":"https://github.com/shubhexists/vault","commit_stats":null,"previous_names":["shubhexists/vault"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shubhexists%2Fvault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shubhexists%2Fvault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shubhexists%2Fvault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shubhexists%2Fvault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shubhexists","download_url":"https://codeload.github.com/shubhexists/vault/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243837004,"owners_count":20355812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","github","rust","version-control","version-manager"],"created_at":"2024-10-13T04:08:37.505Z","updated_at":"2025-03-17T02:31:11.220Z","avatar_url":"https://github.com/shubhexists.png","language":"Rust","readme":"# Vault\nVault will be a command line tool (if successful) similar to git which would have multiple features like brances etc etc. \n\nDrop of a ✨ if you are here. It would mean a lot : )\n```\n__     __          _ _   \n\\ \\   / /_ _ _   _| | |_ \n \\ \\ / / _` | | | | | __|\n  \\ V / (_| | |_| | | |_ \n   \\_/ \\__,_|\\__,_|_|\\__| , simplified version control for local files \n```\n### About\n\nVault is a version control system in Rust, written as a learning project. It follows a similar approach of how Git works i.e.\n-  Files are stored as Blobs and Directories as Trees. \n-  SHA256 is used to encode these objects.\n-  ZLib Compression is used for maximum efficiency.\n\nFor more details, Refer to [Workflow.md](https://github.com/shubhexists/vault/blob/master/src/workFlow.md) (wip)\n\nVault is not suitable for real-world use, but might be of interest for learning about git-internals.\n\n# Installation \nYou can directly install from [Cargo](https://crates.io/crates/vault_vcs) by\n```\ncargo install vault_vcs\n```\nNote - 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.\n\n### References\n- [Git Book](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects)\n- [Article](https://dev.to/nopenoshishi/make-your-original-git-analyze-section-139d#de)\n\n### From Source \n1) Clone this repository by running the command\n```\ngit clone https://github.com/shubhexists/vault\n```\n2) `cd` into the directory and run\n```\ncargo build --release\n```\n This will create binaries for the project.\n \n3) Export the path of the executable (It is in the `/target/release/` directory .) For eg,\n```\n   export PATH=\"$PATH:/home/jerry/Desktop/vault/target/release\"\n```\n4) You are now all set to \"VAULTIFY\" your local files :)\n\n# Commands\n1) To initialize a new vault instance in your present working directory.\n```\nvault init\n```\n2) To create a new commit.\n```\nvault commit -m \"Your Commit Message\"\n```\nParameter ` -m ` or ` --message ` is optional. It would take an empty message by default if no message is provided.\n\n3) To create a new branch.\n```\nvault create branch_name\n```\n4) To revert commits (get back to a previous point of directory)\n```\nvault revert -l \"No. of commits\" \"dir_name\"\n```\n- 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.\n\n- ` 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)\n\nFor eg. for `vault revert -l 2 hello`, a new directory would be created namely `hello`, that would have the files 2 commits ago.. \n\n5) Delete a Branch \n```\nvault delete branch_to_delete\n```\n6) Switching to another branch ( git checkout )\n```\nvault switch branch_to_switch\n```\n7) Logs of the current branch \n```\nvault log\n```\nNote - Output of vault log just consists of the logs of current active branch.\n\n![Output of vault log](https://github.com/shubhexists/vault/assets/110319892/49e44032-dbcb-4741-b86d-7ca54a7d8a42)\n8) (Mainly For Debugging Purposes) To read the contents of a Zlib compressed binary \n```\nvault cat hash_string_to_read\n```\nNote - `vault cat` command should be run in the root directory. i.e. the directory in which ` .vault ` exists.\n![Screenshot from 2023-12-23 10-05-08](https://github.com/shubhexists/vault/assets/110319892/f9907727-d492-4e5f-ac85-83605079a3b1)\n\n# Limitations / WIP\n1) ` .vaultignore ` is not functional currently\n2) To add - Test cases and subsequent workflows\n3) Add more useful commands \n\nThere would be probably many more! Some of them are in the [issues](https://github.com/shubhexists/vault/issues).\n\n# Thanks\nIf you read till here, thanks for showing interest in the project :)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshubhexists%2Fvault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshubhexists%2Fvault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshubhexists%2Fvault/lists"}