Versioning Concepts

Here, the concepts of Antmod's versioning system are described.

Introduction

All software artefacts are stored in a repository (using one of the repository providers, either CVS or Subversion). They are grouped into versioning units called modules. This means that files are only versioned per module, and not individually. Modules are grouped into releases, described using release descriptors (using XML files).

Release Descriptor

A release descriptor is the release unit. Conceptually it looks like this:

  |          |          |          |          |
| | | 3.8| |
| | | +----------+ |
| 2.6| | | | | 2.9|
| +----------+ | | | +------- -5.0
1.4| | | | | | | |
--------+ | | 1.1| | | |
| | +-----------+ | |
| | | | |
| | | | |
module A module B module C module D module E

Module

A module is the versioning unit. Conceptually it looks like this:

  |          |          |          |          |
r7| | | | |
--------+ | r7| | |
| | | +-----------+ | r7|
| | r7| | | | | +------- //tags/1.4
| +----------+ | | | | |
| | | | | | |
| | | | r7| | |
| | | +----------+ |
| | | | |
file A file B file C file D file E

In this example, we assume the use of Subversion. The files with repository revision 7 in the module have been tagged with tag "modulename-1-4" Note that the repository versions are a low level internal versioning mechanism of Subversion, read here for more info. That is why only tags are used to refer to a certain state of a module from within a release.

For CVS, the example looks the same, with the following differences: the file revisions would be different per file, and the tag would select the various file revisions within the module.

Who versions what

  • Files: by the SCM repository (using repository revision numbers)
  • Module versions: by the developer
  • Release descriptor versions: by the release manager