Early history of CI / How did version control & CI work on the Chrysler Comprehensive Compensation project?
| Newsgroups | gmane.comp.programming.extreme-programming |
|---|---|
| Message-ID | <[email protected]> |
Hello all, I have a few historical questions after being away from this group for more than 10 years... Because I've never more than played with Smalltalk I'm not familiar with how version control works in Smalltalk. I knew that there was something called Envy/Developer but I never really looked into it. Consequently I never really understood why C3 used a central (but manual) integration server. Coming from a C++/CVS background I didn't understand the need. At XP2000 there was a presentation about something called Team Streams, which looked suspiciously like what CVS was already doing at the time, CVS was clearly much, much more primitive than the Smalltalk tooling on other respects. I've long been annoyed by the fact that the term CI has come to mean 'using a build server' to many people and recently there's been a movement to popularise the original concept under the name Trunk-based development. Unfortunately the people behind it seem to be unaware that that is what we used to call CI in the early days. There have been some misunderstandings on the Wikipedia CI page too. This has led me to delve a bit more deeply into the early history of CI. From a description of Smalltalk version control by Stephan Eggermont and from skimming through an old Envy manual online I get the impression it worked like this: It used versioning on method, class, subapplication and application level. Each version was numbered, tracked its ancestors and was linked to an author. Unpublished and still mutable versions were referred to as editions. All versions (and editions?) were stored in a central server and were visible to other developers, subject to access control rules. People could mix and match versions into their own versions. Presumably there was some logon mechanism. If people paired they probably worked on both parties' stories during one session and had to switch between versions. If it was possible to switch between two developers' working sets at one machine, what was the integration machine still needed for?