Worst-case scenario: the UEd Goblin wipes the map and burns down your house.

Legacy:CVS

From Unreal Wiki, The Unreal Engine Documentation Site
Revision as of 17:05, 28 March 2006 by Tarquin (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

CVS (Concurrent Versions System) is a Version Control system: it 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 Legacy:CVS/Wiki for more information and for a quick walkthrough on using CVS.

Idea[edit]

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[edit]

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[edit]

Client[edit]

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)
LinCVS 
Powerful and easy to use graphical frontend for the CVS command-line client. It runs on Windows, Linux/Unix and Mac OS X.
http://www.lincvs.org
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[edit]

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[edit]

Client[edit]

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
LinCVS 
Powerful and easy to use graphical frontend for the CVS command-line client. It runs on Windows, Linux/Unix and Mac OS X.
http://www.lincvs.org

Unix/Linux[edit]

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

LinCVS 
Powerful and easy to use graphical frontend for the CVS command-line client. It runs on Windows, Linux/Unix and Mac OS X.
http://www.lincvs.org

Troubleshooting[edit]

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.

External Links[edit]

Related Topics[edit]

Discussion[edit]

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