FVWM - CVS Information |
|
|---|---|
|
FVWM development uses a CVS server. Note: the state of code in the CVS repository fluctuates wildly. It will contain bugs, maybe ones that crash the program. It may not even compile for you. Consider it alpha-quality code. You have been warned. Contents
Before You Begin [top]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. To build FVWM from the CVS sources, you must have several GNU tools:
Without these tools, you won't be able to build out of the CVS source tree. But don't despair: download one of the daily snapshots instead! Initial Setup [top]
To make life easier on yourself, create the file
` diff -u checkout -P update -d -P cvs -q The last line makes cvs operations quieter, but you still get full error messages.
Also, if you are on a slow net link (like a dialup), you'll also want a
line containing ` Before you can download development source code for the first time, you must login to the server: cvs -d :pserver:anonymous@cvs.fvwm.org:/home/cvs/fvwm login
The password is ` Checking Out Source Code [top]Next, you checkout the source code. First you must decide what version you're interested in. The structure of the CVS tree is as follows:
Given these rules, you should be able to translate the version of you want to retrieve to a label for use with the checkout command below (or other CVS commands which might need them).
You use the CVS cvs -d :pserver:anonymous@cvs.fvwm.org:/home/cvs/fvwm checkout fvwm
This will create a new directory If you want to work on the latest code in the 2.2.x branch of the code, you can use the branch label on the checkout command line: cvs -d :pserver:anonymous@cvs.fvwm.org:/home/cvs/fvwm co -r branch-2_2 fvwm
This will put a copy of the very latest code on the 2.2.x branch
into a subdirectory cvs -d :pserver:anonymous@cvs.fvwm.org:/home/cvs/fvwm co -r branch-2_2 -d fvwm-2.2.x fvwm
Now the code will be checked out into a directory
Finally, if you want to see a particular version of the sources you can use a version label instead of a branch label on the checkout command: cvs -d :pserver:anonymous@cvs.fvwm.org:/home/cvs/fvwm co -r version-2_1_10 -d fvwm-2.1.10 fvwm Please note that if you check out a specific version, the update command will be useless in that copy: after all, the code for that version hasn't changed so there's nothing to update... The version and branch labels "stick" to your copy of the tree, so that if you check out a branch, all update commands will be handled with respect to that branch. These are called "sticky tags"; please see the CVS documentation for more details on these and how they work, or how to "un-stick" a checked out version if you need to.
Note that when you are inside the working directory, you no longer
need the "
CVS commands work from anywhere inside the source tree, and
recurse downwards. So if you happen to issue an update from inside the
` Building the Tree [top]So, you now have a copy of the code. Get in there and get to work!
The first thing you need to do is create a So, when you have a newly checked-out source tree the first thing to do is:
cd fvwm
The last command is To automate this step we include a shell script utils/configure_dev.sh
in the cvs tree, it may be run with usual
Once that's done, you can proceed to build the code as discussed in
the
./configure with appropriate options and arguments, as you like. Code Updates [top]
From time to time, the dedicated FVWM Workers will make changes to the
CVS repository. Announcements of this are automatically sent to the
You can update your copy of the sources to match the master
repository with the cvs update If you didn't use a tag when you checked out, this will update your sources to the latest version on the main branch. If you used a branch tag, it will update to the latest version on that branch. If you used a version tag, it won't do anything (see above).
After updating the local source directory, it is usually enough to
issue Starting a Project [top]Discuss your ideas on the workers list before you start. Someone may be working on the same thing you have in mind. Or they may have good ideas about how to go about it. 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. Before creating a branch, you discuss the matter with the other workers. If you are new to CVS, you should read the CVS documentation several times, and ask for help. The documentation is sufficiently large and confusing that it is rather difficult to get right the first few times. Hacking the Code [top]So you've found a bug you want to fix? Want to implement a feature from the Jitterbug list? Got a new feature to implement? Hacking the code couldn't be easier. Just edit your copy of the sources. No need to copy files to `.orig' or anything; CVS has copies of the originals. When you have the code in a working state, generate a patch against the current sources in the CVS repository.
cvs update Mail the patch to the fvwm-workers list with a description of what you did. But read the FAQ file about ChangeLog entries before doing so. Conflicts [top]If someone else has been working on the same files as you have, you may find that you have made conflicting modifications. You'll discover this when you try to update your sources. $ cvs update RCS file: /home/cvs/fvwm/fvwm/fvwm/icons.c,v retrieving revision 1.5 retrieving revision 1.6 Merging differences between 1.5 and 1.6 into icons.c rcsmerge: warning: conflicts during merge cvs server: conflicts found in fvwm/icons.c C fvwm/icons.c Don't Panic! Your working file, as it existed before the update, is saved under the filename `.#icons.c.1.5'; hence you can always recover it, should things go horribly wrong. The file named `icons.c' now contains both the old (i.e. your) version and new version of lines that conflicted. You simply edit the file and resolve each conflict by deleting the unwanted version of the lines involved.
<<<<<<< icons.c
XpmImage my_image = {0}; /* testing */
=======
>>>>>>> 1.6
Don't forget to delete the lines with all the "<", "=", and ">" symbols. Getting Commit Access [top]Using the procedures described above, and being on the workers list are a prerequisite 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 FVWM 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
Once you have update access, re-do the Committing Changes [top]
Now that you have write permissions and have logged in with your
CVS username, you can commit changes. This is done (surprise!) with the
CVS
Note it's usually a good idea to run a To commit all the modified files in your workspace, use: cvs commit
CVS will pop up your favorite editor to allow you to enter comments
about what changes you've made. These comments will appear in the email
sent to Also, you will see a complete list of files that CVS thinks you have changed. Please sanity-check this list! Make sure there's nothing you don't expect there, and everything you do expect. If you don't like the all-or-nothing approach, you can specify only certain files to be committed: cvs commit fvwm/fvwm.1 modules/FvwmAuto/FvwmAuto.1 Again, please sanity-check the list to be sure you have everything. Adding Directories and Files [top]
First create the new directories and files locally. Then, assuming
the new directory is named `
cvs add -m "New directory for ..." newdir
When adding new directories and files, please be sure to take a look
at the relevant Deleting Directories and Files [top]
You don't directly delete directories, you delete all the files in a
directory and the directory goes away during an `
cvs remove filename...
Again, when removing directories or files please be sure to update
the appropriate Renaming/Moving Files [top]There is no perfect way to rename or move files in CVS. There are a few different methods, each with good and bad points. For FVWM, we've chosen the most straightforward method: remove the old file and add a new file. In order to preserve some kind of link, please include a pointer to the old file in the comments of the new file (and vice versa).
Again, when renaming or moving files please be sure to update
the appropriate Creating New Branches [top]
Please contact the
When creating a branch it's best to base it off of a
previously-existing, labeled checkpoint. Here we'll use the example of
creating a new branch for 2.2.x development after the 2.2 release was
made. Because of our rules, we know that the new branch name should be
Once you know where you want to branch from and what you want to call
the new branch, use the cvs rtag -b -r version-2_2_0 branch-2_2 .
The first thing you'll probably want to do on the new branch is edit
the Creating New Source Trees [top]
Please contact the The source code for Fvwm is in the "fvwm" source tree. At the time this sentence was written, (September, 1999), there were 1 more source tree, "fvwm-web". If you have update access to "fvwm", you can also update the other source trees and create new source trees. Working on the fvwm-web Source Tree [top]Its important to remember anything checked into the fvwm-web branch will automatically appear on the fvwm web pages. Be careful to check your work before you commit a change.
You can check to see what your changes will look like before a commit,
by using a "file:" URL to look at your changes with your browser. If you
have the fvwm-web source in
Some of the sub-directories in the fvwm-web branch can take a long
time to checkout or commit due to their large size. This is especially
true over dial-up connections. All of the CVS commands can be convinced
to only work on one directory or sub-directory by using the Some parts of the fvwm-web tree are generated from fvwm tree source files. The generated files are in the directories: fvwm-web/authors/ fvwm-web/news/ fvwm-web/documentation/faq/ fvwm-web/documentation/manpages/ fvwm-web/documentation/perllib/ Each directory has a script generating one or more php files. You would normally run these scripts (at least in the first 3 directories) whenever you made a change to fvwm/NEWS, fvwm/docs/FAQ or fvwm/AUTHORS that you want to appear on the fvwm web site. Instructions are in the scripts. |
:Window theme:
:Pager theme:
:Fast theme:
Last modified on April 26, 2010