summaryrefslogtreecommitdiff
path: root/app/fvwm/docs/cvs.html
diff options
context:
space:
mode:
Diffstat (limited to 'app/fvwm/docs/cvs.html')
-rw-r--r--app/fvwm/docs/cvs.html249
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 &gt; 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"> &lt;&lt;&lt;&lt;&lt;&lt;&lt; icons.c
+ XpmImage my_image = {0}; /* testing */
+ =======
+ &gt;&gt;&gt;&gt;&gt;&gt;&gt; 1.6
+</font></pre>
+
+Don't forget to delete the lines with all the "&lt;", "=", and "&gt;"
+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>