Versions are often saved in binary files for storage in repositories, distribution to users etc. These files are commonly call 'mcz files' as they carry the extension .mcz.
Mcz files are actually ZIP archives that follow certain conventions. Conceptually a Version contains four things:
A Version is related to a particular Package. Each mcz
file contains a member called package
which contains
information about the Version's Package.
This is the meta-data about the Snapshot. It contains the
author initials, date and time the Snapshot was taken, and
the ancestry of the Snapshot. Each mcz file contains a member
called version
' which contains this information.
A Version may depend on specific Versions of other
packages. An mcz file may contain a dependencies/
directory with a member for each dependency. These members
will be named after the Package depended upon.
A Snapshot is a record of the state of the package at a
particular time. Each mcz file contains a directory named
snapshot/
. All the members in this directory contain
definitions of program elements, which when combined form the
Snapshot. Current versions of Monticello only create one
member in this directory, called source.st
.
The member named snapshot/source.st
contains a
standard fileout of the code that belongs to the package.
The other memebers of the zip archive are encoded using
S-expressions. Conceptually, the expressions represent
nestable dictionaries. Each pair of elements in a list
represent a key and value. The following example needs little
explaination: (key1 'value1' key2 (sub1 'sub value
1'))