It is common that parts of a large program will both be revised many times and exist in multiple variants at any one time (for different hardware versions, different speed/capacity tradeoffs, etc.). Furthermore, a particular version or variant of one part may depend on certain versions or variants of another part. Keeping track of the actual combinations in delivered versions of the program, and knowing what combinations are allowed, is often a critical and difficult task for the project administrator.
This paper reviews the problem and outlines some solutions within the context of the Ada programming language. Ada provides a clear language concept of the “compilation unit,” which would be the natural part for which to keep variant and revision histories. Ada is only a programming language, however, and so does not (and should not) dictate a regime for version control. Its aim instead is to leave the implementor as much flexibility as possible, given minimal requirements for compiler-enforced compatibility dependencies between compilation units. Consequently, a simple-minded implementation needs to provide means for keeping track of only a single variant of the latest revision of each unit. The main thrust of the paper is what a more ambitious implementation could do.
The paper defines the problem in the Ada context, describes extra information that would be of assistance in version control, and discusses the effects of the library structure and of recompilations. There is also a review of related work in other languages and of problems still to be solved.
The paper satisfies the promises of its title. I would have preferred more on library structure and on the issue of when a recompilation represents a revision and not simply the obsolescence of a throwaway debug version, but clearly the author was constrained by the limitations of a conference presentation. English is not the author’s mother tongue, so we get errors such as “parts…is,” but in general it was easy to grasp his intent.
In summary, the paper is a useful introduction to version control in Ada for a general audience.