---
name: "ci"
section: "1"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["linux", "openbsd"]
url: "https://new.carta.tech/ci"
---

# ci(1)

check in RCS revisions

## NAME

**ci** – check in RCS revisions

## SYNOPSIS

**ci** \[**-qV**\] \[**-d**\[*date*\]\] \[**-f**\[*rev*\]\] \[**-I**\[*rev*\]\] \[**-i**\[*rev*\]\] \[**-j**\[*rev*\]\] \[**-k**\[*rev*\]\] \[**-l**\[*rev*\]\] \[**-M**\[*rev*\]\] \[**-m***msg*\] \[**-N***symbol*\] \[**-n***symbol*\] \[**-r**\[*rev*\]\] \[**-s***state*\] \[**-t**\[*str*\]\] \[**-u**\[*rev*\]\] \[**-w***username*\] \[**-x***suffixes*\] \[**-z***tz*\] *file ...*

## DESCRIPTION

The **ci** program is used to check in new revisions to RCS files.

When a file is checked in, it is stored in the RCS directory with a specific revision number, and the original file itself is deleted. The RCS file is stored with the same name, but with ‘,v’ appended. **ci** will prompt for a check-in message, to be stored with the file, which can be displayed using [rlog(1)](/rlog/1.md).

Revision numbering starts at 1.1 and increases logically. Numbering can be altered using the **-k** option, however. The ‘,v’ suffix can also be altered, using the **-x** option.

**ci** also supports keyword substitution – see the [rcs(1)](/rcs/1.md) man page for more information.

The following options are supported:

- **-d**\[*date*\]

  Uses *date* for check-in date and time. If *date* is not specified, use the working file's last modification time.

- **-f**\[*rev*\]

  Force check-in – even if no changes have been made to the working file.

- **-I**\[*rev*\]

  Interactive mode.

- **-i**\[*rev*\]

  Only do initial check-in. Print error and refuse to do check-in if the RCS file already exists.

- **-j**\[*rev*\]

  Only do update check-in. Print error and refuse to do check-in if the RCS file does not already exist.

- **-k**\[*rev*\]

  Search the working file for keywords and set the revision number, creation date, state and author to the values found in these keywords instead of computing them.

- **-l**\[*rev*\]

  The same as **-r**, but also immediately checks out the deposited revision and locks it. This is useful if you wish to continue to edit the working file after check-in.

- **-M**\[*rev*\]

  Set the modification time of the file to the date of the retrieved revision.

- **-m***msg*

  Specify a log message. A line beginning with a hash character (‘#’) is considered a comment and ignored.

- **-N***symbol*

  Assign the symbolic name *symbol* to the checked in revision, overwriting any previous assignment of *symbol*.

- **-n***symbol*

  The same as **-N** except it does not overwrite previous symbols.

- **-q**

  Be quiet about reporting.

- **-r**\[*rev*\]

  Check in revision *rev*. However, if *rev* is not specified the meaning is completely different – override any **-l** or **-u** options, ensuring the default behaviour of releasing a lock and removing the working file.

- **-s***state*

  Sets the state of the deposited revision to the identifier *state*. The specified value may not contain a space character.

- **-t**\[*str*\]

  Change the descriptive text. The argument *str* is interpreted as the name of a file containing the descriptive text or, if prefixed with a ‘-’, the actual descriptive text itself. If no argument is given, this option is ignored (for compatibility reasons).

- **-u**\[*rev*\]

  The same as **-r**, but also immediately checks out the deposited revision read-only. Useful if you wish to read the working file after check-in.

- **-V**

  Print RCS's version number.

- **-w***username*

  Uses *username* as the author field of the deposited revision.

- **-x***suffixes*

  Specifies the suffixes for RCS files. Suffixes should be separated by the ‘/’ character.

- **-z***tz*

  Specify the date output format in keyword substitution, and the default time zone for *date* used in the **-d** option.

## ENVIRONMENT

- RCSINIT

  If set, this variable should contain a list of space-delimited options that are prepended to the argument list.

- TMPDIR

  When set, this variable specifies the directory where temporary files are to be created. The default is set to */tmp*.

## EXIT STATUS

The **ci** utility exits 0 on success, and \>0 if an error occurs.

## SEE ALSO

[co(1)](/co/1.md), [ident(1)](/ident/1.md), [rcs(1)](/rcs/1.md), [rcsclean(1)](/rcsclean/1.md), [rcsdiff(1)](/rcsdiff/1.md), [rcsmerge(1)](/rcsmerge/1.md), [rlog(1)](/rlog/1.md)
