diff options
author | Malf Furious <m@lfurio.us> | 2017-09-13 23:36:47 -0400 |
---|---|---|
committer | Malf Furious <m@lfurio.us> | 2017-09-13 23:36:47 -0400 |
commit | 942d22a2fec76dcadc34225f7c8ce80d286e52df (patch) | |
tree | d2ecc077baac0cedad19b6276b81dc12859fc023 | |
parent | be5ecf8e81e1457e8532558948a7d380bfaab3c4 (diff) | |
download | systrunk-0.1.tar.gz systrunk-0.1.zip |
Write README filev0.1
-rw-r--r-- | README.md | 62 |
1 files changed, 62 insertions, 0 deletions
@@ -0,0 +1,62 @@ +# systrunk + +Systrunk is a simple version control system, implemented in BASH utilizing rsync, amonst +other utilities. 'Trunk' is a common term from VCSs referring to the main data branch. +The name 'systrunk' comes from the fact that this software aims to provide versioning to +full system image backups. + +Systrunk shares a lot of themes with both git and subversion. Systrunk worktrees operate +on a centralized repository, and therefore names like HEAD, etc. derive their meaning from +that in subversion. Systrunk also implements proper branching, and uses something that +roughly resembles the DAG commit graph that git does to model a repository's history. + +Systrunk (technically) does merging pretty meh... Definately room for improvement, but +gets the job done for now. The biggest problems being that systrunk doesn't implement +merging on a file level, but only a tree merge. This means that systrunk will identify +a file that both branches have modified, but won't at all figure out what the merged +file should be; instead it opens both copies of the file in vimdiff for the user to +figure out. The other issue being that systrunk can't tell the difference between files +{deleted by one branch / modified by the other} and files {created by one of the branches}. +Systrunk does, however, acknowledge this shortcomming and offers interactive prompts to +help the users resolve each found 'conflict'. + +## reserved names + +These reserved reference names are used to reference commits, their meaning is given here... + +HEAD Lastest mainline (trunk) commit. This is actually the name of a proper branch, + but cannot be deleted. Think 'master' branch from git. +BASE Current checked out commit, the commit the worktree is based on. +TRAC This will usually reference another reference. This points to the branch that + the current worktree is tracking. Think about the 'HEAD' pointer from git. +NULL Literally means 'no commit'. +MERG If a merge operation is in progress, this will point to the branch or commit + ID being merged. Otherwise this is NULL. + +## translated commands + +Below is a matchup of some basic systrunk commands and their git counterparts... + +SYSTRUNK COMMAND GIT COMMAND EXPLANATION + +systrunk checkout git clone / git checkout This systr cmd not only checks out + new files, but also inits the worktree + +systrunk commit git commit +systrunk status git status +systrunk init git init --bare + +systrunk clone git clone --no-checkout Since systr uses a central repo, clone + is not the operation used to setup a + workspace, but instead produces a copy + of *just* the repository; intended for + backup purposes. + +systrunk reset git reset --soft / git commit This systr cmd allows user to commit + directly to a branch from anywhere else. + +systrunk tag git branch Systrunk tags are identical to branches +systrunk log git log +systrunk shortlog git rev-list +systrunk merge git merge +systrunk update git pull |