Some things you should know about CVS

General description

CVS stands for Concurrent Versions System, which is used to keep track of the history of changes in source files. It's a helpful tool and a practical way to use when a project is developed by multiple people. The CVS uses a client-server architecture (just like IRC): the source code of a software being developed is stored on a CVS server, on which clients can do many operations, such as uploading and downloading files, and so on. These are done with specific commands sent to the server. Not everyone is allowed to use every commands, and you don't have to know all of them, you will see that later. Basically we only need to download files, not more.

The relation between UnrealIRCd and the CVS

The coders of UnrealIRCd use a CVS server to develop their IRC server software, this is the place where you can always find and download the current source code of UnrealIRCd. You can either download the latest release from there, or the development version (we often call it as 'devel CVS'), which may have certain changes (new features, bugfixes, etc.) that haven't been released yet. As soon as the code is ready for a new release, all things that were only present in CVS will appear in the new version of UnrealIRCd.

As I stated, the devel CVS may contain many bugfixes and new features; however on the other hand you should keep in mind that what is in CVS is the actual development code, therefore it can also introduce new bugs and even compilation errors, not very often, but unfortunately it may happen.

Why do certain modules require devel CVS?

Obviously, the module API (Application Programming Interface) is being developed, too. There are many cases when a module can only be coded efficiently if a specific feature is present in the API. Therefore, if I see a change in CVS that is handy for me, I will use it up in my new modules. I try to keep them compatible with the official releases of UnrealIRCd, but sometimes it's not possible.

How to distinct between the devel CVS and the latest release?

Each changes made in devel CVS are differentiated by revision numbers in those files where the changes were made in. Generally, one file, called 'Changes' is always updated with a comment after each changes, and at the same time the revision number of that file is automatically incremented. This number is shown in the '$Id' line (you can find it near the very beginning of the file). This number in the Changes file is very important one, since it's also used as a release ID (or build ID). Hence, with comparing this number between different Unreal versions, you can find out which is newest.

However, we rarely use this way of getting release IDs, because they also appear in many places in your ircd compilation. For example, if you type /info when you are connected to the server, you can see the 'ReleaseID' near the end of the returned text, or on *NIX systems, the full version info is returned by the './unreal version' shell command.

How to download the current development code?

See http://www.unrealircd.com/?page=cvs.

(By the way, to do this, a cvs client is required to be installed on your system. If you don't have it, download it from cvshome.org.)

Other download methods

See Syzop's description about the CVS here.