diff options
Diffstat (limited to 'app/fvwm/docs/cvs.html')
-rw-r--r-- | app/fvwm/docs/cvs.html | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/app/fvwm/docs/cvs.html b/app/fvwm/docs/cvs.html new file mode 100644 index 000000000..e74eb4e05 --- /dev/null +++ b/app/fvwm/docs/cvs.html @@ -0,0 +1,249 @@ +<html> +<head> +<title>The Official FVWM Homepage - CVS Procedures</title> +</head> + <body BACKGROUND="black-stone1.jpg" + bgcolor="#000000" text="#ffffff" + link="#FFFF88" vlink="#EEDDDD" alink="#ff0000"> +<center> + +<h1><font color="pink">The Official FVWM Homepage - CVS Procedures</font></h1> +</center> + +Fvwm2 development uses a CVS server. + +<p><b>Note:</b> 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. + + +<H2> <font color="turquoise">Overview</font></h2> + +To know what is going in with the source tree you should be reading +mail on the Fvwm Workers List. See the <a +href="mailinglist.html">Mailing List Info</a> page for more +information. + +<p>To build fvwm2 from the CVS sources, you need to have several <a +href="http://www.gnu.org/">GNU</a> tools: +<ul> +<li>the <a href="http://www.gnu.org/software/cvs/cvs.html">CVS</a> client +version 1.9 or better, +<li><a href="http://www.gnu.org/software/gcc/gcc.html">GCC</a>, +<li>GNU <a href="http://www.gnu.org/software/make/make.html">make</a>, +<li><a +href="http://www.gnu.org/software/autoconf/autoconf.html">autoconf</a>, +version 2.13 or better, and +<li><a +href="http://www.gnu.org/software/automake/automake.html">automake</a>, +version 1.4 or better. +</ul> + + +<H2> <font color="turquoise">The Initial Download</font></h2> + +To make life easier on yourself, create the file `~/.cvsrc', and +insert the following lines. These set useful default options for the +three most used CVS commands. Do this now before going any further. + +<pre><font color="yellow"> diff -u -b -B + checkout -P + update -d -P +</font></pre> + +Also, if you are on a slow net link (like a dialup), you'll also want +a line saying `cvs -z3' in the file. This turns on a useful +compression level for all cvs commands. Setting it higher will only +waste your CPU time. + +<p>Before you can download development source code for the first time, +you must login. + +<pre><font color="yellow"> cvs -d :pserver:anonymous@cvs.fvwm.org:/home/cvs/fvwm login +</font></pre> + +The password is `guest'. The command outputs nothing if it works, and +an error message if it failed. You only need to log in once; all +subsequent CVS commands read the password stored in the file +`~/.cvspass'. + +<p>Next, you checkout the latest source code. + +<pre><font color="yellow"> cvs -d :pserver:anonymous@cvs.fvwm.org:/home/cvs/fvwm checkout fvwm +</font></pre> + +This creates a "fvwm" directory in your current directory. Get in +there and get to work. + +<pre><font color="yellow"> cd fvwm + autoreconf +</font></pre> + +You <em>did</em> remember to install autoconf and automake, right? + +<p>Once you are inside the working directory, you no longer need the +long "-d :pserver:..." argument when issuing cvs commands. + +<p>CVS commands work from <em>anywhere</em> inside the source tree, +and recurse downwards. So if you happen to issue an update from +inside the `docs' subdirectory, it will work fine, but only update the +docs. In all of the following command examples, we assume that you +have <font color="yellow">cd</font>'d to the top of the fvwm source +tree. + + +<H2> <font color="turquoise">Code Updates</font></h2> + +From time to time, the dedicated FVWM Workers will make changes to the +cvs repository. Announcements of this are automatically sent to the +fvwm-workers list. You will want to be subscribed to this list! + +<p>You can update your copy of the sources to match the master +repository with the update command. + +<pre><font color="yellow"> cvs update +</font></pre> + + +<H2> <font color="turquoise">Hacking the Code</font></h2> + +So you've found a bug you want to fix? Want to implement a feature +from the TODO 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 keeps track of the original files +for you! + +<p>When you have the code in a working state, generate a patch against +the <em>current</em> sources in the CVS repository. + +<pre><font color="yellow"> cvs update + cvs diff -u > patchfile +</font></pre> + +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. + + +<H2> <font color="turquoise">Conflicts</font></h2> + +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. + +<pre><font color="yellow"> 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 +</font></pre> + +<font color="green">Don't Panic!</font> 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 <b>both</b> 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. + +<pre><font color="yellow"> <<<<<<< icons.c + XpmImage my_image = {0}; /* testing */ + ======= + >>>>>>> 1.6 +</font></pre> + +Don't forget to delete the lines with all the "<", "=", and ">" +symbols. + + +<H2> <font color="turquoise">Getting Other Versions</font></h2> + +Sometimes you may want to get a specific version of the sources. For +example, let's say you want the sources as they existed for 2.1.5. + +<p>Since you'll want to check out a fresh copy of the sources, you'll +need to <font color="yellow">cd</font> out of the fvwm source tree +before issuing the following command. + +<pre><font color="yellow"> cvs -d :pserver:anonymous@cvs.fvwm.org:/home/cvs/fvwm checkout -r version-2_1_5 fvwm +</font></pre> + +This creates a directory called `fvwm', with the sources as they +existed for the version 2.1.5. There may be other tags in the +repository, and you can use them as parameters for the `-r' option. +Do <font color="yellow">cvs status -v README</font> for a list. + + +<H2> <font color="turquoise">Getting Commit Access</font></h2> + +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. + +<p>Doing some testing, submitting some patches, and getting involved +in the discussions will help us know about you. + +<p>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. + +<p>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: + +<pre><font color="yellow"> perl -e 'print crypt("yourpass",join("",((a..z,A..Z,0..9)[rand(62),rand(62)]))), "\n"' +</font></pre> + +Change 'yourpass' to whatever you want your password to be. + +<p>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. + + +<H2> <font color="turquoise">Starting a Project</font></h2> + +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. + +<p>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. + + +<H2> <font color="turquoise">Adding Directories and Files</font></h2> + +First create the new directories and files locally. Then, assuming +the new directory is named "newdir" and the new file is "newmod.c": + +<pre><font color="yellow"> cvs add -m "New directory for ..." newdir + cd newdir + cvs add -m "File newmod.c is a module that ..." newmod.c +</font></pre> + + +<H2> <font color="turquoise">Deleting Directories and Files</font></h2> + +You don't directly delete directories, you delete all the files in a +directory and the directory goes away during an "update -dP". To +delete one or more files: + +<pre><font color="yellow"> cvs remove -f filename... + cvs commit -m 'deleted files because' filename... +</font></pre> + + +</body> +</html> |