What are Version Control Systems?

Ever wonder how to keep track of your ever changing project files ? The answer is using a version control system. This article explains the two main approaches of version control systems.

Why bother to use a version control system?

Typical software projects are built in team environments which includes one or more team members working simultaneously on the same code base. Regardless of whether it’s a team or an individual effort, there are many files that will change overtime. The ideal way to preserve those changes is to tag them with versions and store them in case you need to recover them in future.

That is where the Version control systems comes to the picture:

“Version control systems are a category of software tools that help a software team manage changes to source code over time. Version control software keeps track of every modification to the code in a special kind of database. In case of a mistake, developers can turn back the clock and compare earlier versions of the code to help fix the mistake while minimising disruption to all team members.”

https://www.atlassian.com/git/tutorials/what-is-version-control

Industry has adopted two different approaches of version control systems:

Type of Version Control Systems
Centralised version control systems:
  • The changes done to the files will be kept in a dedicated server or a shared location. (Trunk)
  • A desktop program or a plugin will be used to update the changed files.
  • Each time a change is made, file will be tagged with a new version.
  • Changes will be handled in First-In-First-Come (FIFC) basis.  
  • Supports branches & Tags.
  • i.e: Apache Subversion
i.e of centralized version control system.
Distributed version control systems:
  • In a typical distributed system the modified files are not necessarily stored on a central location
  • Instead a copy of the file will be kept on each contributor to the repository. (Similar concept to blockchain)
  • Each developer will have a copy of the code base in their local machine which effectively function as secondary backups.
  • When a new developer wants to join the project, he needs to request a copy from the remote version to the local machine. (clone)
  • Supports branches & Tags.
  • i.e: Git Version control system.

Get your hands dirty by quickly getting started with Git version control system.

Cite this article as: Sam Muller, "What are Version Control Systems?," in Cyber Memos, August 7, 2019, https://cybermemos.com/developent/version-control/what-are-version-control-systems/.