Which version management software should you use?
Whether it’s websites or software, development is not necessarily the prerogative of one person. Therefore, when you want to work collaboratively on a dedicated project – personal as professional, it appears inter alia differences in work, performance, synchronization, optimization and point of view. Collaborative development and, more generally, team and project management are whole areas of concepts and techniques that we will not tackle. Today, we will instead focus on software that combines productivity and teamwork, so that your developments remain fluid whatever the circumstances.
The usefulness of version control software
A version control software (or VCS, for Version Control System or SCM for Source Code Management ) revolves around a very simple concept: the saving of all the modifications made on all the files of the project and the maintenance source code throughout the development process. In other words, it is a modern type of archiving with many features. This type of software is particularly effective for working on several versions at the same time. Thus, you can create several branches : the current branch (the production branch) and the future branch (the development branch). Impossible then to get tangled with the brushes. Another advantage: rollbacks . A shell somewhere? By having access to the historicity of files, you can retrieve and redeploy earlier versions. Or just to see what you did at a given time, if you or your collaborators were productive, etc.
Finally, they make it possible to collaborate better. They force us to work on a common base when we move to collaborative development. They distribute the files to each developer and force them to validate their changes by returning them to the software. In fact, teams can work simultaneously (or not), on similar branches (or not), but always keeping the files as up-to-date as possible. This is the end of compatibility issues and last-minute bugs. Finally, they allow dematerialization and synchronization in many parts of the world. Log in to the software and download the files, it’s as simple as a click of the mouse!
Discover SourceTree , a free Git and Mercurial SCM compatible client
- They improve collaborative work: you can work simultaneously on the same files.
- If changes occur in parallel, the merge function will do the job.
- They help with general communication and information sharing.
- They allow the development on several versions at the same time thanks to the branch system.
- Archiving improves security (data loss) and maintenance (rollback in case of problems).
- History allows statistics: who did what, when, how, and why.
- They advocate the centralization of information and the use of a common foundation.
- They force the validation of the changes by their visibilities to the rest of the team.
- It’s fast and easy to use!
- By centralizing information, they improve internal security but not external. Be careful.
- At first glance, setting up and configuring such a solution can put off more than one.
- There are plethora of features and their grip may require time.
- They can quickly take up space according to the projects and the number of collaborators.
- They require client software to connect to it and validate their work. It’s about finding the right one!
Git and GitHub, the power 2.0
There are many versioning software that can offer developers features for collaborative work. One of them stands out clearly: it is Git. Created by linux torvald , the founding father of the Linux kernel in 2005, Git has many followers and can now boast a base of about twelve million users.
If Git is so popular, it’s also partly thanks to the GitHub website. This developer social network hosts and manages millions of software development projects. It allows the sharing of information by proposing a system of management of bugs (or issue tracking system ), proposals of modification (or pull request ), a manager of task, a wiki, graphics (submission, contribution, frequencies, …) etc. True strike force since 2008, the year of its launch, GitHub evangelizes Git and converges the entire web community. In 2016, GitHub has 14 million users and 35 million repositories, making it the largest source code directory in the world.
- The official Git software website
- Git: A quick guide to getting started
- GitHub For Dummies: No Panic, Get Started!
Mercurial SCM, simplicity and speed
Just like Git, Mercurial SCM is the versioning software that goes up. Available on Linux and Windows, it is released under the GNU / GPL license since 2005, the year of its launch. Moreover, the concomitance of the exit of Mercurial and Git ready to smile, it is barely 12 days! Based on the same principle of decentralization as Git, Mercurial offers functionalities close to its competitors, while invoking its great simplicity and speed of use. Indeed, Mercurial has proven itself in the management of large projects, in its ability to not have to use a server, through its web interface, in its management of branches and mergers.
- The official website of the Mercurial SCM software
- Get started with Mercurial
- Hg Init: a Mercurial tutorial (in English)
Apache Subversion, or SVN for the friends
Another big one among the big ones is Apache Subversion, or SVN. Subversion is free software developed by the Apache Software Foundation since 2000. Replacing the famous Concurrent Versions System or CVS software, Subversion essentially offers the same functionality as Git and Mercurial for teamwork. He is often an ancestor, but beware: the old man is strong and, although he is losing ground, he is still very fit for his age! So how do you differentiate them? Which one to choose ?
- The official website of Apache Subversion
- Introduction to Subversion
- SVN tutorial (in English)
Git vs. Mercurial vs. Subversion, the game of 5 differences
- Centralization: this is the fundamental point of differentiation. Git and Mercurial are decentralized. When you use them, everything is hosted on both the server and your computer. You can work wherever you want, by plane, on the train, offline, etc. You have access to all the data of the deposit since they are downloaded in full on your machine. For Subversion which is a centralized system, this is not the case. You must connect to the depot server.
- Storage: Each system manages and stores its data in a different way. While Git advocates the use of metadata in a directory named .git, where all downloaded resources are located (tags, branches, version history, etc.), SVN only stores files. You will notice a noticeable difference in terms of storage space.
- Branches: Using branches is far easier with Git and Mercurial than with Subversion. Git and Mercurial manage everything and know which file should be merged or not. For Subversion, on the other hand, the branches are only the result of a repository directory. To merge branches, you will need to use special commands.
- Revisions: Subversion and Mercurial use a unique numbering for each revision of the files. This is not the case for Git. (For this one, find out more information and ways to get around this thorny problem in this article from StackOverflow.com .)
- Protection: the content in Git and Mercurial is encrypted using the SHA-1 ( Secure Hash Algorithm) algorithm. This avoids the corruption of a repository as a result of a problem sending over the Internet or the crash of a hard drive. This is not the case for Subversion.
For further comparison, this Wikipedia article (in English) brings together all the version control software helping you to better differentiate them according to protocols, portability and other features they have come to offer you.
Graph showing the evolution of searches on Google since 2004
This document shows, by a roundabout way, the popularity of a particular software solution based on the number of searches on Google over the years. If CVS was very popular in the 2000s, it is gradually losing ground to SVN. Then, in the 2010s, it is the turn of the latter to be dethroned by the ogre Git. Mercurial, finally, makes his merry way and stays in the neck and neck.
The use of version control software is certainly not mandatory, however, it is an essential partner in the management of your projects. And that, no matter the number of collaborators. Moreover, many developers who use such systems while they are alone to program. Because, even beyond the collaborative aspect, they allow backup, deployment and portability of work without equal. So do not wait, lean on it! You will see, in the long run, these software ends up having only advantages.