Lately I was trying to find out which version control system suits best my need as an iOS developer. It’s a new environment for me (Mac, XCode, iOS and all), so my old habits most probably would need to be replaced.
In very old days as I developed software for Windows, using Microsoft Visual Studio the choice was simple. Microsoft Source Safe. It’s not free, but the company I worked for paid for it anyway. And it was fairly solid for these old days.
Then I had to switch to Java and we (a small team) had a choice. First we worked in CVS and then, after few years replaced it with SVN. Both are free, open source and pretty good, SVN being better in my opinion.
So, for a while I went the SVN route, trying to find out how to integrate it best with my new XCode IDE. It is possible, yes, but in the process I found out about git, which is the preferred source control system for XCode. It is much more tightly integrated with XCode. You can perform many operations directly from XCode, including comparing of 2 versions of a file in XCode 2-pane editor. This is very helpful.
git has one more advantage over SVN, which is especially important, when you work in a team using the same codebase. Old school way (SVN) you have one central repository. Typically it resides on some server, which all team members have access to. If you don’t have access to the server (eg. working on laptop, no internet connection), you cannot use SVN.
Using git, each team member has it’s own local repository. Files con be commited, rolled back, versions can be compared, etc. locally. Then there can be installed (but it’s optional) a central master repository (on a server), which can be synchronized with local repositories of team members whenever they happen to have internet access. It adds a bit complexity to the workflow, but the benefits are worth it in my opinion.
So basically, I chose git for my project.
Here are some links and tutorials I used for my research and then installing and configuring git both client- and serverside: