Version control software and repos (GIT)

Hi guys im looking at using some version control software. i was wondering if anyone has one they like?

I am experimenting with GIT and i like it so far. anyone else out there use it? or have another recommendation?

We use GIT for our project and we are very happy with it however, if you have lots of assets (binary files) that multiple people need to have access and work on then you need to look for a centralized source control like SVN rather than a distributed one like GIT.

1 Like

I personally am not a fan of git. I find the various clients very lacking in their interface, always making me have to fall back to using commands in some version of a shell/terminal. Often other version control systems have much better client interfaces that integrate nicely with my IDEs and even File Browser (like TortoiseSVN). I did notice the git plugin for Visual Studio was fairly nice, but to be honest… it’s really just using the TFS Team Explorer interface that reroutes to git commands… and that there is my biggest issue, the fact that a good interface CAN be made… yet most clients don’t do it.

Thankfully github, which is where I now host my opensource code (bye bye googlecode), supports SVN clients with it. So I use that.
https://github.com/lordofduct/spacepuppy-unity-framework

As for clients I’ve used with various projects (not all unity).

SVN - I’ve used SVN for many years. It has always worked for me. Most jobs I’ve had used SVN as well. It’s just a classic.

Vault - At one of my jobs we used Vault for several years. They since moved to TFS, company was bought out and the buying company had their own practices in place. It was nice for the most part. It’s locking system was probably the best I’ve ever used… beats SVN hands down in that department.

Team Foundation Server (TFS) - that same company we used this for the last year I was there. I’ve gone on to continue using it in my current projects. It integrates wonderfully with Visual Studio, as well as has a nicely integrated bug/ticket system built in.

Perforce - I used this very shortly. No complaints. But had no reason to revisit it with all the other free options out there.

With all that said. Some things you should be certain of doing if you use a version control system with Unity.

goto Edit-Project Settings-Editor Settings. Make sure that under Version Control you set mode to ā€˜Visible Meta Files’, and that under Asset Serialization you set mode to ā€˜Force Text’. This second one is often not talked about (and isn’t under the Version Control section either)… but most version control systems do a better job at versioning text versus binary data. So turn this on. I know both SVN and TFS has corrupted various files of mine when in ā€˜mixed’ or ā€˜force binary’ modes.

Really, I like ā€˜force text’ mode for more than just version control. It makes writing programs that modify serialized data files easier to write (I sometimes have to hand modify prefab files).

When working on a team, do NOT expect any locking system from your version control system to be at all effective. Unity will out right ignore locks and readonly files if it can, and throw errors when it can’t (permissions and the sort).

merging of assets, even in text mode, is near impossible. I’ve yet to have luck with any of our stuff merging, ever. I’ve had fringe cases where it magically worked once here or there… but the norm is not working, and don’t trust it.

Merging of code files works as well as code files that are merged outside of unity.

1 Like

Git and mercurial are both pretty good in my opinion, but you do have to add some extensions and run your own remote if you want them to handle large files better.

Source Tree is a good gui client for everyday use but for more advanced usage I find I fallback to the terminal once and a while.

I’m running mercurial in a production environment with our own remote just fine on 2 very large projects.

Due to Unity scenes not merging well and hg having no locks. We have been more or less having people claim scenes using cards in trello, so people know who is on what scene at what time.

1 Like

Git is fine for basic version control.

If you’re just starting with vc just try git and when you come to a point that it cannot do what you want then look for something more advanced, you’ll know more about the options on the table then. Depending on your experience, jumping into something more advanced immediately can a much rockier experience.

1 Like

We’ve got 8 full-time game developers, and git’s working great for us. The ability to pull changes from other developers and create temporary test branches means that it’s a lot stronger than having a centralized repo that has to stay in sync. I never pull from the server, but from my colleagues. I never push anything. It works tremendously well

The only real problem that happens is scene conflicts, but our level designers are pretty good at not working with the same scenes at the same time.

We’re using the for-pay tool SmartGit to do everything with a GUI (not gonna teach our graphics people to use the command line), and it’s working great. Cherry-picking parts from different text files is really easy, jumping a file back to an earlier commit is really easy, and so on.

Our sound-guy’s on SourceTree, and manages fine, so if you’re looking for something free, I’d go for that. I’ve worked with a team that used GitHub’s ā€œGitHub for Windowsā€, and that was kinda bad - solving conflicts was more difficult than it needed to be - so I’d stay away from that.

1 Like

Awesome thanks guys!

I’ll give +1 for svn. I’ve used a variety of products over the years, including git, but frankly I don’t understand why people use git (except that github makes it so darn convenient). I know the arguments; I just don’t find them convincing.

For project management, I’m fairly fond of Assembla, which gives you svn (or git) hosting as well as ticket-tracking, file-sharing, a wiki, etc. And it’s neatly integrated; for example you can include ā€œTest #42ā€ in any commit comment, and it links that commit to ticket #42.

When using Unity with any version control system, you should probably set your project to force everything to text format, and to make the metafiles visible. Read this page for more tips.