Version Control Software Comparison: Git, Mercurial,CVS, SVN

Derya Cortuk
4 min readOct 28, 2019

Version control system enables developers to keep track of the revisions in software development projects, and allow them to work together on those projects. Especially, tracking who, what, when, and why changes are made is crucial. Version Control is a common feature set of Software Configuration Management (SCM) tools.

There are plenty of options concerning which version control framework is the best. When choosing the right version control for your project, you should ponder that some of pros of one package such as speed and IDE plug-in capabilities.

Version Control Software Features & Capabilities

  • Centralized reviewable, retrievable version history
  • Digital asset (e.g. binary files) storage
  • Pull request, code review, collaboration tools
  • Parallel development streams & branches
  • Isolated code branches
  • Branch creation or deletion
  • Compare and merge version branches
  • Revert code to previous versions
  • Code version management (e.g. conflict resolution)
  • Role-based access and control

GIT

Git was created by Linus Torvalds in 2005.It is written in C, Shell, Perl, TCL(Tool Command Language), and Python.

Features

  • Open source version control system
  • Provides strong support for non-linear development.
  • Distributed repository model.
  • Compatible with existing systems and protocols like HTTP, FTP, ssh.
  • Capable of efficiently handling small to large sized projects.
  • Cryptographic authentication of history.
  • Toolkit-based design.
  • Periodic explicit object packing.
  • Garbage accumulates until collected.

Pros

  • Super-fast and efficient performance.
  • Cross-platform
  • Code changes can be very easily and clearly tracked.
  • Easily maintainable and robust.
  • Offers an amazing command line utility known as git bash.
  • Also offers GIT GUI where you can very quickly re-scan, state change, sign off, commit & push the code quickly with just a few clicks.

Cons

  • Complex and bigger history log become difficult to understand.
  • Does not support keyword expansion and timestamp preservation.

Mercurial

Mercurial was introduced close to Git and is also a distributed peer-to-peer system. Mercurial is a distributed revision-control tool which is written majorly in Python and some small sections in C Language.

Features

  • High performance and scalability.
  • Advanced branching and merging capabilities.
  • Fully distributed collaborative development.
  • Decentralized
  • Handles both plain text and binary files robustly.
  • Possesses an integrated web interface.

Pros

  • Fast and powerful
  • Easy to learn
  • Lightweight and portable.
  • Conceptually simple

Cons

  • Partial checkouts are not allowed.
  • Quite problematic when used with additional extensions.

CVS-Concurrent Versions System

CVS, also known as the Concurrent Versioning System, is a free client-server revision control system in the field of software. It was developed in the UNIX operating system environment and is available in both Free Software Foundation and commercial versions.

Features

  • Client-server repository model.
  • Multiple developers might work on the same project parallelly.
  • CVS client will keep the working copy of the file up-to-date and requires manual intervention only when an edit conflict occurs
  • Keeps a historical snapshot of the project.
  • Anonymous read access.
  • ‘Update’ command to keep local copies up to date.
  • Can uphold different branches of a project.
  • Excludes symbolic links to avoid a security risk.
  • Uses delta compression technique for efficient storage.

Pros

  • Excellent cross-platform support.
  • Robust and fully-featured command-line client permits powerful scripting
  • Helpful support from vast CVS community
  • allows good web browsing of the source code repository
  • It’s a very old, well known & understood tool.
  • Suits the collaborative nature of the open-source world splendidly.

Cons

  • No integrity checking for source code repository.
  • Does not support atomic check-outs and commits.
  • Poor support for distributed source control.
  • Does not support signed revisions and merge tracking.

SVN-APACHE SUBVERSION

SVN is a free and open source software under Apache license. It is written in C language. SVN was created as an alternative to CVS(Concurrent Versions System) with the aim to fix some bugs and make it more reliable to use.

Features

  • Client-server repository model. However, SVK permits SVN to have distributed branches.
  • Directories are versioned.
  • Copying, deleting, moving and renaming operations are also versioned.
  • Supports atomic commits.
  • Versioned symbolic links.
  • Free-form versioned metadata.
  • Space efficient binary diff storage.
  • Branching is not dependent upon the file size and this is a cheap operation.
  • Other features-merge tracking, full MIME support, path-based authorization, file locking, standalone server operation.

Pros

  • Has a benefit of good GUI tools like TortoiseSVN.
  • Supports empty directories.
  • Have better windows support as compared to Git.
  • Easy to set up and administer.
  • Integrates well with Windows, leading IDE and Agile tools.

Cons

  • Still contains bugs relating to renaming files and directories.
  • Insufficient repository management commands.
  • Slower comparative speed.
  • Does not support signed revisions.

--

--