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?
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.
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.
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.
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.
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.
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.