Version controlling is one of the main tasks in developing an application, no matter how big the application is. The developer will enjoy developing applications when file version control system (VCS) is used. The software life cycle consists of many phases. The major phases are “Integration†and “Maintenanceâ€ÂÂ. VCS is a solution for many problems that a developer faces during the development and maintenance phases of the software life cycle. VCS helps a developer to complete these phases without much struggles, by keeping log of all changes made by the developer
If you develop & deploy medium to large scale applications, then you would have used version control system. The most widely used version control system is Apache Subversion. Apache Subversion or SVN in short, is a Centralized Version Control System. In this system, there is a single central repository. All changes made to documents/codes are saved in this. There can be many users (or developers) but all the changes are updated to this central database instantly.
What is Git?
From their website :
“Git is a free & open source, distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Every Git clone is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server. Branching and merging are fast and easy to do”
In other words, Git is a open source version control software that makes use of the distributed model system. The central repository can be hosted on a remote server. Developers can clone the central remote repository to their own local machine and start working on the local repository. This makes the version controlling even faster. When the work is done in the local repository, developers can commit changes to the remote repository.
Multiple Platform Support
Git is primarily developed on Linux, but can be used on other Unix-like operating systems including BSD, Solaris and Darwin. Git also runs on Microsoft Windows.
Why Git is Better Than Apache Subversion (SVN)?
Git is far better than SVN for the following reasons:
1.Distributed: Git is distributed, while SVN is client-server model. This means a lot to the developers who work on a single project from multiple countries across the world.
2.Works Off-line: Yes, this is the coolest and the remarkable feature of Git. Since Git is a distributed version control system, Git allows “Local Repositories†to be created on the user’s machine in addition to the remote repository which is the master database. This makes Git very fast to operate and reduces the need for network connection. SVN does not provide this feature as the user must be online in order to push the files to the remote repository from the working copy.
3.No Duplication: Git doesn’t duplicate files while saving into the repository. While updating revisions, Git will make a link to the file in the old revision, if the file is not changed. It uses index files for this purpose while SVN always saves two copies of the versioned file which makes SVN database considerably bigger than Git database.
4.Coolest Clone Feature: One of the main reasons for Gitsters to like Git is the clone feature in Git. As Git also allows local repositories, every user can have the repositories cloned to their own system and work on that cloned repository, which doesn’t even require a network connection or Internet access. Once changes are made, every user will be able to “push†those changes to the central master database which may be hosted on a remote server.
5.No or Less Data Loss: As Git allows to clone the central database, all users can have their own local copies of the master database. Therefore there is less chance for data to get lost. This is not the case with SVN, as the data will be lost if the central database becomes corrupt
6.Integration With File Browsers: Git has integration with file browsers on various operating systems such as Ubuntu and Windows. RabbitVCS is a good application for Ubuntu users. Git for Windows is also available free of cost. SmartGit is a good choice for advanced users
7.Branching: One of the useful features of Git is branching. Git allows to have multiple local branches that can be completely independent. This way, the developers can test their application without depending on the remote repository or local repositories of other users.
8.Multiple Remote Servers For a Single Repo: With SVN, we can only have one remote repository for a single project. Git supports multiple remote repository concept so that the developer can commit the changes to multiple remote repositories at the same time. This is a great feature if the developer wants to setup a backup server of the main repository server.
How Easy It Is To Adopt Git?
Git is a fairly easy and straightforward tool to make life easy. Git commands are very much similar to that of SVN and there is a crash course available now to study Git commands and technical terms
Importance of Git In The Present Scenario
Git is becoming very popular with the release of major application packages such as JQuery, Mootools etc. Many application developers are moving to Git from SVN or other VCS.
There are many reasons why you should move to Git. Support for cloning & branching,low resource usage, offline mode etc. Interestingly, many developers getting familiar with Git through the famous Repository Hosting website GitHub