Node: Files attribute, Next: , Previous: Checkin-Time and Checkin-Login attributes, Up: Descriptors



Files attribute

Files (file1 (internal-file-id1) options1) ... Attribute

Each of the 0 or more arguments of the Files attribute denotes one of the constituents of a version. The file arguments give the pathnames of files relative to some root directory. The internal-file-id arguments contain information used by PRCS to identify versions of individual files.

If F is one of the file arguments, then no component of F may be `.' or `..'. Unless one of the options listed for F is :directory (see below), no other file argument in the Files attribute may begin with `F/'.

The precise format of an internal file identifier is not defined, and is subject to change whenever PRCS is revised. Two properties, however, are guaranteed:

  • If a particular internal file identifier describes a file in one project-version descriptor, it can be copied verbatim as the internal file identifier for a file (possibly with a different name) in another project-version descriptor for the same project in the same repository. It will denote a file with the same contents, aside possibly from the values of certain keywords (see Keywords). As a result, it is possible to copy an entire project version to another (with another version number) without checking out the files, simply by copying the Files attribute of the project-version descriptor. Likewise, if you wish to change the name of a file from one version to another, you should reflect the change in the working version of the project descriptor, keeping its internal file identifier unchanged.
  • Each non-null internal file identifier belongs to an internal-file family. If a working file has a non-null internal file identifier, then a prcs checkin will assign it an internal file identifier (possibly unchanged from that of the working version) in the same internal-file family. If a working file has a null internal file identifier (`()'), prcs checkin will put it in a new internal-file family, otherwise unpopulated. Internal-file families are useful for certain kinds of version comparisons and merges.

The options arguments denote 0 or more labels indicating special properties of the file. At the moment, four are defined.

:no-keywords
indicates that keywords in the file are not to be expanded.
:symlink
indicates the file is a symbolic link, which will be recorded at checkin and reproduced at checkout.
:directory
indicates that the file is a directory, which will be created, if necessary, at checkout. This is useful for having empty directories in your project.
:tag=label
records label as a piece of user-defined information about the file. PRCS does not interpret label; its main use is for filtering in the prcs execute subcommand (see execute). There may be any number of :tag options attached to a file.

The project descriptor (.prj file) is not explicitly included in the Files attribute. Nevertheless, it is implicitly one of the files in each project version.

For example,

          (Files
            (empty () :directory)        ; an empty directory
            (pointer () :symlink)        ; a symbolic link
            (realfile () :no-keywords)   ; the only real file in the list
          )