Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > C


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


ci — check in RCS revisions


ci [options] file...


ci stores new revisions into RCS files. Each file name ending in ,v is treated as an RCS file; all others are assumed to be working files. ci deposits the contents of each working file into the corresponding RCS file (see rcsintro(5)).

If the RCS file does not exist, ci creates it and deposits the contents of the working file as the initial revision. The default number is "1.1". The access list is initialized to empty. Instead of the log message, ci requests descriptive text (see the -t option below).

An RCS file created by ci inherits the read and execute permissions from the working file. If the RCS file exists, ci preserves its read and execute permissions. ci always turns off all write permissions of RCS files.

The caller of the command must have read/write permission for the directories containing the RCS file and the working file, and read permission for the RCS file itself. A number of temporary files are created. A semaphore file is created in the directory containing the RCS file. ci always creates a new RCS file and unlinks the old one; therefore links to RCS files are useless.

For ci to work, the user's login must be in the access list unless the access list is empty, the user is the owner of the file, or the user is super-user.

Normally, ci checks whether the revision to be deposited is different from the preceding one. If it is not different, ci either aborts the deposit (if -q is given) or asks whether to abort (if -q is omitted). A deposit can be forced with the -f option.

If sufficient memory is not available for checking the difference between the revision to be deposited and the preceding one, then either swap or maxdsiz values can be increased.

For each revision deposited, ci prompts for a log message. The log message should summarize the change and must be terminated with a line containing a single "." or a control-D. If several files are being checked in, ci asks whether or not to reuse the log message from the previous file. If the standard input is not a terminal, ci suppresses the prompt and uses the same log message for all files (see -m option below.

The number of the deposited revision can be given with any of the options -r, -f, -k, -l, -u, or -q (see -r option below).

To add a new revision to an existing branch, the head revision on that branch must be locked by the caller. Otherwise, only a new branch can be created. This restriction is not enforced for the owner of the file, unless locking is set to strict (see rcs(1)). A lock held by someone else can be broken with the rcs command (see rcs(1)).



Forces a deposit. The new revision is deposited even if it is not different from the preceding one.


Searches the working file for keyword values to determine its revision number, creation date, author, and state (see co(1)), and assigns these values to the deposited revision, rather than computing them locally. A revision number given with a command option overrides the number in the working file. This option is useful for software distribution. A revision that is sent to several sites should be checked in with the -k option at these sites to preserve its original number, date, author, and state.


Works like -r, except it performs an additional co -l for the deposited revision. Thus, the deposited revision is immediately checked out again and locked. This is useful for saving a revision although one wants to continue editing it after the check-in.


Uses the string msg as the log message for all revisions checked in.


Assigns the symbolic name name to the checked-in revision. ci prints an error message if name is already assigned to another number.


Same as -n, except that it overrides a previous assignment of name.


Quiet mode; diagnostic output is not printed. A revision that is not different from the preceding one is not deposited unless -f is given.


Assigns the revision number rev to the checked-in revision, releases the corresponding lock, and deletes the working file. This is the default.

If rev is omitted, ci derives the new revision number from the caller's last lock. If the caller has locked the head revision of a branch, the new revision is added to the head of that branch and a new revision number is assigned to the new revision. The new revision number is obtained by incrementing the head revision number. If the caller locked a nonhead revision, a new branch is started at the locked revision, and the number of the locked revision is incremented. The default initial branch and level numbers are 1. If the caller holds no lock, but is the owner of the file and locking is not set to strict, the revision is added to the head of the trunk.

If rev indicates a revision number, it must be higher than the latest one on the branch to which rev belongs, or must start a new branch.

If rev indicates a branch instead of a revision, the new revision is added to the head of that branch. The level number is obtained by incrementing the head revision number of that branch. If rev indicates a nonexisting branch, that branch is created with the initial revision numbered rev.1.

NOTE: On the trunk, revisions can be added to the head, but not inserted.


Sets the state of the checked-in revision to the identifier state. The default is Exp.


Writes descriptive text into the RCS file (deletes the existing text). If txtfile is omitted, ci prompts the user for text from standard input that is terminated with a line containing a single . or Ctrl-D. Otherwise, the descriptive text is copied from the file txtfile. During initialization, descriptive text is requested even if -t is not given. The prompt is suppressed if standard input is not a terminal.


Similar to -l, except that the deposited revision is not locked. This is useful if one wants to process (for example, compile) the revision immediately after check in.

Access Control Lists (ACLs)

Optional ACL entries should not be added to RCS files, because they might be deleted.


For each revision, ci prints the RCS file, the working file, and the number of both the deposited and the preceding revision. The exit status always refers to the last file checked in, and is 0 if the operation was successful, 1 if unsuccessful.


If the current directory contains a subdirectory RCS with an RCS file io.c,v, all of the following commands deposit the latest revision from io.c into RCS/io.c,v:

ci io.c ci RCS/io.c,v ci io.c,v ci io.c RCS/io.c,v ci io.c io.c,v ci RCS/io.c,v io.c ci io.c,v io.c

Check in version 1.2 of RCS file foo.c,v, with the message Bug fix:

ci -r1.2 -m"Bug Fix" foo.c,v


The names of RCS files are generated by appending ,v to the end of the working file name. If the resulting RCS file name is too long for the file system on which the RCS file should reside, ci terminates with an error message.

The log message cannot exceed 2046 bytes.

A file with approximately 240 revisions may cause a hash table overflow. ci cannot add another revision to the file until some of the old revisions have been removed. Use the rcs -o (obsolete) command option to remove old revisions.

RCS is designed to be used with TEXT files only. Attempting to use RCS with nontext (binary) files results in data corruption.


ci was developed by Walter F. Tichy.

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.