Many of Unity developers work alone. They often start from youtube tutorials from which it’s worth to begin. In small one-person projects, you will think that you don’t need extra program to manage your game files. Sooner or later you will start work with bigger team and then you will need help of external programs to collaborate with other people. Sure you can hold your project in cloud like a Dropbox or on company's server hard drive but in my opinion this is not optimal way to handle teamwork with Unity. In this case the best option is to start use Version Control System. In this article we talk about is it worth to use version control system?
What is Version Control?
A version control system (VCS) watching the changes you’ve made to assets in your project. The name of your local copy of project is “working copy”. These changes are stored in a remote database named a “repository”. Every time you change something in your working copy, you need to commit those changes to the remote. The VCS compares what’s already changes in particular commit and only stores the differences. This solution allows the repository be small as possible. For me version control is one of the most important tool in my arsenal. Million times it saved my life. With VCS you can easily roll back changes if you accidentally break or delete something. You can also compare older and newer version of your code to see what’s different. And finally this is an invaluable support for teammates when one of them overwrites other person work by mistake.
A version control systems divide on three types:
- local - allows save data only on local computer (e.g., SCCS, RCS)
- centralized - client - server architecture (e.g., CVS, SVN)
- distributed - P2P architecture (e.g., Git, Mercurial, Bazaar)
Distributed VS Centralized
Centralized VCS (like SVN) are based on idea of a single “central” copy of your project (probably on a server). Programmers will commit their changes to this central copy. Centralized VCS causes that programmers no longer have to keep copies of files on their hard drives manually. This kind of VCS allows retrieve any need version on the fly.