This is the command shape_releas that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator
PROGRAM:
NAME
shape_releas - shapeTools RMS construction of releases and prereleases
SYNOPSIS
shape prerelease
shape release
shape plprerelease
shape plrelease
shape extractrelease [RELEASENAME=<releaseId>] [(PARTIAL)RELEASEBASE=<path>]
DESCRIPTION
The heart of the shapeTools Release Management System is its mechanism for creating
prereleases and releases of the managed software system. These functions can be invoked
from any node of the system source repository and from any private workspace. Hence, each
node system can be (pre)released independently. Constructing a (pre)release of a non-leaf
node (a node containing no subsystems) requires all subsystems to be (pre)released
beforehand and incorporates the existing (pre)releases in the new (pre)release.
Prereleases are part of the systematic preparation of a release. They give a glance on how
a release will look like in the current development state. They should be used for
internal publication and integration testing. When a prerelease has proved to be stable
enough to be released to the outside world, it should be declared as new system release.
This mechanism allows an arbitrary number of release test cycles without prematurely using
the anticipated release number.
The general algorithm of the shape_RMS release functions is the following.
1) check release preconditions
Before a release process is sent on its way, the system is checked for releasability.
If any of the required preconditions is not met, the system is not releasable and the
release process stops. First, each subsystem - if there are any - has to be
(pre)released beforehand. Release building requires all subsystems to be released,
prereleases need the subsystems to be prereleased. The second condition, only applying
to prereleases, requires that no foreign update locks are active on any of the
components going into the (pre)release. It is advisable, that no changes to any of the
node components are unsaved (pending), no matter who is the author. However, if the
user who triggered the release process has pending changes on any components to be
released, these will be saved automatically and the update locks given up. Pending
changes with update locks by other users let the release process fail.
2) generate release name
Each release and prerelease has an identification string, built from the node name and
a two part release number. Prerelease names additionally contain a prerelease serial
number, Patchlevel releases and prereleases also the patchlevel number. The release
number is taken from the node's automatically maintained release identification file.
The generated release identification string is tagged to any component being part of
the (pre)release.
3) invoke releases of subsystems
Prereleases and releases invoke all subsystems of the current node. Prerelease
building includes the most recent prerelease of each subsystem, while release building
includes the most recent subsystem releases. Each of the subsystem components get,
additionally to the subsystem release name they already have, the freshly build
release name tagged on as symbolic name. Symbolic names may be used as surrogates for
version numbers (see vadm(1)).
4) save release components and set attributes
After all components of the included subsystems have been marked, all direct parts of
a the released node get the release identification string as symbolic name. In case of
building a prerelease, if any of the direct components has a busy version differing
from the last saved version (pending changes) and an update lock set by the user who
triggered the prerelease building, it is saved automatically before (see also 1. ).
All node component versions (from subsystems or direct components) are additionally
set to an appropriate version state (see below).
5) install components in release area
The last step is the installation of all marked component versions (subsystem
components and node components) in one of the two release areas. Releases and
prereleases that have been made from the top node of the source repository are copied
to the release area. All other releases, representing only a part of the whole
development, are installed in the partial release area.
Shape prerelease saves the current state of development. According to the algorithm
described above, all unsaved node system components are saved and the most recent version
of each component is included in the new prerelease. A prerelease additionally invokes the
most recent prerelease or release (whichever is the newest) of each subsystem. All
component versions going into the prerelease may further be identified by the
automatically generated prerelease name, having the form
<system_name>-<generation>.<revision>pre<prerelease_number> (e.g. shapeTools-1.3pre5).
The prerelease serial number is maintained automatically. It starts with 1. All prerelease
component versions are set to the state proposed. Prereleases of the whole system (the
prerelease action was invoked from the top node) cause all component versions be set to
state accessed. A copy of the prerelease is extracted from the source repository and
established installed in either the release area of the partial release area, depending on
whether the prerelease comprises the whole system of or just a part.
Shape release declares a previously constructed prerelease as new release. The most recent
prerelease of the current node is taken as basis. If the node contains subsystems, shape
release requires the most recent release of each subsystem to be included. If any
subsystem has a prerelease more recent than it's last release, shape gives a warning and
asks for confirmation to proceed. Due to technical reasons, it does this for each
component. Don't get confused when you have to confirm multiple times. The new release
gets a name of the form
<system_name>-<generation>.<revision> (e.g. shapeTools-1.3).
The generation and revision number are derived from the system's automatically maintained
release identification file. With each release, a new version of this file is created.
Declaring a new generation for the release file (see Save(1)) increases the system
generation number. All component versions of the release are set to state published,
except when a releases of the whole system is constructed (shape release from the system
tree top node). In this case, the state of all component versions is set to frozen. Like
prereleases, a copy of the release is extracted from the source repository and written to
one of the release area or the partial release area.
Shape plprerelease and shape plrelease (shape patchlevel(pre)release) are basically the
same as prerelease and release. The only difference is the form of the identification
string. Patchlevel prereleases are named
<system_name>-<gen>.<rev>pl<patchlevel>pre<prerel_num> (e.g. shapeTools-1.3pl5pre2)
and patchlevel releases
<system_name>-<gen>.<rev>pl<patchlevel> (e.g. shapeTools-1.3pl5).
The idea of patchlevel releases is to construct releases that are not to be shipped
completely but rather as a patch to an existing release. Of course, real releases may also
be shipped as patches, so this is rather a naming convention.
Shape extractrelease extracts a copy of a certain release or prerelease from the project's
central source repository and installs it in the release area or the partial release area
(depending on whether it is a (pre)release of the whole system or just a part of the
system). When called without further settings, it installs the most recent (pre)releases.
The installed copy represents a source distribution of the system or system part. It is
totally independent of the development environment.
An explicit release identification may be given to shape extractrelease by setting
RELEASENAME=<release_identification> on the command line. Setting one of the macros
RELEASEBASE or PARTIALRELEASEBASE on the command line redefines the path to the base
directory of the release tree. (Pre)releases of the whole system are copied to
RELEASEBASE, all others to PARTIALRELEASEBASE. Check your Shapefile for the default
settings of these two macros. Subdirectories will be automatically created there as
needed.
Use shape_releas online using onworks.net services