When I talk to ProjectLocker users, one of the most popular questions is whether they should use Subversion or Git. ProjectLocker supports both Subversion and Git, and you can use both types of repositories in your account if you want. At ProjectLocker, we use Git for some projects and Subversion for others. The simple answer is there’s no best answer that makes sense for all teams.
You may already know the basics of these two open source systems: Subversion is a centralized version control system, while Git is a distributed version control system (DVCS). Subversion has a long history, having been created as a successor for the aging and widely-used (at the time) CVS system.
Due in part to the popularity of some open source projects that use Git, Git has become very popular among developers in the last few years. In fact, a DVCS like Git is an ideal fit for open source projects where there may not be a canonical repository for a project and development is intended to be done in public. This makes a lot of sense as Linus Torvalds wrote Git to support the requirements of the Linux kernel development team.
If you’re just trying to choose a source control system for your company or project, none of this really helps. And if you’re like me, you’re more interested in getting work done than getting into a religious discussion about source control systems. So here’s a quick guide to help choose a source control system for your project.
-
Do you need to store any large files (> 100MB) in your repository? (We see this often with media projects, games, mobile app developers and databases.) If so, you probably want to choose Subversion.
-
Is your project’s total data size larger than 1GB, or do you expect it to grow larger than 1GB? Git does not perform well with large repositories, so you should choose Subversion.
-
Do you need to specify specific access rights on a per-directory basis (e.g. for contractors)? Access to a Git repository is all or nothing, so if you need fine-grained access controls, you should choose Subversion.
-
Is your team savvy about version control concepts? Then you should choose Git, which has all the power tools your team will want.
-
Is your team currently using a centralized version control system like Team Foundation Server or CVS? If so, you may want to choose Subversion for an easier transition.
-
Does your team do a lot of disconnected work, or are their Internet connections slow or unreliable? If so, Git may be the right choice since it lets them work offline.
-
Do you have designers using Dreamweaver? Then you may want to choose Subversion for the built-in Dreamweaver Subversion module.
This is obviously not a comprehensive list of factors, but these are some of the things you should consider when choosing a repository type. If you’re in doubt, a simple heuristic is whether you think your team will be comfortable on the bleeding edge. While Git has advanced tremendously in the past few years, the Subversion ecosystem is in many ways more rich and represents a more conservative choice.
And if you still can’t decide, do drop us a line and we’ll help!