The Official FVWM Homepage - CVS Procedures

Overview

Fvwm2 development uses a CVS server. To know what is going in with the source tree you should be reading mail on the Fvwm Workers List. See the Mailing List Info page for more information.

Development Source Code Download

To just download development source code, you can use the "anonymous" login. Of course, you need the cvs client software on your local machine. First you must login:

cvs -z3 -d :pserver:anonymous@cvs.hpc.uh.edu:/home/cvs/fvwm login
(The password is 'guest'). If you see no reaction to this command that indicates it worked. Then you can checkout the latest source code with:

cvs -z3 -d :pserver:anonymous@cvs.hpc.uh.edu:/home/cvs/fvwm checkout fvwm
This creates a "fvwm" directory in your current directory. Under the "fvwm" directory you will find the current main branch source code. Note: the state of this code fluctuates wildly. It will contain bugs, maybe ones that crash the program; it may not even compile for you. Consider it alpha-quality code.

Branches

You can see branches off the main branch by using the "status -v" command:

cd fvwm
cvs status -v README
(Once you "cd" into the source directory, you no longer have to type in the whole "-d" argument, its stored inside the source tree.) The "status -v" command should be issued against a file that has been in the source tree from the very beginning. The "README" file is always a good bet. To retrieve a branch, you can do the "checkout" shown above with the "-r branch_name" argument:

cvs -z3 -d :pserver:anonymous@cvs.hpc.uh.edu:/home/cvs/fvwm checkout -r branch_name fvwm

Getting Updates

If you have an existing tree, and you just want to update it:

cd fvwm
cvs update (-r branch_name)
The "update" command can be used to go to any branch in the tree, it doesn't matter whether it is an earlier or later branch. "Update" without an argument makes the tree current based on the branch it was last on.

Getting Update Access

Using the procedures described above, and being on the workers list are a pre-requisite to gaining update access. We expect to have heard from you more than once on the fvwm-workers list so that we have some idea who you are. Doing some testing, submitting some patches, and getting involved in the discussions will help us know about you. After you have been involved for a while, if we don't suggest it, then ask. The fvwm2 development team is not a closed environment, we welcome new members. There are no required duties, all work is strictly voluntary. If there is agreement on the list that you should be given update access, you will need to choose a CVS user ID and provide an encrypted password. The latter can be obtained with the following Perl snippet:

  perl -e 'print crypt("yourpass",join("",((a..z,A..Z,0..9)[rand(62),rand(62)]))), "\n"'
Change 'yourpass' to whatever you want your password to be. Once you have update access, re-do the "login" command above using your CVS user ID in place of 'anonymous', and your password in place of 'guest', and you are on your way.

Starting a Project

Discuss your ideas on the workers list before you start. Someone may be working on the same thing you have in mind. If you just have a small patch you want to make, you may just commit it to the main branch. If the change is large, and lots of other work is going on, you may want to do your changes on a "side branch" which will get merged into the main branch later on.

Creating a Branch

Branches are assigned names. We prefer branch names consisting of 2 fully spelled out words connected by an underscore. The first branch was "animate_icons" which should set the pattern for future branch names. Assuming you have a checked out source tree, you create a branch called new_branch:

cd fvwm
cvs rtag new_branch_start fvwm
cvs rtag -b -r new_branch_start new_branch fvwm
Every branch must have a start tag. The "-r new_branch_start" puts the branch "new_branch" on the "new_branch_start" branch. The "-b" makes the branch a branch off the main branch.

Adding Directories and Files

First create the new directories and modules. Then, assuming the new directory is named "newdir" and the new module is "newmod.c":

cd fvwm
cvs add -m  "New directory for ..." newdir
cd newdir
cvs add -m "New module for ..." newmod.c

Committing Changes

When you commit, you can commit from a sub-directory, or from the top of the tree. If you don't indicate the file to commit, everything you have added (with add), changed or deleted (with remove) is committed from the current directory down.

cd fvwm
cvs commit (-r branch_name) (files)