You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by fi...@apache.org on 2001/11/22 02:19:43 UTC

cvs commit: httpd-site/docs/dev devnotes.html

fielding    01/11/21 17:19:43

  Added:       docs/dev devnotes.html
  Log:
  Developer notes, as generated.
  
  Revision  Changes    Path
  1.1                  httpd-site/docs/dev/devnotes.html
  
  Index: devnotes.html
  ===================================================================
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html>
   <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
         <meta name="author" content="Documentation Group" /><meta name="email" content="docs@httpd.apache.org" />
      <title>Apache Development Notes - The Apache HTTP Server Project</title>
   </head>
   <body bgcolor="#ffffff" text="#000000" link="#525D76">        
    <table border="0" width="100%" cellspacing="0">
     <tr><!-- SITE BANNER AND PROJECT IMAGE -->
      <td align="left" valign="top">
  <a href="/"><img src="../images/httpd_logo_wide.gif" alt="The Apache HTTP Server Project" align="left" border="0"/></a>
  </td>
     </tr>
    </table>
    <table border="0" width="100%" cellspacing="4">
     <tr><td colspan="2"><hr noshade="noshade" size="1"/></td></tr>
     <tr>
      <!-- LEFT SIDE NAVIGATION -->
      <td valign="top" nowrap="nowrap">
             <p><b>Essentials</b></p>
      <menu compact="compact">
            <li><a href="/ABOUT_APACHE.html">About</a></li>
            <li><a href="http://www.apache.org/LICENSE.txt">License</a></li>
            <li><a href="/docs/misc/FAQ.html">FAQ</a></li>
            <li><a href="/security_report.html">Security<br />Reports</a></li>
          </menu>
        <p><b><a 
  href="/dev/">Developer Info</a></b></p>
        <p><b><a 
  href="http://www.apache.org/dist/httpd/">Download!</a></b></p>
        <p><b><a 
  href="/docs-project/">Documentation</a></b></p>
      <menu compact="compact">
            <li><a href="/docs/">Apache 1.3</a></li>
            <li><a href="/docs-2.0/">Apache 2.0</a></li>
          </menu>
        <p><b>Subprojects</b></p>
      <menu compact="compact">
            <li><a href="/docs-project/">Docs</a></li>
            <li><a href="/test/">Test</a></li>
          </menu>
        <p><b><a 
  href="/info/">Miscellaneous</a></b></p>
      <menu compact="compact">
            <li><a href="/contributors/">Contributors</a></li>
            <li><a href="/awards.html">Awards</a></li>
            <li><a href="/in_the_news.html">In the News</a></li>
            <li><a href="http://nav.webring.yahoo.com/hub?ring=apachesupport&amp;id=12&amp;hub">Support<br />Webring</a></li>
          </menu>
      </td>
      <!-- RIGHT SIDE INFORMATION -->
      <td align="left" valign="top">
                  <table border="0" cellspacing="0" cellpadding="2" width="100%">
   <tr><td bgcolor="#525D76">
    <font color="#ffffff" face="arial,helvetica,sanserif">
     <strong>Apache Development Notes</strong>
    </font>
   </td></tr>
   <tr><td>
    <blockquote>
  <p>This page is intended to provide some basic background about
  development nits and the maintenance of the developer site.</p>
    </blockquote>
   </td></tr>
  </table>
             <table border="0" cellspacing="0" cellpadding="2" width="100%">
   <tr><td bgcolor="#525D76">
    <font color="#ffffff" face="arial,helvetica,sanserif">
     <strong>Maintaining the Sources</strong>
    </font>
   </td></tr>
   <tr><td>
    <blockquote>
  <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="http://www.cvshome.org/">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 -u 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.  It is also worth
      making sure your code follows the Apache style, as described by the
      GNU indent flags in the .indent.pro file in every source directory.
      </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>
    </blockquote>
   </td></tr>
  </table>
             <table border="0" cellspacing="0" cellpadding="2" width="100%">
   <tr><td bgcolor="#525D76">
    <font color="#ffffff" face="arial,helvetica,sanserif">
     <strong>CVS Modules</strong>
    </font>
   </td></tr>
   <tr><td>
    <blockquote>
  <p>There are several different modules in the Apache CVS repository:</p>
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
   <tr><td bgcolor="#828DA6">
    <font color="#ffffff" face="arial,helvetica,sanserif">
     <strong>apache-1.3</strong>
    </font>
   </td></tr>
   <tr><td>
    <blockquote>
  <p>To create a directory tree containing the 1.3 sources,
    and call it <samp>apache-1.3</samp>, change your current directory
    to the <em>parent</em> of the tree and then check the 1.3 sources
    out as follows:</p>
  <div align="left">
    <table cellspacing="4" cellpadding="0" border="0">
      <tr>
        <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
      </tr>
      <tr>
        <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#ffffff"><pre>
  % cd /usr/local/apache
  % cvs checkout apache-1.3</pre></td>
        <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
      </tr>
      <tr>
        <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
      </tr>
    </table>
  </div>
    </blockquote>
   </td></tr>
  </table>
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
   <tr><td bgcolor="#828DA6">
    <font color="#ffffff" face="arial,helvetica,sanserif">
     <strong>httpd-2.0</strong>
    </font>
   </td></tr>
   <tr><td>
    <blockquote>
  <p>To create a directory tree containing the 2.0 sources,
    and call it <samp>httpd-2.0</samp>, change your current directory
    to the <em>parent</em> of the tree and then check the 2.0 sources
    out as follows:</p>
  <div align="left">
    <table cellspacing="4" cellpadding="0" border="0">
      <tr>
        <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
      </tr>
      <tr>
        <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#ffffff"><pre>
  % cd /usr/local/apache
  % cvs checkout httpd-2.0
  % cd httpd-2.0/srclib
  % cvs checkout apr apr-util</pre></td>
        <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
      </tr>
      <tr>
        <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
      </tr>
    </table>
  </div>
  <p>The httpd-2.0 repository takes advantage of APR and APR-util from the
    Apache portable run-time, so those must be checked out separately.
    Because not all httpd contributors have access to APR, you may need to
    use anonymous CVS to get those repositories.  We are looking in to 
    solving this problem.</p>
    </blockquote>
   </td></tr>
  </table>
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
   <tr><td bgcolor="#828DA6">
    <font color="#ffffff" face="arial,helvetica,sanserif">
     <strong>site</strong>
    </font>
   </td></tr>
   <tr><td>
    <blockquote>
  <p>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.</p>
  <make_note>
       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 -dP</samp> to
       bring the host directory into sync with the CVS sources.
    </make_note>
  <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>
    </blockquote>
   </td></tr>
  </table>
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
   <tr><td bgcolor="#828DA6">
    <font color="#ffffff" face="arial,helvetica,sanserif">
     <strong>httpd-site</strong>
    </font>
   </td></tr>
   <tr><td>
    <blockquote>
  <p>Like the <samp>site</samp> module, this one is used ot
      maintain the files that comprise a website - in this case,
      <samp>http://httpd.apache.org/</samp>.  Also like the previous module,
      the directory on the server is a checked-out working copy of this
      module.</p>
    </blockquote>
   </td></tr>
  </table>
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
   <tr><td bgcolor="#828DA6">
    <font color="#ffffff" face="arial,helvetica,sanserif">
     <strong>httpd-dist</strong>
    </font>
   </td></tr>
   <tr><td>
    <blockquote>
  <p>Like the <samp>site</samp> module, this one is used ot
      maintain the files that comprise a website - in this case,
      <samp>http://www.apache.org/dist/httpd/</samp>.  Also like the
      previous module, the directory on the server is a checked-out
      working copy of this module.  However, since this is a distribution
      directory, we only have the surrounding documentation and control
      files checked into this module -- the actual tarballs are simply
      copied to www.apache.org.</p>
    </blockquote>
   </td></tr>
  </table>
    </blockquote>
   </td></tr>
  </table>
             <table border="0" cellspacing="0" cellpadding="2" width="100%">
   <tr><td bgcolor="#525D76">
    <font color="#ffffff" face="arial,helvetica,sanserif">
     <strong>Setting Up Remote CVS</strong>
    </font>
   </td></tr>
   <tr><td>
    <blockquote>
  <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://httpd.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.ssh.fi/sshprotocols2/index.html"><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 "voted in" for direct access to the 
      repository, this should have been set up for you.
      (You know if you have it.)
     </li>
     <li>Include the following in your login files on your
       <strong>local</strong> (UNIX) machine:
       <pre>
         setenv CVSROOT <em>repository-system</em>:/home/cvs
         setenv CVS_RSH /usr/local/bin/ssh
         setenv CVS_SERVER /usr/local/bin/cvs
      </pre>
      Adjust the last two paths to correctly reflect the locations of
      <samp>cvs</samp> and <samp>ssh</samp> on your local system.
     </li>
     <li><p>Set up the following environment in your account on the Apache
      repository system:</p>
      <pre>
        setenv CVSROOT /home/cvs
        setenv CVS_RSH /usr/local/bin/ssh
        setenv CVS_SERVER /usr/local/bin/cvs
      </pre>
      <p>These <em>are</em> the correct locations for the repository system,
      so you don't need to edit them.</p>
     </li>
     <li>On your local system generate your SSH public key file 
      <samp>~/.ssh/identity.pub</samp> via <samp>ssh-keygen</samp> and then put
      it in <samp>~/.ssh/authorized_keys</samp> on the repository system. If you
      use the <samp>ssh-agent</samp> this will allow you to access the repository
      without having to enter a password for each CVS operation. Use
      <samp>ssh-add</samp> and enter your passphrase once when you start a
      session, and <samp>ssh-add -D</samp> at the end of the session to
      delete your unencrypted key(s) from the agent.
     </li>
    </ol>
    </blockquote>
   </td></tr>
  </table>
             <table border="0" cellspacing="0" cellpadding="2" width="100%">
   <tr><td bgcolor="#525D76">
    <font color="#ffffff" face="arial,helvetica,sanserif">
     <strong>Working with the Apache Source CVS Repository remotely</strong>
    </font>
   </td></tr>
   <tr><td>
    <blockquote>
  <p>Ralf Engelschall has written an excellent explanation on how to use
  remote CVS with the "cvsup" functionality we have available now.</p>
  <p><a href="http://www.engelschall.com/pw/apache/cvsguide/">
  http://www.engelschall.com/pw/apache/cvsguide/</a></p>
    </blockquote>
   </td></tr>
  </table>
           </td>
     </tr>
     <!-- FOOTER -->
     <tr><td colspan="2"><hr noshade="noshade" size="1"/></td></tr>
     <tr><td colspan="2" align="center">
          <font size="-1">
           <em>Copyright &#169; 1999-2001, The Apache Software Foundation</em>
          </font>
         </td>
     </tr>
    </table>
   </body>
  </html>