retrv(1)
π retrv(1) β shapeTools, bestie edition
okay so first things first: the manual name is retrv, and it lives in section 1 of the ShapeTools world. it's a lil program with a whole secret second personality named vcat, and we're gonna talk about both. grab a snack. π
β¨ 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 ]
like, yes, that's two whole programs in one synopsis. she contains multitudes. π
π¦ 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 you just want a copy of a file version retrieved, this behavior can be overridden with the -dest option. but listen β 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. it's giving long-distance relationship drama, except the files literally cannot do long distance. π
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. no cap, she's polite. π«Ά
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. literally cat behavior but make it version control. π
π ATTRIBUTE CITATIONS π
it is possible to cite any of a file-version's attributes within 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. iykyk. β¨
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. bestie that is lowkey a cron job before cron jobs existed π₯
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. cute.
additional options are:
-?,-helpβ print brief instructions about using this program. she's helpful like that π«Ά-c,-copyβ do not check for equality. usually,retrvchecks 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-cswitch. no more "wait, are these the same?" detective work π-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 theAtFSarchives, 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 namedAtFS. so basically: you can yeet it somewhere else, but then it's on its own forever, no history, orphan era π-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 (seevadm -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. pick a lane, bestie π
-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. β οΈ no permission slip, no warning, just vibes-i messageβ set message as intent text describing the changes that are intended to be applied to a busy version that is installed byretrv. 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-lockswitch 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-lockswitch is incompatible with-fix. it's giving "i call dibs" but legally binding π-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-fis set. this option is useful for batch operation. shhh, she's working π€«-stdinβ forceretrvto 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. that's the whole vibe. the archives live there, periodt. π
β SEE ALSO β
π BUGS π
redirection of stdin in conjunction with option -stdin doesn't work.
like. it just doesn't. we know. we're all living with it. π
π AUTHOR π
Axel.Mahler@cs.tu-berlin.de
and that's the whole page, bestie!! this was retrv-4.5, dated Thu Jun 17 14:03:56 1993 β yeah she's vintage, she's an icon, she's been slaying since before most of us existed π β¨ thanks for reading, go retrieve something. π¦
π¦ where this page comes from
- debian bookworm: atfs 1.4pl6-15+b1
- ubuntu jammy: atfs 1.4pl6-15
- ubuntu noble: atfs 1.4pl6-16.1build1
- ubuntu resolute: atfs 1.4pl6-17
- ubuntu stonking: atfs 1.4pl6-17
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms