Provided by: atfs_1.4pl6-14_amd64 bug

NAME

       save - save revision of a file

SYNOPSIS

       save [ version binding options ] [ options ] files ..
       Save [ version binding options ] [ options ] files ..

       Options: [ -?fglq ] [ -help ] [ -a (or -alias) version alias ] [ -delta ] [ -force ]
                [ -fix generation | alias | date ] [ -newgen ] [ -lock ] [ -m (or -logmsg) message ]
                [ -n (or -setvnum) version number ] [ -nodelta ] [ -quiet ] [ -setattrs filename ] [ -stdin ]
                [ -version ]

DESCRIPTION

       save takes a snapshot of the current state of the specified files, stores them into corresponding archive
       files  and assigns unique version numbers to the created versions.  The original files will by default be
       removed and unlocked in order to support a cooperative style  of  teamwork.  Versions  of  files  can  be
       restored as regular files with the retrv command. Versions in archives are inalterable.

       An  archive  will  be  created  the  first  time  a  file is saved in a subdirectory named AtFS. The AtFS
       subdirectory must be present.  When an archive is created, save asks for a short description of the saved
       documents  purpose.  If  a subsequent version is saved, the user is prompted for a comment describing the
       modifications. The save command requires that the version history of a file that shall be saved is locked
       by  the  user  issuing  the  command.   This  is to prevent different developers from applying concurrent
       updates to the same file and thereby invalidating the other developers' modifications. The only exception
       from  this rule is the first time a file is saved, which means that an archive has yet to be created. For
       more details on locking, see the ShapeTools Tutorial, retrv(1), and vadm(1).

       The save program assigns unique version ids to each evolving revision of a file. The version id is a pair
       of  integers  separated by a dot, identifying the major and minor revision (<generation>.<revision>) of a
       version. Subsequent invocations of save increase the minor revision number, starting  with  version  1.0.
       The  generation  number is increased by invocations of Save (see below). There is no support for explicit
       branching. The version control toolkit rather encourages a linear model of version evolution. Instead  of
       branching,  save  allows  to  insert  new  versions  into old generations (see description of -fix). This
       allows, for example, to fix bugs in major revision N (version numbers N.x) which  may  be  the  currently
       operational release while development proceeds in generation N+1 (or N+n if you like).

       Before  a file is saved it will be checked whether it has actually changed with respect to the previously
       saved version. If the file hasn't changed, the user will be asked if it  should  be  saved  anyway.   The
       command line option -f (or -force) overrides the prompting.

       The  version  control  system  supports a built-in basic status model for versions. The version status is
       intended to express different  levels  of  quality,  and  aims  at  providing  basic  project  management
       functionality.   State attributes of software objects can help to describe an object's current meaning in
       the development process (e.g.  tested, incompletely implemented, submitted for evaluation, or shipped  to
       customer).

       A  newly  created version will by default be assigned the state saved. This status marks the lowest level
       of quality, suggesting that  the  version  is  just  saved  for  possible  later  retrieval  but  may  be
       inconsistent.  Versions that meet higher quality standards (or are part of a release) should be marked by
       appropriate status (see vadm -promote, sbmt, or publ).

       If the program is invoked as Save (that is with capital-S) a  new  major  revision  (generation)  of  the
       document  history is created - provided the programmer issuing the command has the permission to do this.
       This option is intended to support a development model where maintenance of an operational release can be
       performed parallel to the development of the next release (see -fix).

OPTIONS

       For  version  selection,  any  version  binding  option, as described on the vbind(1) manual page, may be
       given. Version bind directives in brackets added to the filename are interpreted different to vbind(1). A
       version  number  following  the  name  will be treated as if the -n (-setvnum) option was given with this
       version number as argument. Any other string in brackets will be taken as alias name (see -alias option).

       -?, -help
              print short information about usage of this command.

       -a, -alias version alias
              assign a version alias (a symbolic name)  to  the  new  version.  In  more  detail,  an  attribute
              __SymbolicName__ is set to the value specified in version alias. The specified alias name must not
              be assigned to any other version within the same version history.  Alternatively to the -a option,
              the  version  alias may be given in brackets following the name of the file to be saved. Check the
              description of the -n option for an example of this notation.

       -delta Create delta for internal storage. This is the default.

       -f, -force
              force a revision deposit (i.e. without asking), even if the busy version hasn't changed since  the
              last time it was saved.

       -fix generation | alias | date
              append a new version after the most recent version within the referenced major revision level. The
              major revision level (called ``generation'') is either  referenced  explicitly,  by  specifying  a
              number,  or  implicitly, by specifying a version alias (e.g. a release name) or a date. The latter
              form is particularly useful for saving a fix that extends over more than one object.

              This option is intended to support maintenance of older releases while development proceeds at the
              logical end of the version chain. In order to insert a (fixed) version into an old generation, one
              must have a lock on the most recent version of that generation (generation lock). This  lock  must
              be  set with the vadm command. The -fix option is incompatible with -setvnum, -newgen and the Save
              command option.

       -g, -newgen
              create a major revision of the document. Major revisions are indicated by the first number in  the
              version-id (generation).  Only the archive administrator is allowed to create major revisions. The
              archive administrator is the user who owns  the  AtFS  subdirectory  where  the  version  archives
              reside. Use of this switch is identical to calling the program as Save.

       -l, -lock
              Keep the lock on the version history. The saved files will not be removed.

       -m, -logmsg message
              set message as descriptive note for all document versions that result from the invocation of save.
              When message starts with an at sign (@), it is interpreted as filename and the text  contained  in
              the  file  is set as descriptive note for all document versions that result from the invocation of
              save.

       -n, -setvnum version number
              set the version number of the newly created revision to version.  The version must be given in the
              format <generation>.<revision> where generation and revision are integers. Example:
              save -setvnum 4.3 mkattr.c
              The  specified  version  must  be greater than the highest previously assigned version number in a
              given object history. Only the archive administrator may set version numbers directly. The archive
              administrator  is  the  user  who  owns  the  AtFS subdirectory where the version archives reside.
              -setvnum is useful for keeping consistent version numbering across related,  physically  different
              object  repositories,  or for converting archive formats of other revision control systems to this
              toolkit (see: rcs2atfs). Alternatively to the -n option,  the  version  number  may  be  given  in
              brackets following the name of the file to be saved.  The command
              save mkattr.c[4.3]
              is interpreted the same way as the example above.

       -nodelta
              Suppress delta generation

       -q, -quiet
              quiet operation. No messages are printed on standard output.  If the busy version is unchanged, it
              will not be saved unless -f is set. The user will not be prompted for a descriptive  note.  If  no
              message  or  note  is  supplied  with the command line (see options -m and -t) the log will remain
              empty. This option is useful for batch operation.

       -setattrs filename
              read names and values of user defined attributes from the  file  filename.   The  entries  in  the
              attribute  file  must  have  either  of  the  formats  NAME=VALUE  or NAME+=VALUE. NAME must be an
              alphanumeric string (no spaces) immediately followed by the assignment operator. The value may  be
              an arbitrary ASCII string with the exception of control-A and newline characters. There is exactly
              one attribute definition per line. The file's last character must be a newline character.

              If the first format (single equal symbol) is used, previously  assigned  values  of  user  defined
              attributes  are  reset  with  the values defined in the attribute file.  The second format (``plus
              equal'') allows to append additional values to an already existing attribute. If no attribute of a
              given name exists, it will be created.

              This way to attach attributes was introduced to allow quick automatic attachment of a large number
              of attributes to version objects. This interface to  the  attribute  setting  facility  is  mainly
              intended for tools that invoke save.

              If  the -setattrs option is omitted, save searches the environment for a variable SVATTRS. If this
              variable is absent, no user defined attributes will be assigned to the evolving versions.

       -stdin force save to read a descriptive note from stdin instead of forking an editor.  A  previously  set
              intent-message is printed.

       -version
              print the version of the program itself.

FILES

       All revisions of documents are stored in archive files in the subdirectory AtFS.

BUGS

       With  the  -g  (-newgen) option given and an unchanged busy version, save ignores the users answer to the
       question, if the busy version should be saved anyway. It always assumes a positive  answer  and  goes  on
       with its saving procedure. You can avoid saving by interrupting (Ctrl-C) save during the next question if
       the unmodified version should be commented anyway.

SEE ALSO

       retrv(1), vbind(1)

AUTHOR

       Axel.Mahler@cs.tu-berlin.de and Andreas.Lampen@cs.tu-berlin.de