Synching and Version Management

Posted by Chris Rosser on Sat 12 April 2014
Hello! This site is archived and no longer maintained. For Chris' main site go to

Ahead of my next post, where I plan on writing about my first two world-building tools, I thought it was appropriate to briefly write about ways of managing versions or synchronising content across computers.

One major advantage of storing your data as plain text and folders, is that it's really easy back up cheaply, quickly and efficiently using several commercial and open source solutions that make it easy to maintain content across computers. It's worth noting that this is one of the few limitations of Scrivener; Scrivener's manual warns users against using DropBox and similar services to keep content in sync (although it does recommend using DropBox as part of it's Synchronised Folders feature).

Most people are familiar with DropBox and similar services (such as Box, Google Drive, OwnCloud). They are all excellent and provide a means of keeping content synchronised across a range devices and platforms. From the outset, I've designed the world-building app so that the tools and content are compatible with these popular services. If for no other reason, using DropBox can keep your content in sync across your devices. It also opens up the possibility of collaborating with others through these services' sharing features; this potentially negates the need to turn this into a web app for people who want to collaborate and want to do so using desktop applications rather than web forms.

There's also another option which I want to comment on and that's the source control platform, Git.

Like any developer, I frequently use Git and GitHub to manage source code. GitHub is an excellent repository for open source projects and you can join for free if you are prepared to open your content up to everyone (I believe you have to pay to be able to create private repos, but I'll check that and make a correction if this is not the case.)

On my web server, which is hosting this site, I have access to Git and use it to maintain all my privately maintained development projects, which includes several websites and, as of this afternoon, my world-building app.

A self-hosted or third-party installation of Git is not as easy to use as DropBox but it does offer some compelling advantages which are:

  • Git gives you granular control over content versions
  • With Git, you can 'fork' and branch versions
  • Git can handle millions of files
  • Git is free and open source
  • Git works natively on even more platforms than DropBox

Another point worth considering is that hosting Git yourself gives you more freedom, control and privacy than one of the big cloud services. In these days of privacy violations and data mining for commercial purposes, that may be quite important to you.

This isn't a Git tutorial, but I want to illustrate that using it isn't that hard.

Once you have set up a git repo, you can clone it into any device where you have the Git client installed. On Mac OS X 10.8 or later, Apple will install the Git client as part of the 'Xcode command line tools' the first time you attempt to use it. On most GNU / Linux distros, Git is either install by default or can be installed with a single command in the terminal. The following is an example for how to install Git on Debian based distros (Debian, Ubuntu, Mint, ElementaryOS):

    sudo apt-get install git

Once you've cloned your repo, committing content just requires three simple commands:

    git add --all

    git commit -m "type a message about your commit here"

    git push origin master

Pulling content, which I do at the start of each coding session only requires one command:

    git pull origin master

Note that origin and master refer to the source and branch respectively.

That's really all there is to using git.

Wow you read this far! This site is archived and no longer maintained. For Chris' main site go to