Git vs Subversion
Git and Subversion are most popular and widely used version control system. What is the best situation to choose them? It is important to know its pros and cons, evaluate your requirement and choose the right one.
Subversion is a centralized version control, only one master copy is maintained and all clients have to commit their changes to the centralized repository. Git is a distributed version control. Each user could have their own repository. User could work locally to his branch and latter merge the appropriate changes back to the master branch.
In Git, there is no concept of master or centralized repository as in Subversion but still the repository maintained by the project owner is considered to be the master.
Subversion repository should have better backup plans, if the main repository is down then it could be replaced with the last backup data. If the last backup copy is old then chances of losing data is huge. In case of Git, all users have their copy which might be frequently synced with the master. Even master node is down any other node could be considered as master. Chances of losing data are less.
Git repository consumes less space than Subversion.
Subversion has better client tools and GUI based tools. Most of the IDE supports subversion.
Partial repository (subdir) checkout/checkin are possible with Subversion. In case of Git, the entire repository has to be cloned.
Subversion has better access control, read and write (commit) access could be given to different users. In case of Git each one will have their own copy and project admin pulls the changes from the user branch.
Working with Subversion is more or less like our regular version control. No extra learning is required. Git requires some learning curve to understand its concepts.
Git is distributed and faster. Choose Git if you are doing complete distributed development. Sometimes what we think as an advantage could be a disadvantage also. Git allows projects to be cloned and there could be N number of copies for each project. It is good that each one is working on their own copy but it is difficult for the project owner to merge their changes back to the master copy.
In case of Subversion, since it is single repository and restricted access, User will do frequent check-ins and sanity of the branch will be maintained.
If you really want distributed and want to give more freedom to users choose Git otherwise better to choose Subversion.
Best open source Version Control.