blob: 79ec05a28aa58a34976115a3a11399b6fcd183a4 (
plain) (
tree)
|
|
# 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
|