venus/README.md

32 lines
2.5 KiB
Markdown

# Venus
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/branches/LIST: A file listing all branches, each on it's own line
.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 mod file name without the extension.
.venus/MOD_ORDER: A file containing a list of all mods with their respective branches in chronological order with oldest first(in the format `(branch name): (mod name)`). This excludes the file extension.
Files accessed by clients attempting to access remote HTTPS Venus repositories:
.venus/mods
.venus/objects
.venus/branches
.venus/default/BRANCH: A file containing only the default branch name.
.venus/default/MOD: A file containing only the default mod file name without the extension.
.venus/VERSION: A file containing the version of the files. This should be in the format `(name and version of protocol used)_(name and version of program that created the files)`, i.e. `venus-0.1_venus-0.1.0`.
Files stored by clients locally to store remote info:
.venus/mods/remote: A folder containing modules that don't have their corrosponding objects locally
.venus/REMOTES: A file containing a list of remotes in `(name): (url)` pairs.