Code Management System

From VSI OpenVMS Wiki
Revision as of 16:43, 14 December 2022 by Jane.doe (talk | contribs) (Created page with "The '''Code Management System (CMS)''' is a library system for software development and maintenance, part of DECset. Its features include: * storing code and other relate...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

The Code Management System (CMS) is a library system for software development and maintenance, part of DECset. Its features include:

  • storing code and other related files in libraries
  • controlling versions of code (generations)
  • manipulating groups of objects as a unit
  • manipulating versions of the entire system (classes)
  • managing code reviews
  • keeping track of history and storing comments
  • merging changes made to different generations of the software
  • additional security mechanisms
  • providing notifications when an event occurs

Concepts

  • A CMS library is a repository for CMS objects. It resides in a directory that has been initialized for use solely by CMS; your default directory cannot be a CMS library. The CREATE LIBRARY command creates CMS control files in the specified directory. A working library is chosen with the SET LIBRARY command; CMS$LIBRARY logical is defined to point to your current library. Once the library is created, it should only be accessed through CMS commands.
  • A CMS element represents all versions of a particular file in a CMS library. An element cannot be a directory file.
  • A CMS generation represents a specific version of an element. When an element is first created, CMS creates generation 1 of that element. When the element is later modified (reserved and replaced), CMS creates a new generation of that element.
  • A CMS group is a set of elements that can be manipulated as a unit.
  • A CMS class is a set of particular generations of elements. Typically generations of elements are combined into classes to represent progressive stages, or base levels, in the development of an entire system.
  • A reservation is when an element is taken out for modification and then replaced with a new version.
  • A reference copy directory is a directory that stores the copies of the latest main-line generation of selected library elements.

CMS vs Git

Although CMS and Git are very different, some similarity can be traced between their main concepts.

A checkout in Git is similar to a reservation in CMS in that you mark a file or group that you are going to work on, but in Git it is an instance of the entire repository where some files may change but others remain unchanged. In CMS language, Git creates a group that includes all elements in the library at each commit. When a developer is ready to make changes to a file or a set of files, they RESERVE them and then after making the changes REPLACE them. CMS creates a new generation of those files. That generation can then be added to a class, which is a certain stage in the development of the entire system, for instance, version 2 of the product. If the changes made pertain to version 2, the generation will have to be added to that class.