# $rcs-file(5)

[Home] [Commands] [Variables] [Macro-Dev] [Glossary]

## NAME

$rcs-file - RCS (and SCCS) file name
$rcs-ci-com - RCS (and SCCS) check in command
$rcs-cif-com - RCS (and SCCS) check in first command
$rcs-co-com - RCS (and SCCS) check out command
$rcs-cou-com - RCS (and SCCS) check out unlock command
$rcs-ue-com - RCS (and SCCS) unedit file command

## SYNOPSIS

$rcs-file "string"; Default is ""
$rcs-ci-com "string"; Default is ""
$rcs-cif-com "string"; Default is ""
$rcs-co-com "string"; Default is ""
$rcs-cou-com "string"; Default is ""
$rcs-ue-com "string"; Default is ""

## DESCRIPTION

RCS (Revision Control System) and SCCS (Source Code Control System) are programmers source code history data-bases. RCS introduces a system in which only one programmer can edit a source file at any one time, enforcing some form of stability in the global environment. The fact that this interface was developed for the RCS system is irrelevant, and should be usable under any other control systems such as SCCS.

When using RCS, finding a file (see find-file(2)) checks for the existence of the actual file. If this is not found then it checks for the existence of an RCS $rcs-file variable, and if present then it constructs the RCS file name and checks for its existence. If this file does not exist then it really is a new file and an new buffer is created. If the file does exist then the file is checked out using the $rcs-co-com which executes to create a file with the original file name, ready for loading.

$rcs-file is the name of the file when it is fully check in, as opposed to when it is ready to be viewed or edited. In RCS, this is usually in the `RCS` directory with an appended "`,v`", i.e. for the file `foo.c` in the `/test` directory, when fully checked in, the file will not be found at "`/test/foo.c`", but at "`/test/RCS/foo.c,v`". When testing for an RCS file, the file name is split into two parts, the path name and the file name, the path is always inserted at the start, and the file name can inserted in the rcs string by using the special "`%f`" token, thus if $rcs-file is set to "`RCS/%f,v`", the RCS file name is constructed from "`/test/`" + "`RCS/`" + "`foo.c`" + "`,v`".

If the RCS file is found then the $rcs-co-com (RCS Check Out COMmand) which is a simple system command line with the exception for `%f` which is replaced by the file name, is executed. This is expected to create the file (with the correct file name) ready for viewing.

Once a file is loaded, then the rcs-file(2) command has one of two effects:-

If the file is in view mode then the $rcs-cou-com (RCS Check Out Unlock COMmand) is executed (system command line using the "%f" as the file name). If the RCS file does not exist then is simply toggles the view mode, allowing editing.

If the file is not in view mode MicroEmacs attempts to check the file back into RCS using either $rcs-ci-com (if the RCS file already exists) or the the $rcs-cif-com (RCS Check In First COMmand). The "`%f`" is again used for the file name, the "`%m`" can also be used to get a comment from the user at check in time which will be inserted (without quotes) into the $rcs-ci-com command line. For example, one possible $rcs-ci-com setting is "`ci -m\"%m\" %f`" which uses the ci(1) program with the -m option to give a check in message.

If rcs-file is given a negative argument instead of checking in or out the current buffer's file it executes the command specified by $rcs-ue-com to unedit or abort any changes made to the file. After the command has been executed the file is reloaded.

## NOTES

The RCS variables are by default undefined and must be explicitly enabled in the start-up files.

## EXAMPLE

The following are typical variable definitions for the RCS interface:-

    set-variable $rcs-file     "RCS/%f,v"
    set-variable $rcs-co-com   "co %f"
    set-variable $rcs-cou-com  "co -l %f"
    set-variable $rcs-ci-com   "ci -u -m\"%m\" %f"

Note that the $rcs-cif-com variable is usually left unassigned and $rcs-ci-com is used by default.

The following are typical variable definitions for the SCCS interface:-

    set-variable $rcs-file     "SCCS/s.%f"
    set-variable $rcs-co-com   "sccs get %f"
    set-variable $rcs-cou-com  "sccs edit %f"
    set-variable $rcs-ci-com   "sccs delget -y\"%m\" %f"
    set-variable $rcs-ci-com   "sccs create %f"
    set-variable $rcs-ue-com   "sccs unedit %f"

The following variable definitions can be used for MicroSoft's Visual Source Safe:-

    set-variable $rcs-file    "%f"
    set-variable $rcs-cou-com "ss.exe checkout %f"
    set-variable $rcs-co-com  "ss.exe checkout %f"
    set-variable $rcs-ci-com  "ss.exe checkin %f \"-c%m\""

The above definitions can check a file out for edit and commit changes back.

## SEE ALSO

find-file(2), rcs-file(2).

(c) Copyright JASSPA 2009
Last Modified: 2009/08/29
Generated On: 2009/10/12

</HMTL>