| Home Page | Recent Changes | Preferences

# CVS

CVS (Concurrent Versions System) is a system that allows development teams to keep track of collectively edited files. It works for arbitary files much like the Wiki does for pages, but with much smarter handling of concurrent edits of the same text files (like source code files): Edits that don't collide (on a per-line basis) are merged into one document.

The Unreal Wiki's scripts and styles are maintained in a CVS repository. See /Wiki for more information and for a quick walkthrough on using CVS.

## Idea

> I can't imagine programming without it... that would be like parachuting without a parachute!

> Brian Fitzpatrick

Users check out a module from a repository, thus getting a work copy of it. By updating that work copy they can get the latest version of that module from the repository; non-colliding edits of text files are merged into the local files (rather than overwriting local changes). After updating, users can commit their changes to the repository along with a log entry. (Editing collisions must be resolved manually after updating the local copy before being able to commit changes.)

CVS keeps track of all changes and allows users to view every file's history (the list of log entries associated with a file) and any prior version of a file.

See also http://www.cvshome.org.

## Setup

CVS is based on a client/server architecture, even if both client and server run on the same machine (and perhaps offline). That architecture makes it very easy for whole development teams to access a single repository that always keeps the most current files.

CVS and most (all?) of its clients are [Open Source] and thus free of charge.

### Windows

#### Client

CVS Command Line Client
  Stand-alone command line tool; most other (graphical) clients are just front-ends for this one.
  http://www.cvshome.org/dev/codewindow.html
TortoiseCVS
  TortoiseCVS lets you work with files under CVS version control directly from Windows Explorer. It's freely available under the GPL.
  http://www.tortoisecvs.org
WinCvs
  Graphical front-end for the CVS command-line client for Windows. Includes the command-line client.
  http://www.wincvs.org (mirrored at http://cvsgui.sourceforge.net)
WOTgreal
  All-round coding development tool for UnrealScript – now includes simple source control for CVS repositories (update, commit, add).
  http://www.wotgreal.com

Links to more graphical CVS front-ends for Windows can also be found on the [command line client download page].

#### Server

CVS Server for NT
  Runs as a Windows NT service.
  http://www.cvsnt.org

Using the passwd file authentication method is probably the most convenient way to go unless you want to create user accounts for all CVS users on your NT system. For the passwd file method to work, create a (single) Windows NT user with exactly the permissions necessary to read/write-access the repository and specify it as your users' real user name in the `passwd` file you're creating.

### Mac

#### Client

MacCvs
  WinCvs's Mac brother. (Not to be confused with MacCVS below.)
  http://www.cvsgui.org
MacCVS
  CVS client for the Mac, sponsored by Netscape and Mozilla.org. (Not to be confused with MacCvs above. Note the different spelling.)
  http://www.maccvs.org

### Unix/Linux

CVS is bundled with most distributions. Check `man cvs` for more information.

## Troubleshooting

How do I rename a file in a CVS repository?
  The simplest way is by deleting the file with its old name and re-adding it with its new name; that way you lose its entire logging history though. If you have direct file system access to the repository directory, you can also [rename by copying] – that method keeps the file's history and still allows you to check out old revisions by tag (though not by date).
Help! It says we have a lock but no one is doing anything!
  Go into the CVS home of the project you're working on and delete any files named #cvs.lock or anything similar. Have the person who created the lock attempt to check in or out again to see if the problem reappears before deciding it's been dealt with. The easiest solution if the problem becomes chronic is to have the developer who's causing locks to recheckout everything from CVS.
It says my password is incorrect, but I've double checked it.
  Passwords are case sensitive for most systems. Ensure that the password was typed in the case that you're attempting to use. The problem might not be your password, it might also be your username. Most modern systems won't tell you whether the username or password is incorrect to keep crackers from guessing usernames.
I just deleted a file and re-added it. The only difference was in capitalization, but now the CVS repository is acting plain crazy!
  Simple answer: Don't do this. Not unless you plan on editing the repository files by hand. To solve the problem remove the old, miscapitalized file from the CVS repository Attic, and any copies of the file from the repository itself. Then re-add the file to the repository, recommit it, and you should be good to go. The first paragraph above, "Help! It says we have a lock but no one is doing anything!" can be caused by trying to rename a file with only capitalization changes.

## Related Topics

- Version Control

## Links

- ConcurrentVersionsSystem
- [SourceForge], an Open Source development site offering version control, bug tracking and much more to Open Source developers.

pakman: Added link to a mirror for WinCVS, original link was dead month ago, though works now.

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Image Uploads

Random Page

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

Mapping Topics

Mapping Lessons

UnrealEd Interface

Questions&Answers

Scripting Topics

Scripting Lessons

Making Mods

Class Tree

Questions&Answers

Modeling Topics

Questions&Answers

Log In