NAME
retrv - retrieve a revision of a file
SYNOPSIS
retrv [ version binding options ] [ options ] files ..
Options: [ -?cfilq ] [ -help ] [ -copy ] [ -dest path ] [ -fix ]
[ -force ] [ -intent message ] [ -lock ] [ -quiet ] [ -stdin ]
[ -version ] [ -xpoff ]
vcat [ version binding options ] [ options ] files ..
Options: [ -?q ] [ -help ] [ -quiet ] [ -version ] [ -xpoff ]
DESCRIPTION
Retrv retrieves a specified, previously saved version of a file from
the version object base. The version archive is expected to reside in
the AtFS subdirectory. A selected version will by default be retrieved
into a file in the directory where it was originally saved. If just a
copy of a file version shall be retrieved, this behavior can be
overridden with the -dest option. If a busy version is created with the
-lock option, it must be created in the directory from where it was
saved. This is necessary to maintain the spatial relationship between
the busy version and the corresponding history archive, residing in the
AtFS subdirectory.
Retrieve tries to be careful if an attempt is made to overwrite an
existing busy-version: unless -f (-force) is specified, retrv will ask
the caller for permission. If no busy version exists, one is created
with the same modes as the formerly saved version. If a busy version
exists, its modes are preserved.
If the program is invoked as vcat, the specified version(s) will be
printed on standard output. No status change of the object base will
occur in this case. vcat behaves similar to the cat(1) command: if
just a filename is given, vcat displays the most recent status of the
referenced object. If a busy version does exist it will be selected as
most recent status. If no busy version exists, vcat displays the most
recently saved version.
ATTRIBUTE CITATIONS
It is possible to cite any of a file-version’s attributes within the
the body of the version. This can be done by using attribute citation
expressions. These expressions have the form "$__attributename$".
Version attributes that are cited within the text of a stored revision
are expanded by default. In this case, the citation expression will be
substituted by the cited attribute’s value. For a list of predefined
attribute names, check the vadm(1) manual page.
There are three basic kinds of attribute values: genuine values,
reference values, and execution values. Genuine values are simply
strings that are assigned to an attribute. Reference values are
pointers to files or AtFS-versions whose contents will be substituted
in place of an attribute-citation. Reference values are strings that
begin with a circumflex-character, typically followed by pathname, e.g.
^/usr/local/lib/std-header[2.4]. Execution values are names of
executable programs, whose standard output is substituted in place of
an attribute-citation. Execution values are strings that begin with an
exclamation-mark character, typically followed by the name of the
program, e.g. !/bin/date. Execution values can be used to generate
highly dynamic attributes or a primitive form of event-triggers.
When expanding an attribute citation, retrv first looks for an
attribute of the mentioned name within the version’s set of associated
attributes. If no attribute of that name can be found, the environment
is searched for a variable of that name. In case the cited attribute
exists and has a value, the value is itself searched for attribute-
citations that are expanded recursively. If neither an attribute nor
an environment variable of the cited name can be found, no substitution
takes place and the expression will be left unchanged. The same is true
if a referenced object of a reference value does not exist, or an
execution value happens to not be executable. Attribute citation
expressions are also left unchanged if a revision is retrieved with the
-lock option. Expansion of attribute citation within documents can be
controlled by the pseudo-attribute citations "$__xpoff$" and
"$__xpon$".
OPTIONS
For version selection, any version binding option, as described on the
vbind(1) manual page, may be given, or a version bind directive may be
given in brackets added to the file name.
Additional options are:
-?, -help
print brief instructions about using this program.
-c, -copy
Do not check for equality. Usually, retrv checks whether an
existing destination file is identical to the version to be
retrieved and suppresses copying in this case. This behaviour is
mainly for efficiency reasons and may be disabled by the -c
switch.
-dest path
retrieve the specified version from the object base and install
a copy it in the directory denoted by path. As this directory
may be a long way apart from the directory containing the AtFS
archives, this copy of the retrieved version is separated from
its history and subsequently unrelated to the object history it
came from. Proper object histories require a constant spatial
relationship of any busy versions and the corresponding
archives. This relationship requires the archives to reside in a
subdirectory named AtFS.
-fix attempt to reserve the privilege to add a new version to an old
generation (insert a new minor revision into an old major
revision) within the object history. If successful, the user who
issued the command holds a generation lock. There can be only
one lock per generation, preventing simultaneous updates of the
generation. The generation lock is, by convention, a revision
lock (see vadm -lock) attached to the version with the highest
version number within a generation.
The -fix switch is intended to support concurrency of the main
development process and maintenance activities (such as bug
fixing) for older releases. When a version is retrieved with the
purpose to fix it, it is called the fixpoint version. The
fixpoint version accumulates all fixes applied to a baseline
version within a generation. One important advantage of this
policy is the elimination of the need to create a branch for
each fix that must later be merged with the ‘‘mainline’’
version, containing previous fixes. So, if retrv is invoked with
‘‘-fix’’ it will restore the fixpoint version (the most recent
minor revision within the implied generation) rather than the
explicitly referenced version. However, retrv issues a warning,
if the baseline- and the fixpoint version are not identical.
To insert a fix into an old generation, use the -fix option of
the save command. When setting a lock on a generation, the
requesting user is prompted for an optional description of the
planned changes. The -fix switch is incompatible with -lock.
-f, -force
force the reinstallation of the specified version as busy
version without asking the user, even if a writable (possibly
unsaved) busy version exists.
-i message
set message as intent text describing the changes that are
intended to be applied to a busy version that is installed by
retrv. When message starts with an at sign (@), it is
interpreted as filename and the text contained in the file is
takes as intent text. If message is ‘‘-’’, the change intent is
read from standard input. The latter case is identical to
specifying the command line switch -stdin. This option requires
the -lock switch to be set in order to be effective.
-l, -lock
attempt to reserve the privilege to add a new version to the
main development line of an object history, thus preventing
multiple programmers working upon the same object base from
interfering with each other by saving concurrent updates. When
setting a new lock on an object history, prompt the requesting
user for an optional description of the planned changes. The
-lock switch is incompatible with -fix.
-q, -quiet
quiet operation. No messages are printed on standard output. If
a current busy version exists, it will not be overwritten by the
specified version unless -f is set. This option is useful for
batch operation.
-stdin force retrv to read the message describing the change intent
from stdin rather than fork an editor.
-version
print version identification for this program.
-xpoff Do not expand attribute citations in the restored file.
FILES
All revisions of documents are retrieved from archive files located in
the subdirectory AtFS.
SEE ALSO
vbind(1), save(1), vadm(1)
BUGS
Redirection of stdin in conjunction with option -stdin doesn’t work.
AUTHOR
Axel.Mahler@cs.tu-berlin.de