If you tap on computers regularly it is likely that at one time or another you have lost work. If this is true then it is possible you are also someone who obsessively saves and makes copies to placate your anxiety about losing work.
I would cmd-s all the time: web pages, email, listening to music. I knew I had a problem when my ⌘ key broke. ¬ me
mμ is a version control system geared towards chilling out the stress endemic to digital creation.
Version control systems (VCS) are file databases that track file changes over time. VCS replace manual file versioning with software management. This simplification facilitates complex workflows unachievable by hand.
# Managed by hand
── final
├── finalpaper.docx
├── finalpaper1.docx
├── finalpaper121.docx
├── finalpaper-final.docx
├── finalpaper-final_REAL.docx
└── finalpaper-THISONEISWEAR.docx
# Managed with code
── final
├── .mu
└── finalpaper.docx
Thanks to TheDataLeek for the brilliant "Managed by hand" example.
The big takeaway from the above example is that version control lets you work with the version of the files you want (e.g. finalpaper.docx) and keeps archived files accessible but out of sight.
Another big win of version control is disaster prevention! If you ever loose work or screw up, it’s easy to recover with version control. For instance, to save a snapshot of everything in a directory with mµ is:
$ mu save "short explanation"
No matter what you change within this directory, recovering the previous snapshot is simple:
$ mu undo .
For more information on version control check out the visual guide to version control.
Most version control systems are complex and scary, e.g. git.
"Git has 145 commands, but there’s no git undo." ~ Peter Lundgren
mµ, on the other hand, is simple and approachable. Let’s get started!
from npm
$ yarn global add meowvc
or from GitHub
$ git clone https://github.com/jzwood/meowvc.git && cd meowvc
$ yarn && yarn link
and you're ready to go!
$ mu help
$ mu <command> [<args>]
Commands and arguments:
help
: shows usage
start [<name>]
: creates a new mµ repo
state:
: shows the current repo state
save <message>
: records snapshot of current repo
which
: shows name of current repo
saveas <name>
: saves current repo with a new name
history [<limit=∞>]
: shows ≤ the limit number of save messages for current repo
undo <file|pattern>
: reverts file(s) (by name or pattern) to last save
get <name> [<version>]
: switches to a different named repo
mash <name> [<version>]
: mashes (ie merges) named repo into current repo
diff <file|pattern>
: shows the word differences between current and saved version of file
For people who already use Git, SVN, Mercurial, or other there still may be reasons to use mu. If you give mu start
the optional name parameter your mu data will be stored in Dropbox if possible. This means that if you want to backup your personal work (which you do) without setting up and syncing a repository on BitBucket or polluting your GitHub you can use mu!
If you want to resume working on a project from a different computer that is still linked to your Dropbox run mu start <name_of_repo>
. If you then run mu state
mu will tell you that all your files have been deleted (cuz the dir is empty). Run mu undo .
and your latest master branch will be restored.