Custom Search

Cyber-security: Version Control

The tracking and managing of changes to software code is called 'version control'.

It is also known as source control.

Version control systems are software tools that help software teams manage changes to source code over time. Version control software keeps track of every modification to the code in a special kind of database.Then, if a mistake is made, developers can 'turn back the clock' and compare earlier versions of the code to help fix the mistake while minimizing disruption to all team members.

As development environments have become more complex, version control systems are essential to help software teams work faster and smarter.

They are especially useful for 'DevOps teams' since they help them to reduce development time and increase successful deployments.

CVS (Concurrent Versions System)

CVS may very well be where version control systems started - originally developed by Dick Grune in July 1986. Google still hosts the original Usenet post that announced CVS. It is still basically 'the standard' - used just about everywhere – however the base for codes is not as feature rich as other solutions such as SVN.

It operates as a front end to RCS, an earlier system which operates on single files.

It expands upon RCS by adding support for repository-level change tracking, and a client-server model. It has been released under the terms of the GNU General Public License and is free software.

One good thing about CVS is that it is not too difficult to learn. It comes with a simple system that ensures revisions and files are kept updated. Given the other options, CVS may be regarded as an older form of technology, as it has been around for some time, it is still incredibly useful for system admins who want to backup and share files.

SVN (Apache Subversion)

SVN is a software versioning and revision control system that is distributed as open source under the Apache License.

Software developers use Subversion to maintain current and historical versions of files such as source code, web pages, and documentation. Its command name is 'svn'.

SVN is the version control system that the widest adoption. Most forms of open-source projects will use Subversion because many other large products such as Ruby, Python Apache, and many more use it too.

Google Code even uses SVN as a way of exclusively distributing code.

Because it is so popular, many different clients for Subversion are available.

Windows users use the Tortoise SVN for editing, viewing and modifying Subversion code bases.

If you're using a MAC, however, then Versions would be more suitable.

Git

Git was originally authored by Linus Torvalds in 2005 for development of the Linux kernel, with other kernel developers contributing to its initial development. Since 2005, Junio Hamano has been the core maintainer.

It is a free and open source software for distributed version control. It is used to track changes in any set of files, and is usually used for coordinating work among programmers collaboratively developing source code during software development.

Its goals include speed, data integrity, and support for distributed, non-linear workflows (thousands of parallel branches running on different systems).

As with most other distributed version control systems, and unlike most client–server systems, every Git directory on every computer is a full-fledged repository with complete history and full version-tracking abilities, independent of network access or a central server.

Git is considered to be a newer, and faster emerging star when it comes to version control systems. It is a fast and efficient system, many system administrators and open-source projects use Git to power their repositories.

However it is worth noting that Git is not as easy to learn as SVN or CVS is, which means that beginners may need to steer clear if they're not willing to invest time to learn the tool.

Mercurial

Mercurial is a distributed revision control tool for software developers.

It is supported on Microsoft Windows and Unix-like systems, such as FreeBSD, macOS, and Linux.

Mercurial's major design goals include high performance and scalability, decentralization, fully distributed collaborative development, robust handling of both plain text and binary files, and advanced branching and merging capabilities, while remaining conceptually simple.

Mercurial has also taken steps to ease the transition for users of other version control systems, particularly Subversion. It is primarily a command-line driven program, but graphical user interface extensions are available, e.g. TortoiseHg, and several IDEs offer support for version control with Mercurial. The integrated web-interface and various extensive documentation can help you to understand it better. So, aside from being very scalable, and incredibly fast, Mercurial is a far simpler system to use than things such as Git, which one of the reasons why certain system admins and developers use it. There aren't quite many things to learn, and the functions are less complicated, and more comparable to other CVS systems.

All of Mercurial's operations are invoked as arguments to its driver program hg (a reference to Hg – the chemical symbol of the element mercury).

Olivia Mackall originated Mercurial introducing it on 19 April 2005. She served as its lead developer until late 2016.

Mercurial is released as free software under the GPL-2.0-or-later license. It is mainly implemented using the Python programming language, but includes a binary diff implementation written in C.