# man > cvs(5)

---
type: CommandReference
command: cvs (support files)
mode: man
section: 5
source: man-pages
---

## Quick Reference
- `$CVSROOT/CVSROOT/modules` — define symbolic names for collections of source code
- `$CVSROOT/CVSROOT/commitinfo` — define programs to execute before commit (pre-commit checks)
- `$CVSROOT/CVSROOT/loginfo` — define programs to execute after commit (log processing)
- `$CVSROOT/CVSROOT/cvsignore` — specify default list of files to ignore during update
- `$CVSROOT/CVSROOT/history` — enable history logging (create file to activate)
- `$CVSROOT/CVSROOT/cvswrappers` — record wrapper commands for file processing on check-in/checkout
- `$CVSROOT/CVSROOT/editinfo` — define program for editing/validating commit log entries
- `$CVSROOT/CVSROOT/rcsinfo` — define forms for log messages
- `$CVSROOT/CVSROOT/taginfo` — define programs to execute after tag or rtag operations

## Name
cvs - Concurrent Versions System support files

NOTE: This documentation may no longer be up to date. Consult the Cederqvist (CVS Manual) as specified in `cvs(1)`.

## Synopsis
- `$CVSROOT/CVSROOT/commitinfo,v`
- `$CVSROOT/CVSROOT/cvsignore,v`
- `$CVSROOT/CVSROOT/cvswrappers,v`
- `$CVSROOT/CVSROOT/editinfo,v`
- `$CVSROOT/CVSROOT/history`
- `$CVSROOT/CVSROOT/loginfo,v`
- `$CVSROOT/CVSROOT/modules,v`
- `$CVSROOT/CVSROOT/rcsinfo,v`
- `$CVSROOT/CVSROOT/taginfo,v`

## Options
### `modules`
- Defines symbolic names for collections of source code.
- Format: blank lines, comments (lines beginning with `#`), and module definitions. Long lines continue with `\`.
- Two forms:
  - `mname -a aliases...` — simple alias; `cvs` treats `mname` as a list of `aliases` (other module names or paths).
  - `mname [options] dir [files...] [&module...]` — defines module `mname` as all files in directory `dir` (relative to `$CVSROOT`). Optionally specify `files` to select particular files. Include `&module` to refer to other modules.
- Options:
  - `-d name` — name the working directory differently (new in CVS 1.3).
  - `-i prog` — run `prog` on commit (single argument: full path to repository directory).
  - `-o prog` — run `prog` on checkout (single argument: module name).
  - `-e prog` — run `prog` on export (single argument: module name).
  - `-t prog` — run `prog` on tag (two arguments: module name and symbolic tag).
  - `-u prog` — run `prog` on `cvs update` from top-level directory (single argument: full path to repository).

### `commitinfo`, `loginfo`, `rcsinfo`, `editinfo`
- Common structure: each line is a pair of fields: a regular expression (whitespace-separated) and a filename or command-line template. Lines beginning with `#` are comments.
- Special strings: `ALL` (always executed) and `DEFAULT` (fallback if no regex matches).
- `commitinfo` — commands executed *before* any commit activity. Rest of commit only proceeds if all selected commands exit with status 0.
- `rcsinfo` — specifies log templates (filenames containing forms) for the commit logging session.
- `editinfo` — script executed *before commit starts* but after log information is recorded. Non-zero exit aborts commit.
- `loginfo` — commands executed *at the end* of a commit. Commit log message is piped through the command. Use `%s` in the template to pass the list of affected files (relative path + filenames).

### `taginfo`
- Commands executed after any `tag` or `rtag` operation.
- Arguments passed to the command: `tagname`, `operation` (`add` for `tag`, `mov` for `tag -F`, `del` for `tag -d`), `repository`, and remaining pairs of `filename revision`. Non-zero exit aborts the tag.

### `cvsignore`, `.cvsignore`
- Default list of file name patterns (sh patterns) to ignore during `cvs update`.
- Load order: compiled-in defaults → `$CVSROOT/CVSROOT/cvsignore` → `$HOME/.cvsignore` → per-directory `.cvsignore` files (valid only for that directory).

### `history`
- Create this file in `$CVSROOT/CVSROOT` to enable history logging (used by `cvs history` command).

### `cvswrappers`
- Records wrapper commands for processing files on the way in and out of the repository (e.g., reformatting C code before check-in).

## Examples
- **modules file example:**
  
  m4test  unsupported/gnu/m4  foreach.m4  forloop.m4
  
  This defines module `m4test` containing two files from a deep directory. `cvs checkout m4test` creates a single working directory `m4test` with those files.

- **commitinfo line (pre-commit check):**
  ```shell
  ^path/to/repo  /usr/local/bin/check_perms
  
- **loginfo line (mail log):**
  ```shell
  ^path/to/repo  /usr/lib/sendmail -f cvslog cvs-commits@example.com
  
## See Also
- [`cvs(1)`](https://www.chedong.com/phpMan.php/man/cvs/1/markdown) — full CVS documentation

## Exit Codes
Not documented.