CVS
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 /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) - 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
- 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 - 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
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
- 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
- ConcurrentVersionsSystem
- [SourceForge], an Open Source development site offering version control, bug tracking and much more to Open Source developers.
Related Topics
Discussion
pakman: Added link to a mirror for WinCVS, original link was dead month ago, though works now.