Source Code Management and Version Control


Reading time: 30 minutes

In this article, we will learn how source code is managed using version control systems like Git and along this, we will learn important terminologies such as versioning systems, Base lines, change control and others.

Key points about Source Code Manangement system are:

  • Record to maintain the changes made to the source code - Who? What? When?
  • All the changes to the source code, documentation, user manual, etc., should be tracked and versioned.
  • Versioning allows the change management to easily rollback to a previous working version, in case of an unsuccessful change.
  • Moreover, it enables the development and existence of multiple versions of the product that will allow the customers to take their own time to migrate.
  • Git, Mercurial, VSTS are some of the most common source version control tools on the market.
  • Semantic Versioning (Major . Minor . Patch) is adopted widely.

scm

Source code management (SCM) is critical to keep a record of the changes made to the source files. These systems will be up-to-date with the information of ‘who’ changed ‘what’ and ‘when’ did the change happen. Every organization will have a source control system, that has a set of tools to manage it. There will be a centralized source code repository, and each and every developer should have a good knowledge about the source control system in order to efficiently build and release the software.

Version control is the way to manage the source code effectively and keep track of the changes made to the source code. It is a principle employed to track, document and monitor every piece of code written i.e. it used to manage changes that occur with every code commit. This method helps developers track the code, especially when multiple people are contributing at different points in time. This also helps roll back to the earlier version if there are any errors.

Git, Subversion and Mercurial are some of the most commonly used version controls tools used globally. Version control systems (VCS) are chosen based on code structure, sharing patterns, how the code is built, the size of the codebase and the ways developers work and share the code.

Different versions of the software should be named by a global standard called ‘Semantic Versioning’ (SemVer), which is a three-component naming system, which takes the format Major . Minor . Patch. Version increment is done to:

  • MAJOR version when incompatible API changes are made to the software.
  • MINOR version a functionality is added in a backwards-compatible manner.
  • PATCH version when backwards-compatible bug fixes are made.

Consider a certain version of a software such as TensorFlow version v2.0.12. This version number follows the same rules as listed above.

For example, open any application on your mobile play store. You will find the version of the application. So if an app is updated, a bug fix might have been done, or a new functionality might have been added or else API changes have been made.

Base Lines

Baselines are primarily used as milestones in product/software development that categorises and groups changes that will be delivered in a change request. The changes to be delivered becomes a baseline on thoroughly reviewing all the changes. A baseline is used to identify one particular configuration of a software.

A baseline can be recreated at any point in time in future.

A baseline is any intermediate stage of the software that is recorded/saved and approve at certain points in time. It serves to provide a fixed reference point for change management.

There are different types of baselines that are used as a milestone in product building. They are functional baseline, developmental baseline, allocated baseline and product baseline. On completing every change request, it has to be verified and allocated in the system accounting phase.

Change Control

scm2

The Change control is a process that involves a step by step process that follows the submission of a change request. This is primarily employed to minimise the changes in the product and the effective utilisation of the resources.

Change Control is part of Change Management. The Change Control is a sequence of record, assess, plan, build/test, implement and close.

Record: The change request is initiated by placing a formal request. This request is then categorized and sent for analysis. Based on the propensity of the request, it is thoroughly analyzed to ensure that it makes technical and business sense. Once the request is approved, a plan is made to implement the change. Once all the parameters are analyzed, the change is applied, built and implemented.

The product with implemented changes are sent for the client approval and once approved, therequest comes to a closure.

Example of version control system

Examples of Version Control Systems include:

  • Git
  • Mercurial
  • BenStalk

Git

Git is the new quick rising star of form control frameworks. At first created by Linux part maker Linus Torvalds, Git has as of late overwhelmed the Web improvement network. Git offers a vastly different sort of variant control in that it's a conveyed adaptation control framework. With a circulated form control framework, there isn't one brought together code base to pull the code from. Various branches hold various parts of the code. Other form control frameworks, for example, SVN and CVS, use concentrated variant control, implying that just one ace duplicate of the product is utilized.

Mercurial

Mercurial is another open-source conveyed variant control framework, similar to Git. Mercurial was intended for bigger ventures, probably outside the extent of fashioners and free Web engineers. That doesn't imply that little advancement groups can't or shouldn't utilize it. Mercurial is amazingly quick, and the makers constructed the product with execution as the most significant component. The name "mercurial" is a modifier that signifies "Identifying with or having qualities (persuasiveness, quickness, intelligence) credited to the god Mercury."

Besides being exceptionally quick and adaptable, Mercurial is a lot less complex framework than Git, which is the reason it advances to certain engineers. There aren't the same number of capacities to learn, and the capacities are like those in different CVS frameworks. It additionally comes outfitted with an independent Web interface and broad documentation on understanding Mercurial in the event that you have been utilizing another framework.

Beanstalk

A beanstalk is a perfect alternative for the individuals who need to work from remote places. This product depends on program and cloud, enabling clients to code, submit, audit and send utilizing a program. It tends to be incorporated with informing and email stages for proficient joint efforts identified with codes and updates. It underpins both Git and SVN and accompanies worked in investigation highlights. For security, it use encryption, two-factor verification, and secret word insurance functionalities.

With this, you have the complete knowledge of Version Control and Source Code Management. Enjoy.