Which version control system is the best for Blender Games?

I’d prefer to use git, but it seems to me that svn would be a better choice since .blend files are binary. Which version control systems do other people use?

As far as I know Subversion can’t deal much better with binary files (especially if the blends are packed).

I suggest to separate all resources in separate files. With that you have much more overview and much more benefits when using a repository. As additional benefit it is much easier to be used in team ;).

I’m using git, it’s working nicely.

The problem I see with git is that when the repo is checked out, the entire repo is downloaded. This would include every version of every binary file every revised, would it not? When an svn repo is checked out, only the head revision is downloaded. This is why I was thinking svn would be better suited to the task.

…and no, we would not be working with packed .blend files.


Relevant: http://osdir.com/ml/git/2009-04/msg01221.html

Long story short: git will do the right thing, in most cases.

It will actually detect a binary file, and set the appropriate options to always make a delta of that file on new commits, rather than a new copy (if more effective).

Even for text files, git will periodically do a “packing” step, where multiple versions of source files will be “deltafied”, in order to conserve disk-space (of course, deltafied commits are slower to work with, which is why commits closer to head are kept as full copies).

However, unlike text, binary files are harder to deltify, to the point where it’s actually more effective to just make a fresh copy in certain cases, and git is pretty smart about that.

So, if you have a file that’s a few hundred megabytes, and you’re making frequent changes to it, chances are that you’ll hit those “delta won’t make a difference here” cases, and that git will just do a copy. This can add up very quickly to a few gigs, even if the working file is still only a few hundred megabytes.

It’s the same story with svn.

As Monster said, you should split things out: code, assets, .blends. Code should be in the repo; you should make a judgement call for everything else.

… If there was an option to store the .blend data as text - that would certainly make this a non-issue, for the most part.

I think this is the design of git. You get a local copy of the repository incl. history.
I’m not familiar with git. Maybe there is an option that you get the working copy only. So you can run it like a central repository (like CVS/Subversion).

Ok, thx for the info. It appears I am correct in choosing svn over git for the sake of smaller checkouts. I don’t see any immediate need in our situation for everybody to have the entire revision history stored locally since we probably won’t be doing much branching, anyway.

Hopefully we’ll have a BGE WIP soon.