summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md62
1 files changed, 62 insertions, 0 deletions
diff --git a/README.md b/README.md
index e69de29..79ec05a 100644
--- a/README.md
+++ b/README.md
@@ -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