In this chapter you have learned about ComPact's development and version control model. First of all, its basis is the check-in/check-out approach of combining a central version repository and local package changes and updates carried out by individual developers within their local work spaces. The history of each package, then, is organized so as to distinguish a main trunk, which is made up of all development versions in linear succession, and zero or more release branches, which are defined by a unique combination of a major and a minor number. Each work package is tagged with a reference, which designates the version it has been derived from. The work package is committed or released once its current state needs recording, and the new version depends on whether the development head or some release version is referred to, and on what kind of increase is desired. Moreover, package installations are always versioned according to the tagging of the parent work package unless they have been shipped to a local pool with an option of local, project, or global. A simple yet powerful mechanism of specifying the version of a package installation to be imported into another package, or a range of such versions, constitutes the main link between version and build management.
All of that is supported by comfortable means of updating the current work package, that is, switching between different versions, merging, announcing that one or more source files have been added or removed, examining the state of the current work package wrt. the repository, and displaying information on entire version trees.