Track and control your code with version control systems

Software codes are constantly evolving, become more complex as newer versions are released. But sometimes errors and bugs occur and being able to retrieve the latest stable version of your software code can be a life-saver. For this, most software code repositories are equipped with version control systems (VCS).

Why do you need version control and how is it implemented?

Software developers working in teams are continually writing new source code and changing existing source code. The code for a project is typically organized in a folder structure or “file tree”. One developer on the team may be working on a new feature while another developer fixes an unrelated bug by changing code, each developer may make their changes in several parts of the file tree.


Version control tracks every individual change by each contributor and prevent conflicts. One popular and widely used VCS is the distributed version control. In a distributed version control system, clients mirror the entire repository, including its full history. Thus, if any server dies, and these systems were collaborating via that server, any of the client repositories can be copied back up to the server to restore it. Every clone is really a full backup of all the data.

Benefits of version control systems

Every version control systems should have the following benefits:

  • A complete long-term change history of every file (creations, deletions, edits).
  • Branching and merging, to allow paralleled and independent modifications and merging of work back together.
  • Traceability, to follow each change made to the software and annotate them.

Some examples of version control systems

Most VCS are directly implemented in code repositories, which offer a wide range of services and features. Here are some well-known VCS:

  • Git and GitHub: Git was the first version control system ever developed. It is now integrated in GitHub, a code repository that offers many services, such as providing developers and researchers with a dynamic and collaborative environment, often referred to as a social coding platform, that supports peer review, commenting, and discussion for open-source and private projects (Figure 2).
Figure 2. The structure of a GitHub-based project illustrating project structure and interactions with the community. From Perez-Riverol et al.


  • Bazaar, a version control system that helps you track project history over time and to collaborate easily with others. Bazaar runs on every OS as a desktop application and is freely available.
  • Mercurial, a desktop application that clones your whole project history and supports a multitude of workflows.
  • BitBucket, a web-based distributed version control system that enables pull requests, branch permissions, and code aware searches.
  • OMICtools support code versioning for your tools! If you want to version your source code, you can get started by finding your tool using the search engine. Once you find it, click the upload version button and follow the instructions.


Given the usefulness of version control systems, the question is not “are you using one?” but rather “which one are you using?”.


Blischak et al. (2016). A Quick Introduction to Version Control with Git and GitHub. PLoS Computational Biology.

Perez-Riverol et al. (2016). Ten Simple Rules for Taking Advantage of Git and GitHub. PLoS Computational Biology.