Shital BK’s Expanded Definition of Version Control

TO: Prof. Jason Ellis

FROM: Shital B K

DATE: 10/21/2020

SUBJECT: Expanded Definition of Version Control

Introduction

The purpose of this document is to elaborate about the term “Version Control”. The document contains three different parts including definitions, context and working definitions. The core term to be defined and elaborated in the document will be about Git and GitHub which are known to be focus of the version control system used in these modern days.

Definitions

Version control systems are a category of software tools used to record changes of files by keeping a track of modifications done to the code. In software engineering, version control is a tool responsible for keeping track of the changes made in programs, documents, and files. Git and GitHub are one of the popular version controls used these days. Ninety percent of the software engineers use these tools to simplify their tasks while writing code. “A version control system (VCS) allows you to track the iterative changes you make to your code. Thus, you can experiment with new ideas but always have the option to revert to a specific past version of the code you used to generate particular results.” (Blischak, Davenport, Wilson, 2016, p.1).

“Git, the brainchild of Linus Torvalds, began its life in 2005 as a revision management system used for coordinating the Linux kernel’s development.” (Spinellis, 2012, p.100). Git is a distributed version control system for tracking changes in source code in the software development process. GitHub is another tool used in software development which runs with git by providing some additional features.  â€śGitHub uses a “fork & pull” collaboration model, where developers create their own copies of a repository and submit requests when they want the project maintainer to incorporate their changes into the project’s main branch, thus providing an environment in which people can easily conduct code reviews.” (Gousios, Spinellis, 2017, p.501). The additional features of GitHub include, task management, bug tracking, feature requests and collaboration ease among the developers.

Context

Today’s software development cannot be imagined without version control and specially without the use of Git and GitHub. “First, by keeping locally a complete version of a repository, git allows you to work and commit individual changes without requiring Internet connectivity. This local staging area also makes it possible for you to edit, reorder, and squash together your past commits (rebase, in git’s parlance) in order to present a coherent story to the outside world.” (Spinellis, 2012, p.101).  Git and GitHub has made the workflow of the developers convenient and efficient which allows them to be productive. “Developers don’t really care whether they work on version 8.2.72.6 of branch RELENG_8_2, but they care deeply about software revisions: changes they made to ­ x a specific­ bug, infrastructure changes that were needed to support that ­ x, another set of changes that didn’t work out, and some work in progress that was interrupted to work on that urgent bug ­ x. Fittingly for a tool written by a programmer to scratch his own itch, git supports these needs with gusto.” (Spinellis, 2012, p.100). Git allows developers a complete clone of the repository which means a complete copy of the projects that can be used in their existing work. As a result, these features are mostly required in the software development which is the reason every developer uses Git and GitHub.

Another feature of git is that it elevates the software revisions which allows developers to select precisely which one will comprise an integrated change, down to partial changes within a single file. “More importantly, git keeps as a graph a complete history of what changes have been merged into which branches, thus allowing developers to think in terms of revisions they’ve integrated rather than low-level ­ file differences between diverging branch snapshots.” (Spinellis, 2012, p.100). The merge feature allows to add the additional piece of code which can be added in the existing repository. The merge feature generally works with the branches where two branches are combined.

Working Definitions

Version Control has made the life of developers very easier and it has been one of the mandatory tools to be used in the software development environment. Some of the most popular version control systems such as Git and GitHub should be learned by every developer.

References

Gousios, G., & Spinellis, D. (2017). Mining Software Engineering Data from GitHub. ICSE: International Conference on Software Engineering, 501–502. https://doi.org/10.1109/ICSE-C.2017.164

Spinellis, D. (2012). Git. IEEE Software29(3), 100–101. https://doi.org/10.1109/MS.2012.61

Blischak, J. D., Davenport, E. R., & Wilson, G. (2016). A Quick Introduction to Version Control with Git and GitHub. PLoS Computational Biology12(1), 1–18.

https://doi.org/10.1371/journal.pcbi.1004668

Leave a Reply