This is an HTML rendering of a working paper draft that led to a publication. The publication should always be cited in preference to this draft using the following reference:

This document is also available in PDF format.

The document's metadata is available in BibTeX format.

Find the publication on Google Scholar

This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.

Diomidis Spinellis Publications

© 2005 IEEE. Personal use of this material is permitted. However, permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any copyrighted component of this work in other works must be obtained from the IEEE.

software engineering glossary

Version Control, Part I

Diomidis Spinellis

annotate: A command used for listing the latest version of each programís source code line, along with the date and file version it was introduced and person who committed it.

backout: To undo the effects of a commit, often by introducing a new commit that restores things to their previous state.

bike shed discussion: A discussion about a simple and trivial issue where everybody can (and often does) have an opinion.

branch: A set of evolving source file versions. Every branch is identified by a tag. Often, a branch identifies the file versions that have been or will be released as a product release.

code freeze: A period during which noncritical changes to the code arenít allowed.

collapse: To terminate development on one branch by integrating it with another.

commit: To integrate the changes made to a developerís private view of the source code into a branch accessible through the version control systemís repository.

commit message: An explanatory message accompanying a commit; often contains a brief description of the change, its rationale, names of contributors, reviewers, or approvers, a reference to third-party software from which the change was obtained, a schedule for integrating it to other branches, and a reference to the issue identifier associated with the change.

committer: A developer with commit privileges.

commit privileges: A personís authority to commit changes. Sometimes privileges are associated with a specific part of the product (for example, artwork or documentation) or a specific branch.

commit war: A series of conflicting and mutually reversing commits introduced by developers who disagree on how a particular element should be coded; sometimes starts with a hostile backout.

commit window: A time period during which commits are allowed for a specific branch. In some development environments, commit windows for a maintenance branch might only open for short periods a few times a year.

conflict: A change in one version of a file, which canít be reconciled with the version of the file itís applied to; can occur when versions from different branches are merged or when two committers work concurrently on the same file.

development branch: The branch where active product development takes place. A product build from the development branch will have the latest features but will also likely be immature and unstable.

errata: Severe service-disrupting bugs for which there is no known workaround. Fixes for such bugs can often be introduced on a frozen branch.

feature branch: A branch created for developing a particular set of features. The branch is typically not released, but at some point is collapsed back to its parent branch.

feature freeze: A period during which no new features are added to a specific branch; allows the branch to stabilize for a release.

frozen branch: A branch where no development takes place, either in preparation for a release or because active development has ceased on it.

head: The forefront of a branch, which contains the evolving versions of the source tree. A release coming out of head will have the newest features but will also likely be unstable.

hostile backout: A backout done without prior arrangement by a committer other than the one who introduced the original change. This is usually the opening shot in a commit war.

integrate: To pull in the changes from one child branch into its parent.

issue: A uniquely identifiable entry in an issue tracking system that describes a problem or an enhancement. An issueís record, apart from its identifier and brief description, also often identifies the environment associated with it, its status, severity, priority, and resolution, dependencies, details on replicating or solving a problem, the persons associated with it, attachments, and its change history.

lock: An exclusive permission to edit a file.


A more complete version control glossary is available online at