nickpegg.com/posts/2011-11-25_Syncing_Minecraft_with_git.yaml

78 lines
2.5 KiB
YAML

date: 2011-11-25
tags:
- git
- games
title: Syncing Minecraft Saves with Git
---
I've been playing Minecraft for a while and after doing some travelling, I've
ran into the issue where I'd like to syncronize my Minecraft saves across
computers.
---
I already use git for software version control, so why not shoehorn Minecraft
into it? Not only would I get easy syncronization, I would also get version
control so if I seriously mung something up, I can revert back to a previous
save! Here's how I did it.
First, I had to make sure git was installed on all of my machines. Luckily
on Linux git is usually provided in the package repository (git-core), but
since my desktop also runs Windows (for gaming), I use
[msysgit](http://code.google.com/p/msysgit/). For example,
on Debian/Ubuntu all you need to do is:
```
sudo apt-get install git-core
```
Once git was installed, I decided to go with a centralized approach since I
want one 'official' spot where I can push and pull my Mincraft saves to.
I already have a server
from the wonderful folks at [Linode](http://linode.com), so I just
initialized a bare (centralized) repository on there:
```
cd /path/to/repos/minecraft
git init --bare
```
Then, since I already have Minecraft installed on my desktop with quite a few
saves, I had to clone the central repository, add my saves, commit, and then
push back to the central repository.
```
cd /home/nick/.minecraft/
git clone nick@nickpegg.com:/path/to/repos/minecraft temp
mv temp/.git ./
```
Since you can't clone a repository into a non-empty folder, I had to clone it
to a temporary folder and then copy the .git folder from there into my
.minecraft folder. Now that my local repository was setup, I added the files
I wanted to syncronize.
```
git add saves screenshots stats texturepacks options.txt servers.dat
git commit -m 'Initial commit'
```
Once I had the files commited, all I needed to do was push them up to the
central repository on my server.
```
git push
```
And now I have my Minecraft files in a central spot! Now every time I'm done
playing a bit, all I have to do to sync my files up is:
```
git commit -a -m 'Played a bit'
git push
```
Now, on other machines, all I need to do is clone once, ``git pull``
before playing,
and then commit and push when I'm done playing!
Easy peasy. Of course, you can do more fancy things with git since it's a
full-blown version control system. If you feel inlined to play with those
features, go read some [documentation](http://gitref.org/).