At the moment, most of the developers working on ascent are relatively new to CVS. This page is here to provide some helpful tips and guidelines to setting up CVS to work with ascent on the sourceforge servers.
Sections
- General Configuration
- Environment
- The CVS configuration file
- Handy Commands
- List of Modules
- Sourceforge Documentation
General Configuration
To access the cvs repositories at sourceforge, you will need the following:
- A Sourceforge account
- An SSH client
- A CVS client
Additionally, to work on ascent, you will need apache, php, and MySQL.
The focus of ascent is to get it working with MySQL first,
with Postgres support being semi-configured and working so that it
can be easily added in full at a later date.
If you would like to use PostgreSQL instead of MySQL as your development
platform, that would be great, as the more compatible we are up front,
the better.
While using CVS, you will need to create a working directory. I use /usr/local/cvs/sf-ascent as mine, so I will use that as the directory for this documentation. Please change any references to /usr/local/cvs/sf-ascent to whatever you have set up on your system as the working copy.
Environment
It is assumed that you are using some flavor of unix to access the
cvs repository.
Whether that means linux, solaris, or even cygwin, the
following should work.
There are a couple of environment variables that affect the way cvs operates.
The most important (wrt ascent anyway) are:
- CVS_RSH - This controls the method used to connect to the cvs server.
- CVSROOT - This sets the base directory of the cvs repository
To access the ascent repository at sourceforge, you should set these variables as follows:
CVS_RSH=ssh CVSROOT=your_sourceforge_username@cvs1.sourceforge.net:/cvsroot/ascent
The CVS configuration file
In addition to the environment variables discussed above, there is a configuration file you may wish to edit. It should be located in your home directory, and is named .cvsrc
This file contains settings which control the behavior of the various cvs commands. For the purposes of ascent, it may make sense to minimally include the following:
checkout -P update -P
These options ensure that no empty directories are retrieved during checkout and update operations. This is important, because there is no way to remove directories from cvs, and if you do not have these options enabled, you will get a number of empty directories which are leftover from the old directory structure, which can be very confusing.
Handy Commands
Here are a few useful commands for starting out with cvs.
NOTE: Anything in [brackets] below is optional
-
Checkout
Used to checkout one of the modulescd /usr/local/cvs/sf-ascent cvs checkout MODULENAME
-
Update
Used to sync your working copy with the repository (this is a downstream sync only, any changes checked in by others since your last update/checkout are downloaded to your copy, no changes you've made are uploaded.)cd /usr/local/cvs/sf-ascent cvs update [MODULENAME]
-
Add
Used to add files and directories to your working copycd /usr/local/cvs/sf-ascent/MODULENAME[/subdirectory] cvs add NEWFILE
-
Remove
Used to remove files and directories from your working copy As given below, it will remove them recursively from your local copy and then delete them from your system also. You could add 'remove -Rf' to your $HOME/.cvsrc file, but you may find it safer not to.cd /usr/local/cvs/sf-ascent/MODULENAME[/subdirectory] cvs remove -Rf FILENAME
-
Commit
Used to commit any changes you've made in your working copy up to the repository. If you are in one of the module directories, it will commit only that module's changes, if you are in the root of the tree, it will commit all changes to all modules.cd /usr/local/cvs/sf-ascent/[MODULENAME] cvs commit
List of Modules
The following modules for ascent are currently available via CVS:
- cfg - configuration and ADAuth
- db - database structure
- doc - documentation
- fnc - functions (db abstraction in particular)
- htdocs - the actual php code for the front end
Sourceforge Documentation
Here is a list of links to some of the sourceforge documentation. I personally find it not very useful, but that could just be me, so here it is, fwiw.