coar        97/07/13 13:43:33

  Added:       .         devnotes.html
  Log:
        Rough draft/outline/collection of notes about the nitty-gritty
        details of working on Apache.
  
  Revision  Changes    Path
  1.1                  apache-devsite/devnotes.html
  
  Index: devnotes.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
  <HTML>
   <HEAD>
    <TITLE>Apache Development Notes
    </TITLE>
   </HEAD>
  <!-- Background white, links blue (unvisited), navy (visited), red (active) 
-->
   <BODY
    BGCOLOR="#FFFFFF"
    TEXT="#000000"
    LINK="#0000FF"
    VLINK="#000080"
    ALINK="#FF0000"
   >
  <!--#include virtual="header.html" -->
    <H1 ALIGN="CENTER">
     Apache Development Notes
    </H1>
    <P>
    This page is intended to provide some basic background about
    development nits and the maintenance of the developer site.
    </P>
    <HR>
    <H2>
     Maintaining the Sources
    </H2>
    <P>
    Almost all files relating to Apache, either the actual sources or the
    files that aren't part of the distribution, are maintained in a
    <A
     HREF="ftp://ftp.eece.maine.edu/archive/pub/src/alpha/gnu/cvs-1.9.tar.gz";
    >CVS</A>
    repository.  Here is the way in which changes are applied:
    </P>
    <OL>
     <LI>Developer checks out a copy of the files on which it wants to
      work, into a private working directory:
      <P>
      <DL>
       <DD><SAMP>% cvs checkout apache</SAMP>
       </DD>
      </DL>
      </P>
      <P>
      This step only needs to be performed once.
      </P>
     </LI>
     <LI>Developer keeps its working directory synchronised with changes
      made to the repository:
      <P>
      <DL>
       <DD><SAMP>% cvs update apache</SAMP>
       </DD>
      </DL>
      </P>
      <P>
      This should probably be done daily or even more frequently during
      periods of high activity.
      </P>
     </LI>
     <LI>Developer makes changes to its working copies, makes sure they
      work, and generates a patch so others can apply the changes to test
      them:
      <P>
      <DL>
       <DD><SAMP>% cvs diff -c3 apache/src/mod_mime.c &gt; /tmp/foo</SAMP>
       </DD>
      </DL>
      </P>
      <P>
      (The <SAMP>/tmp/foo</SAMP> file is mailed to the developers list so
      they can consider the value/validity of the patch.)
      </P>
     </LI>
     <LI>Once other developers have agreed that the change is a Good
      Thing, the developer checks the changes into the repository:
      <P>
      <DL>
       <DD><SAMP>% cvs commit apache/src/mod_mime.c</SAMP>
       </DD>
      </DL>
      </P>
     </LI>
    </OL>
    <HR>
    <H2>
     CVS Modules
    </H2>
    <P>
    There are several different modules in the Apache CVS repository:
    </P>
    <DL COMPACT>
     <DT><SAMP>apache</SAMP>
     </DT>
     <DD>At the time this document is being written, this is the main
      development stream for Apache 1.3.  It also contains branches for
      the 1.1 and 1.2 versions, though.
      <P>
      To create a directory tree containing the 1.2.<EM>x</EM> sources,
      and call it <SAMP>apache-1.2</SAMP>, change your current directory
      to the <EM>parent</EM> of the tree and then check the 1.2 sources
      out as follows:
      </P>
      <P>
      <DL>
       <DD><SAMP>% cd /usr/local/apache
        <BR>
        % cvs checkout -rAPACHE_1_2_X -d apache-1.2 apache</SAMP>
       </DD>
      </DL>
      </P>
     </DD>
     <DT><SAMP>apache-site</SAMP>
     </DT>
     <DD>This module contains the files that live at
      <SAMP>http://www.apache.org/</SAMP>.  The directory on the host that
      maps to that URL is actually a set of checked-out working copies of
      the CVS files.
      <BLOCKQUOTE>
       <P ALIGN="CENTER">
       <STRONG>Note</STRONG>
       </P>
       It is important that the files on the Web host not be modified
       directly.  If you want or need to change one, check it out into a
       private working copy, modify <STRONG>that</STRONG>, commit the
       change into CVS, and then perform a <SAMP>cvs update</SAMP> to
       bring the host directory into sync with the CVS sources.
      </BLOCKQUOTE>
      <P>
      The Web site directories are <EM>not</EM> maintained in synch with
      the CVS files automatically.  They are manually updated from CVS by
      various people as they consider appropriate.  This is usually not an
      issue, unless a group of files are being updated according to an
      ongoing group discussion.
      </P>
     </DD>
     <DT><SAMP>apache-devsite</SAMP>
     </DT>
     <DD>Like the <SAMP>apache-site</SAMP> module, this one is used ot
      maintain the files that comprise a Webs site - in this case,
      <SAMP>http://dev.apache.org/</SAMP>.  Also like the previous module,
      the directory on the server is a checked-out working copy of this
      module.
     </DD>
    </DL>
    <HR>
    <H2>
     Setting Up Remote CVS
    </H2>
    <P>
    Most of the Apache Group members with access to the CVS repository
    actually do their work on their local machines and keep synchronised
    with the repository through remote CVS.  See the
    <A
     HREF="http://www.apache.org/ABOUT_APACHE.html";
    >ABOUT APACHE</A>
    page for information about how the group works and people get access
    to the CVS repository.)  One way to set this up using the
    <A
     HREF="http://www.cs.hut.fi/ssh/";
    ><SAMP>ssh</SAMP></A> (secure shell) tool:
    </P>
    <OL>
     <LI><STRONG><EM>You need an account on the Apache repository
      system.</EM></STRONG>  If you've been &quot;voted in&quot; for
      direct access to the repository, this should have been set up for
      you.
      <P>
      </P>
     </LI>
     <LI>Include the following in your login files on your
      <STRONG>local</STRONG> (UNIX) machine:
      <P>
      <DL>
       <DD><SAMP>setenv CVSROOT <EM>repository-system</EM>:/export/home/cvs
        <BR>
        setenv CVS_RSH /usr/local/bin/cvs
        <BR>
        setenv CVS_SERVER /usr/local/bin/cvs</SAMP>
       </DD>
      </DL>
      </P>
      <P>
      Adjust the lasat two paths to correctly reflect the locations of
      <SAMP>cvs</SAMP> and <SAMP>ssh</SAMP> on your local system.
      </P>
     </LI>
     <LI>Set up the following environment in your account on the Apache
      repository system:
      <P>
      <DL>
       <DT><SAMP>setenv CVSROOT /export/home/cvs/
        <BR>
        setenv CVS_RSH /usr/local/bin/ssh
        <BR>
        setenv CVS_SERVER /usr/local/bin/cvs</SAMP>
       </DT>
      </DL>
      </P>
      <P>
      These <EM>are</EM> the correct locations for the repository system,
      so you don't need to edit them.
      </P>
     </LI>
     <LI>Generate and put your <SAMP>ssh</SAMP> public key file in
      <SAMP>~/.ssh/authorized_keys</SAMP> on the repository system.  This
      will allow you to access the repository without having to enter a
      passphrase for each CVS operation.
     </LI>
    </OL>
  <!--#include virtual="footer.html" -->
   </BODY>
  </HTML>
  
  
  

Reply via email to