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
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
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
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
Hewlett-Packard Company - 1 - HP-UX Release 11i: November 2000
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)).
-f[rev] Forces a deposit. The new revision is deposited even
if it is not different from the preceding one.
-k[rev] 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.
-l[rev] 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.
-m"msg" Uses the string msg as the log message for all
revisions checked in.
-n"name" Assigns the symbolic name name to the checked-in
revision. ci prints an error message if name is
already assigned to another number.
-N"name" Same as -n, except that it overrides a previous
assignment of name.
-q[rev] Quiet mode; diagnostic output is not printed. A
revision that is not different from the preceding one
is not deposited unless -f is given.
-r[rev] 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
Hewlett-Packard Company - 2 - HP-UX Release 11i: November 2000
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 non-head
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
non-existing 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.
-s"state" Sets the state of the checked-in revision to the
identifier state. The default is Exp.
-t[txtfile] 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.
-u[rev] Similar to -l, except that the deposited revision is
not locked. This is useful if one wants to process
(e.g., compile) the revision immediately after check
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.
Hewlett-Packard Company - 3 - HP-UX Release 11i: November 2000
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 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
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 non-text (binary) files results in data corruption.
ci was developed by Walter F. Tichy.
co(1), ident(1), rcs(1), rcsdiff(1), rcsmerge(1), rlog(1), rcsfile(4),
Hewlett-Packard Company - 4 - HP-UX Release 11i: November 2000