Just as there’s more to driving than knowing how to operate a car, there’s more to SCM than knowing how to use an SCM tool. Mastering SCM starts with understanding how software evolves and recognizing how team collaboration, defect management, parallel releases, and distributed development affect the software life cycle. For just as road maps and rules of the road are the bigger part of driving, the software life cycle is the bigger part of SCM.
In this chapter we take a step back from Perforce to look at the roadmap of the software life cycle: the mainline model. We’ll identify the codelines that form the mainline model and describe the rules of the road for change flowing between them. This chapter sets the stage for the chapters that follow, each of which demonstrates using Perforce to manage codelines of a particular type.
Consider the story of Ace Engineering, a fictitious software company. After a year of intensive startup development, the company introduced a new product, AcePack1.0. Sales were successful: the customer base grew. Alas, so did the bug report database. Within six months Ace had produced a point release—essentially the same product but with many bug fixes and small enhancements—as AcePack1.1. For a while, the company supported customers on either version, but at the end of the second year it announced that AcePack 1.0 was being discontinued.
During this time Ace developers had started working on two ...