Add branch and mod files and basic structure of .venus directory. Added fields to object files and upgraded version in object file.

This commit is contained in:
Arthur Beck 2025-03-18 18:55:39 -05:00
parent 1bfa1d5e4e
commit c6ca503ed2
No known key found for this signature in database
GPG key ID: ACE3D14F5CEF14BF
4 changed files with 83 additions and 5 deletions

View file

@ -1,3 +1,16 @@
# venus
# Venus
the VCS built to be fast
Venus is a work-in-progress VCS built to be fast and efficient. Tired of waiting ages for Git to "resolve deltas"(a process vital to the way git works)? Use Venus(when it's functional, of course)!
## Glossary
mod: Equivalent to commits in other VCS'.
object: A file storing differences from the previous mod.
## .venus structure
.venus/objects: Object files(specified in [OBJECTS.md](./OBJECTS.md)) with the extension of `.venus-object`. They are named after the SHA512 hash stored in the object truncated to 16 characters and then the hexadecimal unix timestamp in nanoseconds of the object's creation. For example, `cf83e1357eefb8bd182e06194db125d7.venus-object` would be an object file with completely empty content created on Tuesday, March 18, 2025 at 10:26:52 PM GMT. This string of hexadecimal characters is also used to identify the mod.
.venus/branches: Branch files(specified in [BRANCHES.md](./BRANCHES.md)) with the extension of `.venus-branch`. They are named after the branch name(i.e. `main.venus-branch`), meaning that branch names have to be unique.
.venus/mods: Mods files(specified in [MODS.md](./MODS.md)) with the extension of `.venus-mod`. They are named with the SHA512 hash of them truncated to 16 characters and concatenated to the unix timestamp in hex of their creation date.
.venus/mods/NEW_MOD.venus-mod: A file similar to git's `COMMIT_MSG` file. Staging file while the user is creating a new mod.
.venus/active/BRANCH: A file containing only the active branch name.
.venus/active/MOD: A file containing only the active module of the module file name without the extension.