In the world of web and software development, there are a few systems or tools to manage version control of the source code. In this article, we are going to illustrate the difference between Git and SVN version control tools.
To understand the difference between Git and SVN, one first needs to understand the difference between Centralized and Distributed systems.
The Oxford dictionary defines centralized and distributed as follows:
- Centralised: concentrate (control of an activity or organisation) under a single authority, bringing activities together in one place.
- Distributed: give a share or a unit of (something) to each of a number of recipients.
To understand this, let’s use an example model: banks!
In a centralized model, there is one central bank which holds and controls all client’s data and transactions. The branches of the bank have to continually communicate with the central bank in order to change and maintain client data. The branches do not keep local copies of the central banks’ database. Therefore all processing is centralized, thus making basic client interactions overly time-consuming, prone to corruption due to connection issues, or by being hijacked by 3rd-party attacks. What if the central banks’ data became corrupted, or worse, completely lost. All the banks’ branches would be in disarray and would have to close until the central bank came back online. This is SVN.
In a distributed model, all bank branches have a complete localized version of the central bank’s data. The branches operate on their own “Working Copies” of the central database. Client interactions and transactions happen immediately with no downtime if the connection to the central bank is lost. At the end of the day, the branches’ changes made to their working copies are synchronised with the central bank or banks, and at the beginning of the day, the branch pulls from the central bank or banks. This is Git.
So what are the differences and benefits?
From the definitions above one can already draw a picture of how SVN or Git will affect software development. SVN is centralised but prone to large file sizes, lengthy command processing, and downtime and isolation due to central server connection loss. Git, on the other hand, allows all developers to have a full local working copy of the main repository which they can commit and add to without dependence on a central server.
Git takes away the threat of potential downtime and allows for multi instances of the project. If one node should fall or become corrupted, it can quickly be replaced by another node.
There is a lot to say about SVN vs Git, and most of it lay in the machine processing of the Subversion Control Systems. The most important point in this regard is that Git is lighter in file sizes and faster in processing than SVN.
What methods do we use here at Elemental?
Here at Elemental, we use a combination of the two methods for websites, web applications, e-commerce shops and intranets. This is purely dependent on the client’s requirements, server architecture, size of the team working on the project and the size of the project. Therefore we choose what is best for our clients and therefore always keep their best interests at heart.
Elemental is a web solutions company that have been developing custom solutions for their clients since 2002. Our main services are web development, intranet solutions, e-commerce websites and Facebook applications. For more information go to our main website or contact us. We hope you enjoyed reading this article.